]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
Squashed 'dts/upstream/' changes from d08867ef8f12..4d52919c55f4
authorTom Rini <trini@konsulko.com>
Wed, 8 Oct 2025 21:01:20 +0000 (15:01 -0600)
committerTom Rini <trini@konsulko.com>
Wed, 8 Oct 2025 21:01:20 +0000 (15:01 -0600)
4d52919c55f4 Merge tag 'v6.17-dts-raw'
38fc28fcd6fe Merge tag 'i2c-for-6.17-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
5df2896cdbcd Merge tag 'soc-fixes-6.17-3' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
501d5fac4d3e Merge tag 'v6.17-rockchip-dtsfixes2' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into arm/fixes
388d0d237317 Merge tag 'sunxi-fixes-for-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into arm/fixes
9c1a1aa76d6a dt-bindings: i2c: spacemit: extend and validate all properties
f88821c169f7 Merge tag 'hid-for-linus-2025092201' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid
7bb1f59ee85e Merge tag 'v6.17-rc6-dts-raw'
785f4a41a7a7 Merge tag 'phy-fix-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy
b72de0ae4a0d Merge tag 'dmaengine-fix-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine
f1de2f274990 Merge tag 'tty-6.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
8dd5e1884a5c Merge tag 'imx-fixes-6.17-2' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/fixes
c0c7a4135951 Merge tag 'socfpga_dts_fix_for_v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux into arm/fixes
5f5117ff540a Merge tag 'mvebu-fixes-6.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu into arm/fixes
affba3242b22 Merge commit '89c5214639294' into for-6.17/upstream-fixes
5c5133a89684 arm64: dts: marvell: cn9132-clearfog: fix multi-lane pci x2 and x4 ports
a30edc781685 arm64: dts: marvell: cn9132-clearfog: disable eMMC high-speed modes
4818551bb6d9 arm64: dts: marvell: cn913x-solidrun: fix sata ports status
e0499b5c331f ARM: dts: kirkwood: Fix sound DAI cells for OpenRD clients
b43e7c1e6d2d arm64: dts: imx8mp: Correct thermal sensor index
eaf6bab64a58 riscv: dts: allwinner: rename devterm i2c-gpio node to comply with binding
faf49552868d Merge tag 'v6.17-rc5-dts-raw'
b16ee588d71b arm64: dts: rockchip: Fix the headphone detection on the orangepi 5
e183eb884e5c arm64: dts: rockchip: Add vcc supply for SPI Flash on NanoPC-T6
d5396f16c37f ARM: dts: socfpga: sodia: Fix mdio bus probe and PHY address
ebd92f3a59b2 Merge tag 'spi-fix-v6.17-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
a526c9ef1b67 Merge tag 'soc-fixes-6.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
5d8ba326d104 Merge tag 'at91-fixes-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into arm/fixes
509dee1b7e66 ARM: dts: microchip: sama7d65: Force SDMMC Legacy mode
9e763cb3d1b4 Merge tag 'v6.17-rockchip-dtsfixes1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into arm/fixes
a41fd927377f arm64: dts: rockchip: fix second M.2 slot on ROCK 5T
18d0194799e5 dt-bindings: lpspi: Document support for S32G
c9fac75c65f2 arm64: dts: rockchip: fix USB on RADXA ROCK 5T
63ef95420b13 arm64: dts: axiado: Add missing UART aliases
b2a21e821e2c Merge tag 'imx-fixes-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/fixes
58056a8dbfc9 Merge tag 'v6.17-rc4-dts-raw'
3e7b84751e93 Merge tag 'drm-fixes-2025-08-29' of https://gitlab.freedesktop.org/drm/kernel
ea89dcf2416c Merge tag 'drm-msm-fixes-2025-08-26' of https://gitlab.freedesktop.org/drm/msm into drm-fixes
6309b9b1efc4 arm64: dts: rockchip: Add vcc-supply to SPI flash on Pinephone Pro
e22da6a63ced Merge tag 'devicetree-fixes-for-6.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
f25e8f3f3e67 dt-bindings: display/msm: qcom,mdp5: drop lut clock
0b54cf7dc8d3 Merge tag 'v6.17-rc3-dts-raw'
0264ca32989f Merge tag 'mips-fixes_6.17_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux
302d05793211 arm64: dts: rockchip: fix es8388 address on rk3588s-roc-pc
0704a97d3469 arm64: dts: rockchip: Fix Bluetooth interrupts flag on Neardi LBA3368
f1a75d0e9267 arm64: dts: rockchip: correct network description on Sige5
4212fbb0acb5 arm64: dts: rockchip: Minor whitespace cleanup
a52498f55fed ARM: dts: rockchip: Minor whitespace cleanup
2b74ca5ff951 arm64: dts: rockchip: Add supplies for eMMC on rk3588-orangepi-5
5135047db7f2 arm64: dts: rockchip: Fix the headphone detection on the orangepi 5 plus
510af76983ed mips: lantiq: xway: sysctrl: rename the etop node
2ff76939eff1 mips: dts: lantiq: danube: add missing burst length property
5c17501f659d ARM64: dts: mcbin: fix SATA ports on Macchiatobin
6f440931507f ARM: dts: armada-370-db: Fix stereo audio input routing on Armada 370
140d6b3980c3 arm64: dts: imx95: Fix JPEG encoder node assigned clock
c384581e7d6f arm64: dts: imx95-19x19-evk: correct the phy setting for flexcan1/2
e2edf4aaafbf arm64: dts: imx8mp: Fix missing microSD slot vqmmc on Data Modul i.MX8M Plus eDM SBC
4ea5d96804b4 arm64: dts: imx8mp: Fix missing microSD slot vqmmc on DH electronics i.MX8M Plus DHCOM
2789604fc218 arm64: dts: imx8mp-tqma8mpql: remove virtual 3.3V regulator
a573a81d351e arm64: dts: imx8mp-tqma8mpql: fix LDO5 power off
e96897446ad9 Merge tag 'regulator-fix-v6.17-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
694d45a2f761 dt-bindings: vendor-prefixes: add eswin
f16c7cbc671f ARM: dts: allwinner: Minor whitespace cleanup
9e29f1c5986c Merge tag 'v6.17-rc2-dts-raw'
43c415b40654 Merge tag 'net-6.17-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
e24d016dedd9 dt-bindings: serial: 8250: allow "main" and "uart" as clock names
93772d487e42 dt-bindings: serial: 8250: move a constraint
fa1b88e6663a dt-bindings: serial: brcm,bcm7271-uart: Constrain clocks
4982fdb2c306 dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Update pcie phy bindings
23a1689d9a68 dt-bindings: phy: marvell,comphy-cp110: Fix clock and child node constraints
d57c7d5cb3fe riscv: dts: thead: Add APB clocks for TH1520 GMACs
32097674787b dt-bindings: net: thead,th1520-gmac: Describe APB interface clock
25370078d056 regulator: dt-bindings: infineon,ir38060: Add Guenter as maintainer from IBM
5b650c7a3387 Merge tag 'v6.17-rc1-dts-raw'
f579ec5f89fe arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3399-pinebook-pro
401adf630a1b arm64: dts: rockchip: mark eeprom as read-only for Radxa E52C
f6fe1e119a05 dt-bindings: dma: qcom: bam-dma: Add missing required properties
6eb6301028f5 Merge tag 'mailbox-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/jassibrar/mailbox
7beab77fbc66 Merge tag 'soc-fixes-6.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
9c15d4d232b9 Merge tag 'tegra-for-6.17-arm64-dt-v3' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/fixes
d818fcb1ce10 Merge tag 'net-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
c669bebbe274 Merge tag 'loongarch-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
d25371e88f49 Merge tag 'input-for-v6.17-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
b225444b125e dt-bindings: mailbox: Add ASPEED AST2700 series SoC
4022f68499d8 dt-bindings: mailbox: Drop consumers example DTS
08a32727c5e5 dt-bindings: mailbox: nvidia,tegra186-hsp: Use generic node name
3ed8929022ea dt-bindings: mailbox: Correct example indentation
08534e6d0a28 dt-bindings: mailbox: ti,secure-proxy: Add missing reg maxItems
c26f859e6afe dt-bindings: mailbox: amlogic,meson-gxbb-mhu: Add missing interrupts maxItems
a98189806d7f dt-bindings: mailbox: qcom-ipcc: document the Milos Inter-Processor Communication Controller
bcdf210f6039 dt-bindings: mailbox: Add support for bcm74110
7861e592add4 Merge branch 'next' into for-linus
e6595131966d Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
a317294a0141 dt-bindings: net: Replace bouncing Alexandru Tachici emails
9177d7f279b3 Input: add keycode for performance mode key
5bd774b49823 LoongArch: dts: Add eMMC/SDIO controller support to Loongson-2K2000
d2b50965e07c LoongArch: dts: Add SDIO controller support to Loongson-2K1000
20c7a872f5fd LoongArch: dts: Add SDIO controller support to Loongson-2K0500
65a3167b6e72 Merge tag 'i2c-for-6.17-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
8deaba69701b Merge tag 'ib-mfd-gpio-input-pwm-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd into next
5927e9980011 Merge tag 'rtc-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux
9b82ded0a5a8 Merge tag 'i3c/for-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux
74cfe0883b3c Merge tag 'i2c-host-6.17-pt2' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-mergewindow
a29a05ff2d8d Merge tag 'pinctrl-v6.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
f43f3f8a2149 Merge tag 'rproc-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux
06484243d8ee Merge tag 'pci-v6.17-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci
38d94dc8574d Merge tag 'linux-watchdog-6.17-rc1' of git://www.linux-watchdog.org/linux-watchdog
81e6b5eb1307 Merge tag 'dmaengine-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine
912ad91d462a Merge tag 'phy-for-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy
fc1b311a55ee Merge tag 'sound-6.17-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
f898700a53a9 Merge tag 'for-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply
19d393592c86 Merge branch 'pci/controller/sophgo'
522b974af253 Merge branch 'pci/controller/qcom'
b6336c96a490 Merge branch 'pci/controller/brcmstb'
eaddf7ef5e04 dt-bindings: PCI: qcom,pcie-sa8775p: Document 'link_down' reset
b61473b60b3f dt-bindings: PCI: Remove 83xx-512x-pci.txt
95e7dfd2b09c dt-bindings: PCI: Convert amazon,al-alpine-v[23]-pcie to DT schema
d855db32b1d6 dt-bindings: PCI: Convert marvell,armada-3700-pcie to DT schema
faa8038a538e dt-bindings: PCI: Convert apm,xgene-pcie to DT schema
b64147052a31 dt-bindings: PCI: Convert axis,artpec6-pcie to DT schema
89b27dfc989f dt-bindings: PCI: Convert st,spear1340-pcie to DT schema
761305253c7f Merge tag 'mtd/for-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux
7f4c60d44458 Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
d2166900176e Merge tag 'hwmon-for-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
f654a4cffc8e Merge tag 'media/v6.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
c68e5f5d8510 Merge tag 'leds-next-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds
5fa7da3742d2 Merge tag 'mfd-next-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
d48c5718d931 Merge tag 'gnss-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/johan/gnss
f19dc807ef82 Merge tag 'mips_6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux
88ef88367045 Merge tag 'nand/for-6.17' into mtd/next
77ce7c807f31 Merge tag 'spi-nor/for-6.17' into mtd/next
617063dc7992 Merge tag 'v6.17-p1' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
fb35ad6772e3 arm64: tegra: Remove numa-node-id properties
5d5d47c2898d Merge branch 'clk-fixes' into clk-next
1810b29ee894 Merge tag 'drm-next-2025-07-30' of https://gitlab.freedesktop.org/drm/kernel
672251f07f5f Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
1c4c35171c77 dt-bindings: i3c: Add Renesas I3C controller
acc6ad02daf0 Merge tag 'iommu-updates-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux
913a827d8026 Merge tag 'arm-soc/for-6.16/devicetree-fixes' of https://github.com/Broadcom/stblinux into for-next
ce735da13c91 Merge tag 'net-next-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
23ad1dd8a0f2 mfd: dt-bindings: Convert TPS65910 to DT schema
ebcd01abab45 Merge tag 'powerpc-6.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
fabc9eb3b96b dt-bindings: i2c: apple,i2c: Document Apple A7-A11, T2 compatibles
f08139dcfa69 Merge branches 'clk-rockchip', 'clk-thead', 'clk-microchip', 'clk-imx' and 'clk-qcom' into clk-next
fe77e800d26c Merge branches 'clk-renesas', 'clk-samsung', 'clk-spacemit', 'clk-allwinner' and 'clk-amlogic' into clk-next
f9a15ab8af76 Merge branches 'clk-bindings', 'clk-cleanup', 'clk-pwm', 'clk-hw-device', 'clk-xilinx' and 'clk-adi' into clk-next
84946f9433bb Merge tag 'irq-drivers-2025-07-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
11f0d2c420f3 Merge tag 'mmc-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
7dff1db3c967 Merge tag 'pmdomain-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm
7a67b758e4c6 Merge tag 'i2c-for-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
059f314983b4 Merge tag 'soc-newsoc-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
935ca70fe88a Merge tag 'soc-drivers-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
f210f652efaa Merge tag 'soc-dt-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
33c1d430f189 Merge tag 'devicetree-for-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
ca819c3ba978 Merge tag 'usb-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
86157d6ef538 Merge tag 'tty-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
638f234e9940 Merge tag 'char-misc-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
206f073acf2c Merge tag 'kvmarm-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
f1208bcf4c31 Merge tag 'pwm/for-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux
60c278df97a4 Merge tag 'spi-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
06e9819c6572 Merge tag 'regulator-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
6094cd275fea Merge tag 'gpio-updates-for-v6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux
fe3cebf87ff8 Merge tag 'sound-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
ccd9a5c60b97 Merge tag 'thermal-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
1ed339a1dd9b Merge tag 'pm-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
dbfbda98c7fa dt-bindings: Correct indentation and style in DTS example
1c1a12439958 MIPS: mobileye: dts: eyeq5,eyeq6h: rename the emmc controller
2d80b8cff673 dt-bindings: hwmon: Replace bouncing Alexandru Tachici emails
a9536c4a533e dt-bindings: Add INA228 to ina2xx devicetree bindings
ba8204028427 dt-bindings: input: touchscreen: st1232: add touch-overlay example
1633cb20b256 dt-bindings: touchscreen: add touch-overlay property
06b06ef8f47d Input: Add and document BTN_GRIP*
59ae00fd8e64 dt-bindings: input: syna,rmi4: Document F1A function
cc47e10c64b0 dt-bindings: ieee802154: Convert at86rf230.txt yaml format
b966613384a2 Merge tag 'sunxi-fixes-for-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into soc/dt
3849b529499b dt-bindings: net: dsa: microchip: Add KSZ8463 switch support
6979cbfbf41e dt-bindings: net: altr,socfpga-stmmac: Add compatible string for Agilex5
6b627bb260fd Merge tag 'qcom-drivers-for-6.17-2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/drivers
233d517c1884 dt-bindings: i2c: i2c-rk3x: Allow use of a power-domain
7049499f9e5a dt-bindings: i2c: exynos5: add samsung,exynos2200-hsi2c compatible
fc7ae9ba5fb2 dt-bindings: net: dsa: b53: Document brcm,gpio-ctrl property
3c4710ce3e81 dt-bindings: display: mediatek,dp: Allow DisplayPort AUX bus
646525defa14 dt-bindings: fsl: convert fsl,vf610-mscm-ir.txt to yaml format
137ad9b12805 dt-bindings: interrupt-controller: Add fsl,icoll.yaml
648b651777b1 dt-bindings: interrupt-controller: Add missing Xilinx INTC binding
b41b883df97c scsi: arm64: dts: mediatek: mt8195: Add UFSHCI node
8523d45b2495 scsi: dt-bindings: mediatek,ufs: add MT8195 compatible and update clock nodes
3f060c24c171 scsi: dt-bindings: mediatek,ufs: Add ufs-disable-mcq flag for UFS host
711056c3ae41 Merge tag 'for-net-next-2025-07-23' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next
dd1b4057dd88 Merge tag 'wireless-next-2025-07-24' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
155dc9a613a6 spi: sophgo: Add SPI NOR controller for SG2042
bb7c1194a99d Add RSPI support for RZ/V2H
50fd75a061ed dt-bindings: clock: convert lpc1850-cgu.txt to yaml format
24140d806f08 dt-bindings: clock: Convert qca,ath79-pll to DT schema
6e04ef32ef38 dt-bindings: clock: Convert nuvoton,npcm750-clk to DT schema
2db6f9a1da8f dt-bindings: clock: Convert moxa,moxart-clock to DT schema
001cac37e6e6 dt-bindings: clock: Convert microchip,pic32mzda-clk to DT schema
0cd4ab636909 dt-bindings: clock: Convert maxim,max9485 to DT schema
1c33570f5d22 support for amlogic the new SPI IP
a14fec537070 dt-bindings: clock: Convert qcom,krait-cc to DT schema
fa19909f10d5 dt-bindings: clock: qcom: Remove double colon from description
b039af46152a Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
a162ca77489e spi: dt-bindings: Document the RZ/V2H(P) RSPI
3d1aedbd9343 ASoC: dt-bindings: atmel,at91-ssc: add microchip,sam9x7-ssc
0bdf06c97664 spi: dt-bindings: Add binding document of Amlogic SPISG controller
4e1353cbd1b1 spi: dt-bindings: spi-sg2044-nor: Change SOPHGO SG2042
9707aa6ab611 Merge tag 'ib-mfd-gpio-power-soc-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd into gpio/for-next
8ee72356e984 dt-bindings: mfd: rk806: Allow to customize PMIC reset mode
28d9430f0964 dt-bindings: mfd: samsung,s2mps11: Add comment about interrupts properties
4563fdbc72d2 dt-bindings: mfd: fsl,imx8qxp-csr: Remove binding documentation
8f9f74c9d030 dt-bindings: mfd: Convert lpc1850-creg-clk, pc1850-dmamux and phy-lpc18xx-usb-otg to YAML format
75a11ccc6567 dt-bindings: mfd: convert mxs-lradc bindings to json-schema
8978eadc5578 Merge branches 'ib-mfd-gpio-input-pwm-6.17', 'ib-mfd-gpio-power-soc-6.17' and 'ib-mfd-misc-pinctrl-6.17' into ibs-for-mfd-merged
4e0a772975ea dt-bindings: gpio: rockchip: Allow use of a power-domain
f5cd2bf1e8fb dt-bindings: serial: snps-dw-apb-uart: Allow use of a power-domain
5d324bdff50d dt-bindings: serial: samsung: add samsung,exynos2200-uart compatible
0a9a83ae140d dt-bindings: mfd: Add Apple Mac System Management Controller
c7fa9a3843ab dt-bindings: power: reboot: Add Apple Mac SMC Reboot Controller
f4eddbec1946 dt-bindings: gpio: Add Apple Mac SMC GPIO block
09c00fdd331c Merge tag 'icc-6.17-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/djakov/icc into char-misc-next
ff8150e0b0f2 dt-bindings: i2c: nxp,pnx-i2c: allow clocks property
83fafeb193c6 dt-bindings: i2c: renesas,riic: Document RZ/T2H and RZ/N2H support
bd1edaf90e4d dt-bindings: i2c: renesas,riic: Move ref for i2c-controller.yaml to the end
4fb79a323ffa dt-bindings: rtc: amlogic,a4-rtc: Add compatible string for C3
6911acf4bf27 Merge tag 'riscv-dt-for-v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux into soc/dt
d6c5bd06ba88 Merge tag 'samsung-drivers-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/dt
5335c6dec4f1 Merge tag 'arm-sophgo-dt-for-v6.17' of https://github.com/sophgo/linux into soc/newsoc
36beceecc031 Merge tag 'riscv-sophgo-dt-for-v6.17' of https://github.com/sophgo/linux into soc/dt
a94a0024593d dt-bindings: rtc: pcf85063: add binding for RV8063
355ece2bba05 dt-bindings: net: bluetooth: nxp: add support for supply and reset
c94c0ee603b8 dt-bindings: net: bluetooth: nxp: Add support for 4M baudrate
da422e2fd590 ASoC: dt-bindings: qcom,sm8250: Add Fairphone 4 sound card
d443d69fe59a ASoC: dt-bindings: qcom,q6afe: Document q6usb subnode
e1dc5fef731a dt-bindings: dma: fsl-mxs-dma: allow interrupt-names for fsl,imx23-dma-apbx
831ba7ce88cf dt-bindings: dma: Convert marvell,orion-xor to DT schema
d809488a383f dt-bindings: dma: Convert brcm,iproc-sba to DT schema
102be241c4b4 dt-bindings: dma: qcom,gpi: document the Milos GPI DMA Engine
57e8d0f51565 dt-bindings: pinctrl: mediatek: Add support for mt8189
143c71ae555f dt-bindings: net: wireless: rt2800: add SOC Wifi
3b69bcbd0f88 MIPS: dts: ralink: mt7620a: add wifi
b2e237f8d950 dt-bindings: power: rpmpd: Add Glymur power domains
ecb488880deb dt-bindings: leds: ncp5623: Add 0x39 as a valid I2C address
a4e266b64b63 dt-bindings: display: sprd,sharkl3-dsi-host: Fix missing clocks constraints
a4902ad760ba dt-bindings: display: sprd,sharkl3-dpu: Fix missing clocks constraints
9871ccfc7c82 dt-bindings: display: imx: convert fsl,dcu.txt to yaml format
cb3eab704df6 dt-bindings: timer: via,vt8500-timer: Convert to YAML
02bc5b47191f dt-bindings: net: Convert Marvell Armada NETA and BM to DT schema
d2cb17b16fcd arm64: dts: sophgo: Add Duo Module 01 Evaluation Board
e9a69b5764c5 arm64: dts: sophgo: Add Duo Module 01
d46c534cd1a4 arm64: dts: sophgo: Add initial SG2000 SoC device tree
ecee37b0c732 riscv: dts: sophgo: fix mdio node name for CV180X
edeb5fb8a57f riscv: dts: sophgo: sophgo-srd3-10: reserve uart0 device
39cea134a435 riscv: dts: sophgo: add Sophgo SG2042_EVB_V2.0 board device tree
3af1443caa87 riscv: dts: sophgo: add Sophgo SG2042_EVB_V1.X board device tree
d95438e9cc23 dt-bindings: riscv: add Sophgo SG2042_EVB_V1.X/V2.0 bindings
97ff3450b45b riscv: dts: sophgo: add ethernet GMAC device for sg2042
6523097f467e riscv: dts: sophgo: Enable ethernet device for Huashan Pi
9d7ba84277ac riscv: dts: sophgo: Add mdio multiplexer device for cv18xx
5ad41c12bb04 riscv: dts: sophgo: Add ethernet device for cv18xx
9c62ec1b061f riscv: dts: sophgo: sg2044: add pmu configuration
e204a42647dc riscv: dts: sophgo: sg2044: add ziccrse extension
e64ca04dfa1a riscv: dts: sophgo: add zfh for sg2042
af70f42b8563 riscv: dts: sophgo: add ziccrse for sg2042
341c9d72df4f riscv: dts: sophgo: Add xtheadvector to the sg2042 devicetree
867de304b18d riscv: dts: sophgo: sg2044: add PCIe device support for SG2044
084dbab95812 riscv: dts: sophgo: sg2044: add MSI device support for SG2044
f3f305412cd9 riscv: dts: sophgo: add reset configuration for Sophgo CV1800 series SoC
d4c78bf20a68 riscv: dts: sophgo: add reset generator for Sophgo CV1800 series SoC
ca25c70f2e20 dt-bindings: soc: sophgo: Move SoCs/boards from riscv into soc, add SG2000
b116c2ce6c9e riscv: dts: sophgo: sg2044: Add missing riscv,cbop-block-size property
a7465701ba1b riscv: dts: sophgo: add pwm controller for SG2044
2d4c469f3e0c riscv: dts: sophgo: add SG2044 SPI NOR controller driver
6ed1d5df4964 riscv: dts: sophgo: sg2044: Add pinctrl device
0e92ebbc7780 riscv: dts: sophgo: sg2044: Add ethernet control device
f20278d13b83 riscv: dts: sophgo: sophgo-srd3-10: add HWMON MCU device
1ab417f2c6d5 riscv: dts: sophgo: sg2044: Add MMC controller device
5234c1aec3a0 riscv: dts: sophgo: sg2044: add DMA controller device
72423eef988d riscv: dts: sophgo: sg2044: Add I2C device
a82a340b1d6b riscv: dts: sophgo: sg2044: Add GPIO device
733f28e2c1dc riscv: dts: sophgo: sg2044: Add clock controller device
8fa3d034a693 riscv: dts: sophgo: sg2044: Add system controller device
0adb6607aa87 riscv: dts: sophgo: cv18xx: Add RTCSYS device node
551dd312e065 Merge tag 'apple-soc-dt-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/sven/linux into soc/dt
0c7b9e2e286d Merge tag 'at91-dt-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into soc/dt
bd42c1ae49a9 Merge tag 'thead-dt-for-v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/fustini/linux into soc/dt
773cec14b76e Merge tag 'v6.17-rockchip-dts64-2' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt
6daf8e447699 ARM: dts: st: spear: Use generic "ethernet" as node name
515a597ed8c8 Merge tag 'qcom-drivers-for-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/drivers
a7a24115ee9b Merge tag 'memory-controller-drv-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl into soc/drivers
3c035ea894fb dt-bindings: riscv: cpus: Add AMD MicroBlaze V 64bit compatible
564f3f7a8a9d Merge tag 'tegra-for-6.17-memory' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/drivers
90505e583326 Merge branch 'newsoc/axiado' into soc/newsoc
d2c0ccccbebb arm64: dts: axiado: Add initial support for AX3000 SoC and eval board
676074106b8d dt-bindings: i3c: cdns: add Axiado AX3000 I3C controller
6ac4d3ce41ab dt-bindings: serial: cdns: add Axiado AX3000 UART controller
007d178e28db dt-bindings: gpio: cdns: add Axiado AX3000 GPIO variant
c2b4468d9adc dt-bindings: gpio: cdns: convert to YAML
5a5a1053ea3b dt-bindings: arm: axiado: add AX3000 EVK compatible strings
10f07517af93 dt-bindings: vendor-prefixes: Add Axiado Corporation
5583ebf434fb Merge tag 'mvebu-dt-6.17-1' of https://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu into soc/dt
502759c762d2 Merge tag 'amlogic-arm64-dt-for-v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into soc/dt
c839bab293d1 Merge tag 'qcom-arm64-for-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/dt
3fccb04b054a Merge tag 'sunxi-dt-for-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into soc/dt
5507affeb4ce Merge tag 'ti-k3-dt-for-v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux into soc/dt
0390f8569044 Merge tag 'qcom-arm32-for-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/dt
82b6193bcad3 Merge tag 'spacemit-dt-for-6.17-1' of https://github.com/spacemit-com/linux into soc/dt
048993d6cfca Merge tag 'imx-bindings-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/dt
16c8d6c0186c Merge tag 'imx-dt-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/dt
200442757655 Merge tag 'imx-dt64-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/dt
5dbe4280d749 Merge tag 'socfpga_dts_updates_for_v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux into soc/dt
df2b1b31d3ab Merge tag 'tegra-for-6.17-arm64-dt' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt
92326a333c76 Merge tag 'tegra-for-6.17-arm-dt' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt
2e35e6c04a0e Merge tag 'tegra-for-6.17-dt-bindings' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt
0b4b59ce9c57 dt-bindings: qcom: geni-se: describe SA8255p
32ebdce75966 dt-bindings: serial: describe SA8255p
c5b78d58092e Merge branches 'pm-misc' and 'pm-tools'
cb4c9d49e8ae dt-bindings: phy: Convert brcm,sr-usb-combo-phy to DT schema
b71d5d92eed1 dt-bindings: phy: Convert ti,da830-usb-phy to DT schema
7113f012a446 dt-bindings: phy: marvell,mmp2-usb-phy: Drop status from the example
b8380346183a dt-bindings: phy: mixel, mipi-dsi-phy: Allow assigned-clock* properties
bc9f6c56ebf6 dt-bindings: phy: qcom,snps-eusb2: document the Milos Synopsys eUSB2 PHY
e8bf211ef002 dt-bindings: usb: qcom,snps-dwc3: Add Milos compatible
b1b5a102a159 dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Update pcie phy bindings for QCS615
4793916c4605 Merge branch 'icc-milos' into icc-next
ca79b1e41699 Merge tag 'ath-next-20250721' of git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath into wireless-next
4a7813db0edd dt-bindings: thermal: tegra: Document Tegra210B01
647d14815aa7 dt-bindings: thermal: mediatek: Add fallback compatible string for MT7981 and MT8516
8cbb6e090113 dt-bindings: interconnect: document the RPMh Network-On-Chip Interconnect in Qualcomm Milos SoC
c75e65fa1a7a dt-bindings: serial: 8250: spacemit: set clocks property as required
3d801ddabd51 dt-bindings: serial: renesas: Document RZ/V2N SCIF
8004034be86b arm64: dts: apple: Add Apple SoC GPU
372bb0a9270c dt-bindings: gpu: Add Apple SoC GPU
0fd845e2039f arm64: dts: apple: t8012-j132: Include touchbar framebuffer node
def9acb229f9 arm64: dts: apple: Add bit offset to PMIC NVMEM node names
dc4bff407bcd Merge branch 'newsoc/cix-p1' into soc/newsoc
c9853b29c44c arm64: dts: cix: Add sky1 base dts initial support
566f7b29d383 dt-bindings: clock: cix: Add CIX sky1 scmi clock id
2d860dd2a924 dt-bindings: mailbox: add cix,sky1-mbox
4c129f674cb4 dt-bindings: arm: add CIX P1 (SKY1) SoC
ec61ee7dfba5 dt-bindings: vendor-prefixes: Add CIX Technology Group Co., Ltd.
7ebb5edbb224 Merge branch 'newsoc/andes' into soc/newsoc
629e67c23eef Merge tag 'mtk-dts64-for-v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux into soc/dt
d845a9c7f436 Merge tag 'mtk-dts32-for-v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux into soc/dt
8b47485f6798 Merge tag 'omap-for-v6.17/dt-signed' of https://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap into soc/dt
866ff7150b56 Merge tag 'stm32-dt-for-v6.17-1' of https://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32 into soc/dt
ea5f4eb45cdb Merge tag 'v6.17-rockchip-dts64-1' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt
09a326b741de arm64: dts: nuvoton: npcm8xx: Drop the GIC "ppi-partitions" node
ca6ab3278201 Merge tag 'aspeed-6.17-devicetree-1' of https://git.kernel.org/pub/scm/linux/kernel/git/bmc/linux into soc/dt
12f66471cea2 Merge tag 'renesas-dts-for-v6.17-tag2' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
ce29d48849d5 Merge tag 'renesas-dt-bindings-for-v6.17-tag2' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
d5a3aec241ba Merge tag 'samsung-dt64-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/dt
61ffff1eadc1 Merge tag 'samsung-dt-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/dt
c241df52dbd4 Merge tag 'dt-vt8500-6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt into soc/dt
5a97ca254d34 Merge tag 'arm-soc/for-6.17/drivers' of https://github.com/Broadcom/stblinux into soc/drivers
615e5dd1026f Merge tag 'v6.16-rc7' into tty-next
bfb15af09263 riscv: dts: andes: add Voyager board device tree
e75c75ca51e1 riscv: dts: andes: add QiLai SoC device tree
40e05487b65c dt-bindings: timer: add Andes machine timer
96e291cff48a dt-bindings: interrupt-controller: add Andes machine-level software interrupt controller
5a070b8aab00 dt-bindings: interrupt-controller: add Andes QiLai PLIC
23b07e5175ad dt-bindings: riscv: add Andes QiLai SoC and the Voyager board bindings
6f6f2755eb71 Merge tag 'reset-for-v6.17' of https://git.pengutronix.de/git/pza/linux into soc/drivers
d0eccdbd78de spidev: introduce trivial abb sensor device
e899273b9ee5 dt-bindings: trivial-devices: Document ABB sensors
39715dac45f4 PM: docs: Use my kernel.org address in ABI docs and DT bindings
9f70470351fe Merge tag 'v6.16-rc7' into usb-next
4d4776db387d dt-bindings: clock: Add support for i.MX94 LVDS/DISPLAY CSR
9a7abe6a0109 dt-bindings: hwmon: adt7475: Allow and recommend #pwm-cells = <3>
8e0e30e58cfa dt-bindings: trivial: Add tps53685 support
0ba69b597265 dt-bindings: hwmon: pmbus/adp1050: Add adp1051, adp1055 and ltp8800
5538f47fb83b dt-bindings: hwmon: pmbus: ti,ucd90320: Add missing compatibles
70a810c569f2 dt-bindings: hwmon: maxim,max20730: Add maxim,max20710 compatible
684ed1fcb89b dt-bindings: hwmon: lltc,ltc2978: Add lltc,ltc713 compatible
ceb2f4ae7231 dt-bindings: hwmon: ti,lm87: Add adi,adm1024 compatible
6fda8eb1d30f dt-bindings: hwmon: national,lm90: Add missing Dallas max6654 and onsemi nct72, nct214, and nct218
fec5aa716025 dt-bindings: hwmon: amc6821: Add cooling levels
2a3bb1bc029e dt-bindings: hwmon: (pmbus/isl68137) Add RAA229621 support
df9399258d45 dt-bindings: clock: qcom,sm4450-dispcc: Reference qcom,gcc.yaml
a21d5e131452 dt-bindings: clock: qcom,sm4450-camcc: Reference qcom,gcc.yaml
c26aa209d9af dt-bindings: clock: qcom,mmcc: Reference qcom,gcc.yaml
101385caa206 dt-bindings: clock: qcom,sm8150-camcc: Reference qcom,gcc.yaml
bf0ad3272a8d dt-bindings: clock: qcom: Remove double colon from description
5e0de7d92ba1 Merge tag 'iio-for-6.17a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-next
ed2c0a3539b9 dt-bindings: interconnect: qcom,msm8998-bwmon: Allow 'nonposted-mmio'
16222f5add7f dt-bindings: interconnect: Add EPSS L3 compatible for QCS8300 SoC
26e8a1a26a63 dt-bindings: interconnect: qcom: Remove double colon from description
f3990f2988aa dt-bindings: gpio: Convert qca,ar7100-gpio to DT schema
f4169e8902ba dt-bindings: gpio: Convert maxim,max3191x to DT schema
cc96527c4361 dt-bindings: gpio: fsl,qoriq-gpio: Add missing mpc8xxx compatibles
234beb04554a dt-bindings: gpio: Create a trivial GPIO schema
d5b6bbdd5ea6 dt-bindings: gpio: Convert st,spear-spics-gpio to DT schema
57d91fffc5cb dt-bindings: gpio: Convert abilis,tb10x-gpio to DT schema
baf1be13c404 dt-bindings: gpio: Convert apm,xgene-gpio-sb to DT schema
bb01ffde4219 dt-bindings: gpio: Convert ti,twl4030-gpio to DT schema
7c869e945c1d dt-bindings: gpio: Convert lantiq,gpio-mm-lantiq to DT schema
2d351d673ed0 dt-bindings: gpio: Convert ti,keystone-dsp-gpio to DT schema
d1caee930967 dt-bindings: gpio: Convert altr,pio-1.0 to DT schema
f6b6f6538c88 dt-bindings: gpio: Convert cirrus,clps711x-mctrl-gpio to DT schema
f5b06d065b65 dt-bindings: gpio: Convert cavium,octeon-3860-gpio to DT schema
6ebb1a828301 dt-bindings: gpio: Convert exar,xra1403 to DT schema
2785b36e35cc dt-bindings: gpio: Convert microchip,pic32mzda-gpio to DT schema
b56e20fc40d7 dt-bindings: gpio: Convert lacie,netxbig-gpio-ext to DT schema
3ccc1ca7e0ba Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
8f379560c370 dt-bindings: trivial-devices: Add undocumented hwmon devices
39de5984956e dt-bindings: arm-smmu: Remove sdm845-cheza specific entry
a1ac450f3634 arm64: dts: rockchip: Add maskrom button to NanoPi R5S + R5C
af0325e129ae dt-bindings: thermal: qcom-tsens: document the Milos Temperature Sensor
49cc1296037b dt-bindings: clock: qcom: document the Milos Video Clock Controller
16340601924b dt-bindings: clock: qcom: document the Milos GPU Clock Controller
573f59c35a7e dt-bindings: clock: qcom: document the Milos Display Clock Controller
da3d8ec933a1 dt-bindings: clock: qcom: document the Milos Camera Clock Controller
108d90ed45b5 dt-bindings: clock: qcom: document the Milos Global Clock Controller
b1a99cb677d8 dt-bindings: clock: qcom,x1e80100-gcc: Add missing video resets
9e4ffed3ade8 dt-bindings: clock: qcom,sm8450-videocc: Document X1E80100 compatible
741514539768 dt-bindings: clock: qcom: document the Milos TCSR Clock Controller
97ec633f5480 dt-bindings: clock: qcom: Document the Milos RPMH Clock Controller
6d406a229797 dt-bindings: clock: Add Qualcomm QCS615 Video clock controller
8b50d3c9c410 dt-bindings: clock: Add Qualcomm QCS615 Graphics clock controller
d0090474f382 dt-bindings: clock: Add Qualcomm QCS615 Display clock controller
942ecba2c8f9 dt-bindings: clock: Add Qualcomm QCS615 Camera clock controller
82a322763a4f Merge branch '20250516-ipq5018-cmn-pll-v4-2-389a6b30e504@outlook.com' into clk-for-6.17
9eefab0dfdd5 dt-bindings: clock: qcom: Add CMN PLL support for IPQ5018 SoC
a1b9cfc98bd3 dt-bindings: soc: qcom: qcom,pmic-glink: document Milos compatible
d5da90eccdff dt-bindings: soc: qcom,aoss-qmp: document the Milos Always-On Subsystem side channel
34786aba9ba7 dt-bindings: firmware: qcom,scm: document Milos SCM Firmware Interface
6e113c99e893 dt-bindings: arm: qcom,ids: Add SoC IDs for SM7635 family
fd8cea27d9ae dt-bindings: net: cdns,macb: Add external REFCLK property
aec48256a2ff dt-bindings: thermal: rockchip: document otp thermal trim
328772974a15 dt-bindings: rockchip-thermal: Add RK3576 compatible
19f989a5bd1d MIPS: mobileye: eyeq5: add two GPIO bank nodes
6b4ac8add716 MIPS: mobileye: eyeq5: add evaluation board I2C temp sensor
4fd343c406b0 MIPS: mobileye: eyeq5: add 5 I2C controller nodes
e68a2aba902d dt-bindings: watchdog: nxp,pnx4008-wdt: allow clocks property
9c8255dc203b riscv: dts: starfive: jh7110-common: add status power led node
22723d632890 riscv: dts: starfive: jh7110-milkv-mars sort properties
e455f730d5b8 dt-bindings: nvmem: convert vf610-ocotp.txt to yaml format
5e169c37d95c dt-bindings: nvmem: mediatek: efuse: split MT8186/MT8188 from base version
7a10c41bf9e8 dt-bindings: nvmem: SID: Add binding for A523 SID controller
cbc42a476e75 dt-bindings: nvmem: convert lpc1857-eeprom.txt to yaml format
abc73f36bf9d dt-bindings: nvmem: fixed-layout: Allow optional bit positions
813b29da2d55 ASoC: dt-bindings: qcom,lpass-va-macro: Define clock-names in top-level
c33c7fb45109 dt-bindings: display: Add Sitronix ST7567 LCD Controller
c9198fbc442e dt-bindings: soc: samsung: exynos-sysreg: add hsi2 for ExynosAutov920
8cd3784e53b6 spi: dt-bindings: spi-mux: Drop "spi-max-frequency" as required
a08ba8cf59b0 dt-bindings: PCI: qcom: Move PHY & reset GPIO to Root Port node
8ab2a8849856 dt-bindings: PCI: qcom,pcie-sa8255p: Document ECAM compliant PCIe root complex
e7eea35f2725 arm64: dts: rockchip: Drop regulator-compatible property on rk3399
1fd0e3d44d5a arm64: dts: rockchip: Drop unneeded address+size-cells on px30
43cbc3eb401a arm64: dts: rockchip: Fix LCD panel port on rk3566-pinetab2
d654d06cfa41 arm64: dts: rockchip: Move mipi_out node on rk3399 haikou demo dtso
2e4252d482d0 arm64: dts: rockchip: Simplify mipi_out endpoint on rk3399 RP64 dtso
34b2c6e27343 arm64: dts: rockchip: Simplify edp endpoints on several rk3399 boards
c824fe70648a arm64: dts: rockchip: Simplify VOP port definition on rk3328
fa7552a02970 dt-bindings: usb: convert lpc32xx-udc.txt to yaml format
c80a7e0d3ea3 ARM: dts: broadcom: Fix bcm7445 memory controller compatible
1ef58d48a6ef dt-bindings: display: panel: samsung,atna30dw01: document ATNA30DW01
e77e4c64d3aa arm64: dts: allwinner: a523: enable Mali GPU for all boards
bf3f984838fb arm64: dts: allwinner: a523: add Mali GPU node
497e5ea363fe arm64: dts: allwinner: a523: Add power controller device nodes
9467e9442c85 Merge branch 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm into sunxi/dt-for-6.17
cc2d2d0d56f2 dt-bindings: mmc: sdhci-msm: document the Milos SDHCI Controller
b028e9e71dbc dt-bindings: power: Add A523 PPU and PCK600 power controllers
a266236fefcb arm64: dts: rockchip: Move dsi address+size-cells from SoC to rk3399 boards
ab7cf99a1f4a arm64: dts: rockchip: Move dsi address+size-cells from SoC to px30 boards
f8d95046048f dt-bindings: display: rockchip,dw-mipi-dsi: Drop address/size cells
597bb0d8411a dt-bindings: arm-smmu: document the support on Milos
ee596924f1a1 arm64: dts: rockchip: Fix UART DMA support for RK3528
01647aa1b636 arm64: dts: rockchip: Add reset button to NanoPi R5S
a74d4de252fd arm64: dts: rockchip: Add rtc0 alias for NanoPi R5S + R5C
46a8ca674cfa dt-bindings: interrupt-controller: Convert apm,xgene1-msi to DT schema
e07aac30910c dt-bindings: gpu: mali-bifrost: Add Allwinner A523 compatible
609204d3eec9 docs: dt: writing-schema: Document preferred order of properties
91dffad70433 docs: dt: writing-bindings: Document discouraged instance IDs
7d0a75ec87a1 docs: dt: writing-bindings: Document compatible and filename naming
ce2424aea4e8 docs: dt: submitting-patches: Avoid 'YAML' in the subject and add an example
cfcbcd138f50 dt-bindings: iio: proximity: Add Nicera D3-323-AA PIR sensor
1dc1537a1cfc dt-bindings: vendor-prefixes: Add Nicera
50d9d6206314 dt-bindings: iio: adc: Add support for MT7981
e3979d4e5a71 dt-bindings: iio: adc: Add AD4170-4
d56febcf05e4 dt-bindings: pinctrl: stm32: Introduce HDP
fad75c97710c Add RPMh regulator support for PM7550 & PMR735B
02ea21d540c3 ASoC: codec: Convert to GPIO descriptors for
89d0b8fce36f regulator: dt-bindings: qcom,rpmh: Add PMR735B compatible
c8bd9fcae9a0 regulator: dt-bindings: qcom,rpmh: Add PM7550 compatible
d4e6b1fb0783 dt-bindings: iio: adc: mt6359: Add MT6373 PMIC AuxADC
098202eec4e1 dt-bindings: iio: adc: mt6359: Add MT6363 PMIC AuxADC
1697eb314369 arm64: dts: imx8q: add camera ov5640 support for imx8qm-mek and imx8qxp-mek
28dbe992a899 arm64: dts: altera: socfpga_stratix10: update internal oscillators
df7e566fd9d3 arm64: dts: socfpga: swvp: remove phy-addr in the GMAC node
58018d66ed16 arm64: dts: socfpga: swvp: remove cpu1-start-addr
ed76c055b420 arm64: dts: socfpga: swvp: remove altr,modrst-offset
aec88103429c arm64: dts: socfpga: stratix10: fix dtbs_check for rstmgr
39d9a2cbc5e5 arm64: dts: socfpga: agilex: fix dtbs_check warning for f2s-free-clk
ef70c327c3f6 arm64: dts: allwinner: A523: Add SID controller node
752c7e4e2720 arm64: dts: allwinner: a133-liontron-h-a133l: Add Ethernet support
fae71aaf339e arm64: dts: allwinner: a100: Add EMAC support
b38274d492ca arm64: dts: allwinner: a100: Add pin definitions for RGMII/RMII
ed798b2f7978 media: dt-bindings: rockchip: Add RK3576 Video Decoder bindings
8a915333fc1e media: dt-bindings: rockchip: Document RK3588 Video Decoder bindings
9b65179d600c dt-bindings: pinctrl: document the Milos Top Level Mode Multiplexer
fb32a87d3875 dt-bindings: pinctrl: qcom,pmic-gpio: Add PM7550 support
9391657b90c6 dt-bindings: pinctrl: qcom,pmic-gpio: Add PMIV0104 support
d655238fffbd ARM: tegra: chagall: Add embedded controller node
8f97653e1318 ARM: tegra: Add device-tree for Asus Portable AiO P1801-T
800285ab20bb dt-bindings: arm: tegra: Add Asus Portable AiO P1801-T
2a2952b67a2e arm64: tegra: Add p3971-0089+p3834-0008 support
ce7e69af42ca arm64: tegra: Add memory controller on Tegra264
a81e86db62db arm64: tegra: Add Tegra264 support
a6689e2bd732 dt-bindings: arm: tegra: Add Asus VivoTab RT TF600T
776d06cf806e dt-bindings: Add Tegra264 clock and reset definitions
536f700e61e8 dt-bindings: tegra: Document P3971-0089+P3834-0008 Platform
c9998640b0fc dt-bindings: rtc: tegra: Document Tegra264 RTC
9aacfd76da1d dt-bindings: dma: Add Tegra264 compatible string
7def90ff5f38 dt-bindings: misc: Document Tegra264 APBMISC compatible
a59edbcea209 dt-bindings: firmware: Document Tegra264 BPMP
26008a3fa73f dt-bindings: mailbox: tegra-hsp: Properly sort compatible string list
ac67362457ac dt-bindings: mailbox: tegra-hsp: Bump number of shared interrupts
88181419846e dt-bindings: memory: tegra: Add Tegra264 support
80cb84e4d5a7 dt-bindings: tegra: pmc: Add Tegra264 compatible
44788ad15192 arm64: dts: rockchip: describe the OV8858 user camera on PinePhone Pro
f48d16bc01ed arm64: dts: rockchip: describe I2c Bus 1 and IMX258 world camera on PinePhone Pro
624791f8d74a arm64: dts: rockchip: Fix pinctrl node names for RK3528
2a7b4ab8ef90 arm64: dts: rockchip: Add FriendlyElec NanoPi M5 support
75ac9bbd660a dt-bindings: arm: rockchip: add FriendlyElec NanoPi M5 board
d9c568906be1 arm64: dts: rockchip: force PMIC reset behavior to restart PMU on RK3588 Tiger
8bd14566b75f arm64: dts: rockchip: force PMIC reset behavior to restart PMU on RK3588 Jaguar
0e417bfcbc38 arm64: dts: rockchip: add header for RK8XX PMIC constants
5cdc97a0faf8 arm64: dts: rockchip: add HDMI audio on ROCK 4D
d2defdc9b0c3 arm64: dts: rockchip: theoretically enable Wi-Fi on ROCK 4D
7200ec33cb56 arm64: dts: rockchip: complete USB nodes on ROCK 4D
ac5675c9dfae arm64: dts: rockchip: adjust dcin regulator on ROCK 4D
71bbd4df5a38 arm64: dts: Add DTS for Marvell PXA1908 and samsung,coreprimevelte
c3eb8bf27be6 dt-bindings: marvell: Document PXA1908 SoC and samsung,coreprimevelte
3dbe8d040691 dt-bindings: mmc: sdhci-pxa: restrict pinctrl to pxav1
256a25acb085 arm64: dts: freescale: imx8mp-toradex-smarc: remove gpio hog
4875356dd0d1 arm64: dts: freescale: imx8mp-toradex-smarc: fix lvds dsi mux gpio
7e16a47c774f arm64: dts: imx8mm-venice-gw7904: Increase HS400 USDHC clock speed
958eae2d29ea arm64: dts: imx8mm-venice-gw7903: Increase HS400 USDHC clock speed
3b94e93f86e6 arm64: dts: imx8mn-venice-gw7902: Increase HS400 USDHC clock speed
a81c22fbb48a arm64: dts: imx8mm-venice-gw7902: Increase HS400 USDHC clock speed
59d34e1fa7de arm64: dts: imx8mm-venice-gw7901: Increase HS400 USDHC clock speed
e1cf73b27bcb arm64: dts: imx8mp-venice-gw702x: Increase HS400 USDHC clock speed
0edd7bba0263 arm64: dts: imx8mm-venice-gw700x: Increase HS400 USDHC clock speed
9820a07342b0 arm64: dts: lx2160a-qds: add the two on-board RGMII PHYs
16382fa39594 arm64: dts: add imx95-libra-rdk-fpsc board
8a6f28dab39c arm64: dts: imx8q: add linux,cma node for imx8qm-mek and imx8qxp-mek
ba73343b8812 arm64: dts: imx8: add capture controller for i.MX8's img subsystem
ea6b32baf520 arm64: dts: imx95: add jpeg encode and decode nodes
2a4634dc728b arm64: dts: imx93-phyboard-nash: Add PEB-WLBT-07 overlay
c080e7b9ddda arm64: dts: imx93-phyboard-segin: Add PEB-WLBT-05 overlay
1f7892023ef4 arm64: dts: imx93-phyboard-segin: Add PEB-EVAL-01 overlay
faa5aade74a9 arm64: dts: imx93-phycore-som: Add RPMsg overlay
07780fa4aed1 arm64: dts: freescale: tqmls10xx: Add vdd-supply for spi-nor flash
8e3492338e8b arm64: dts: freescale: tqmls10xx-mbls10xxa: Add vdd-supply for i2c mux
271103d977c9 arm64: dts: tqmls1046a: Enable SFP interfaces
25f7bd3b4a47 arm64: dts: tqmls1043a: Enable SFP interface
54f5caa98df8 arm64: dts: tqmls10xxa: Move SFP cage definition to common place
e715bb94e263 arm64: dts: fsl-ls1088a: Remove superfluous address and size cells
c82c1751f804 arm64: dts: fsl-ls1046a: Remove superfluous address and size cells
ebcd19d6347a arm64: dts: fsl-ls1043a: Remove superfluous address and size cells
17c7cc47affb arm64: dts: imx94: add missing clock related properties to flexcan1
d60633ab78a3 arm64: dts: imx8mn: Configure DMA on UART2
7d4ebc6b315b arm64: dts: imx8mm: Configure DMA on UART2
6d1fccdc8f60 arm64: dts: fsl-ls1046a: Add missing DMA entries for I2C & LPUART
7495eeebbd34 arm64: dts: fsl-ls1043a: Add missing DMA entries for I2C & LPUART
e06f4e76e905 arm64: dts: freescale: imx93-phycore-som: Add watchdog ext-reset-output pin
d58bd9b4a79b arm64: dts: imx8mn-beacon: Fix HS400 USDHC clock speed
c694a7bc8cf3 arm64: dts: imx8mm-beacon: Fix HS400 USDHC clock speed
6743b8d488e1 arm64: dts: tqma8mpql-mba8mpxl-lvds: Rename overlay to include display name
a37af13d15c8 arm64: dts: imx8qm-mek: support revd board's wm8962 codec
7a3fbd740ca5 arm64: dts: imx8qxp-mek: support wcpu board's wm8962 codec
7e34086585b9 arm64: dts: imx8mp-evk: Use fsl-asoc-card to replace simple card
83f3bf720be9 arm64: dts: imx93: add edma error interrupt support
ebf5c781f77d arm64: dts: freescale: imx8mp-toradex-smarc: add fan cooling levels
181479b67e8a arm64: dts: imx8mp: Configure VPU clocks for overdrive
59f683a9ab68 arm64: dts: imx8mp-nominal: Explicitly configure nominal VPU clocks
8a232cb5a7fa arm64: dts: imx8mp: fix VPU_BUS clock setting
eb10431b8e66 arm64: dts: imx8mp: drop gpcv2 vpu power-domains and clocks
60e50a08da9b arm64: dts: freescale: imx8qxp/imx8qm: Add CAAM support
a248219a8875 ARM: dts: mediatek: add basic support for Lenovo A369i board
bfd569da9873 ARM: dts: mediatek: add basic support for JTY D101 board
2a4d4ef273b2 ARM: dts: mediatek: add basic support for MT6572 SoC
23404121bdd4 dt-bindings: arm: mediatek: add boards based on the MT6572 SoC
a4c8dd9520f6 dt-bindings: vendor-prefixes: add JTY
e0c23527ba98 dt-bindings: watchdog: mediatek,mtk-wdt: add MT6572
b2b61a2db095 dt-bindings: interrupt-controller: mediatek,mt6577-sysirq: add MT6572
804ab7c7d85d ARM: dts: imx6-gw: Replace license text comment with SPDX identifier
03bac12b32b2 ARM: dts: imx6ul-kontron-sl-common: Fix QSPI NAND node name
ad2593118243 ARM: dts: imx6ul-kontron-sl-common: Add SPI NOR partitions
4885f805e158 ARM: dts: imx6ul-kontron-bl-common: Fix RTS polarity for RS485 interface
d1b91e76690e dt-bindings: add imx95-libra-rdk-fpsc
a0409bf40ae5 arm64: dts: ti: k3-am69-sk: Add idle-states for remaining SERDES instances
673bf0fe91bc arm64: dts: ti: k3-am62a7-sk: add boot phase tags
0b61c356e6ad arm64: dts: ti: k3-am654-base-board: add boot phase tags
7d711c316bdb arm64: dts: ti: k3-am65: add boot phase tags
e177b1c9de01 dt-bindings: clock: ast2600: Add reset definitions for MAC1 and MAC2
1c5060689b34 dt-bindings: net: ftgmac100: Add resets property
5193dd5fa141 dt-bindings: net: sophgo,sg2044-dwmac: Add support for Sophgo SG2042 dwmac
5ce5f07b5508 dt-bindings: net: dsa: mediatek,mt7530: add internal mdio bus
583ebba08917 dt-bindings: net: dsa: mediatek,mt7530: add dsa-port definition for mt7988
0f557ac7ccfe dt-bindings: net: mediatek,net: add sram property
cffbaf9b81e2 dt-bindings: net: mediatek,net: allow irq names
a76ffe63b15c dt-bindings: net: mediatek,net: allow up to 8 IRQs
6bb228560999 dt-bindings: net: mediatek,net: update mac subnode pattern for mt7988
97de60cfbce0 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
b9da9213ade8 arm64: dts: st: remove empty line in stm32mp251.dtsi
64063fff5ffb arm64: dts: st: fix timer used for ticks
4c7a19b4cb33 regulator: Merge tps6594 driver changes
daad99af0822 dt-bindings: mfd: ti,tps6594: Add TI TPS652G1 PMIC
8386b729544f dt-bindings: media: cdns,csi2rx.yaml: Add optional interrupts for cdns-csi2rx
b29392c6d2f8 arm64: dts: rockchip: Enable HDMI receiver on RK3588 EVB1
d54023e2d503 arm64: dts: rockchip: fix PHY handling for ROCK 4D
a3f230874d3a arm64: dts: rockchip: Enable mipi dsi on rk3568-evb1-v10
cf9888548489 arm64: dts: rockchip: Add UFS support on the ROCK 4D
7903089bd476 arm64: dts: ti: k3-am69-sk: Add bootph-all property to enable Ethernet boot
24844a9efccd arm64: dts: ti: k3-j722s-evm: Add bootph-all property to enable Ethernet boot
f4fdd87dbb41 arm64: dts: ti: k3-am62p5-sk: Add bootph-all property to enable Ethernet boot
3939a611e8bc arm64: dts: ti: k3-am68-sk-base-board: Add bootph-all property to enable Ethernet boot
a3f5e9fa0441 arm64: dts: ti: Add support for AM62D2-EVM
7a38d687cc98 arm64: dts: ti: Add pinctrl entries for AM62D2 family of SoCs
f2166a890cbb dt-bindings: arm: ti: Add AM62D2 SoC and Boards
aa589db3ac8e arm64: dts: ti: Add bootph property to nodes at source for am62a
24acc0cda0ca dt-bindings: ethernet-phy: add MII-Lite phy interface type
de5faa29496a dt-bindings: dpll: Add support for Microchip Azurite chip family
be3edb0ba9c7 dt-bindings: dpll: Add DPLL device and pin
6951965726e3 dt-bindings: net: Add support for Sophgo CV1800 dwmac
57ec540c0009 dt-bindings: memory: renesas,rzg3e-xspi: Document RZ/V2H(P) and RZ/V2N support
397d62e38e6d dt-bindings: arm: sunxi: Combine board variants into enums
94f9ccddf8d2 ARM: tegra: Add device-tree for ASUS VivoTab RT TF600T
966adacf22f9 dt-bindings: serial: rsci: Update maintainer entry
311412a89e25 dt-bindings: serial: renesas,rsci: Add optional secondary clock input
107315cef7f1 dt-bindings: serial: sh-sci: Document r8a78000 bindings
49773b5da84b dt-bindings: power: qcom,rpmpd: document the Milos RPMh Power Domains
89e711f0ab70 arm64: dts: ti: k3-am62p-verdin: Adjust temperature trip points
6d8d2fd35d79 arm64: dts: ti: k3-am62p-j722s: Enable freq throttling on thermal alert
96816c0c1cda Merge tag 'pm-runtime-6.17-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
4c2695cf19b3 arm64: dts: ti: k3-j784s4-j742s2-main-common: Add PBIST_14 node
8d9287a162e7 dt-bindings: soc: ti: bist: Add BIST for K3 devices
2708025daa67 arm64: dts: ti: k3-am62-main: Remove eMMC High Speed DDR support
3112e1658091 arm64: dts: ti: k3-am62*: Move eMMC pinmux to top level board file
6dfe3e70a454 arm64: dts: ti: k3-am62a7-sk: fix pinmux for main_uart1
b74625437e2b riscv: dts: spacemit: Move eMMC under storage-bus for K1
106a2d7182d9 riscv: dts: spacemit: Move UARTs under dma-bus for K1
37db9248d762 riscv: dts: spacemit: Add DMA translation buses for K1
d9accb54a587 riscv: dts: spacemit: add pwm14_1 pinctrl setting
0603708cb366 riscv: dts: spacemit: add PWM support for K1 SoC
23afee5fb806 arm64: dts: ti: k3-am62p-verdin: fix PWM_3_DSI GPIO direction
e05ddcb61514 arm64: dts: ti: k3-pinctrl: Enable Schmitt Trigger by default
d8f96fe1e4b5 dt-bindings: net: altr,socfpga-stmmac.yaml: add minItems to iommus
e38f508615bd net: dt-bindings: ixp4xx-ethernet: Support fixed links
75d68220cfff dt-bindings: interrupt-controller: Add Arm GICv5
33b7328bd67b Merge tag 'drm-msm-next-2025-07-05' of https://gitlab.freedesktop.org/drm/msm into drm-next
10794b789986 docs: dt: writing-bindings: Consistently use single-whitespace
86a9bf4c4443 docs: dt: writing-bindings: Express better expectations of "specific"
0c8f9e02cd3b docs: dt: writing-bindings: Rephrase typical fallback (superset) usage
0f6503d69ae6 arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable serial NOR FLASH
add55fc9ed19 arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Enable serial NOR FLASH
7cd8bb1dc1cc arm64: dts: renesas: r9a09g057: Add XSPI node
531f2d9725b7 arm64: dts: renesas: r9a09g056: Add XSPI node
84f1df18dc5f Merge tag 'renesas-r9a09g057-dt-binding-defs-tag4' into renesas-dts-for-v6.17
a4a0bc4dc3e9 arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Fix pinctrl node name for GBETH1
8b67347d881d arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Fix pinctrl node name for GBETH1
66af74e1aa4d arm64: dts: renesas: rzg3e-smarc-som: Enable eth{0-1} (GBETH) interfaces
c813a6ce829d arm64: dts: renesas: r9a09g047e57-smarc: Add gpio keys
eb1e7e4e9e6e dt-bindings: rtc: nxp,lpc1788-rtc: add compatible string nxp,lpc1850-rtc
d9c9432709dc dt-bindings: rtc: move nxp,lpc3220-rtc to separated file from trivial-rtc.yaml
f7e641cf0882 dt-bindings: Move sophgo,cv1800b-rtc to rtc directory
c2ccc8724b7a arm: dts: ti: omap: Fixup pinheader typo
e6a0b772cb05 ARM: dts: am335x-pdu001: Fix RS-485 transceiver switching
40e9787d1816 ASoC: soc-dapm: cleanups
01c983755f54 ARM: dts: marvell: kirkwood: use recent scl/sda gpio bindings
75df38d090a6 arm64: dts: mediatek: mt8395-genio-1200-evk: Add MT6359 PMIC key support
3a6357e27ba7 arm64: dts: mediatek: mt8390-genio-common: Add Home MT6359 PMIC key support
6a3deb51c9b5 arm64: dts: mediatek: mt7988a-bpi-r4: add gpio leds
c7292550d3ab ARM: dts: imx6-karo: Replace license text comment with SPDX identifier
c134c3be2c58 arm64: dts: s32g: Add USB device tree information for s32g2/s32g3
8faccf139224 dt-bindings: usb: Add compatible strings for s32g2/s32g3
32caa97af9bf dt-bindings: gpio: pca95xx: add TI TCA6418
7158638bb3cd arm64: dts: mediatek: mt7988a-bpi-r4: drop unused pins
a2a08c044349 arm64: dts: mediatek: mt7988a-bpi-r4: add proc-supply for cci
240182754e31 arm64: dts: mediatek: mt7988: add cci node
6e93e2385a19 dt-bindings: interconnect: add mt7988-cci compatible
74844cb5275e arm64: dts: airoha: en7581: Add ethernet nodes to EN7581 SoC evaluation board
8289107f1c92 arm64: dts: mediatek: mt8192-asurada-spherion: Mark trackpads as fail-needs-probe
e4519cc918c5 arm64: dts: mediatek: mt8186: Add Squirtle Chromebooks
f8de516be111 arm64: dts: mediatek: mt8186: Merge Voltorb device trees
034615aac7eb arm64: dts: mediatek: mt8186-steelix: Mark second source components for probing
b0b73c2d7ae7 dt-bindings: arm: mediatek: Add MT8186 Squirtle Chromebooks
6b59c9ae290e dt-bindings: arm: mediatek: Merge MT8186 Voltorb entries
ae2638c7d641 Merge tag 'pm-runtime-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm into gpio/for-next
bc9b5bf851b3 dt-bindings: pwm: Convert lpc32xx-pwm.txt to yaml format
56458f97f58d dt-bindings: pwm: argon40,fan-hat: Document Argon40 Fan HAT
5ec6557630fd dt-bindings: vendor-prefixes: Document Argon40
71c5a4bb4e89 dt-bindings: pwm: mediatek,mt2712-pwm: Add support for MT6991/MT8196
6240e06fc3e5 dt-bindings: pwm: convert lpc1850-sct-pwm.txt to yaml format
b535e7088d2f dt-bindings: pwm: adi,axi-pwmgen: Update documentation link
69d7e2a442d2 dt-bindings: pwm: sophgo: Add pwm controller for SG2044
af64f85f74b4 riscv: dts: sifive: unleashed/unmatched: Remove PWM controlled LED's active-low properties
e0be156f6035 dt-bindings: pwm: marvell,pxa-pwm: Add SpacemiT K1 PWM support
e49654c2f279 Merge tag 'pm-runtime-6.17-rc1'
b24aeebf87a0 arm64: dts: allwinner: t527: Add OrangePi 4A board
7f5a1f6e1eb9 arm64: dts: allwinner: a523: Add UART1 pins
952f9cbd7af1 arm64: dts: allwinner: a523: Move rgmii0 pins to correct location
ad8576fad7d4 arm64: dts: allwinner: a523: Move mmc nodes to correct position
15e4d9212ce3 dt-bindings: arm: sunxi: Add Xunlong OrangePi 4A board
12336bf96c72 dt-bindings: iio: adc: nxp,lpc3220-adc: allow clocks property
e65cbadc0548 dt-bindings: iio: adc: ad4851: add spi-3wire
4d9c51edc9b9 arm64: dts: exynos7870-j6lte: reduce memory ranges to base amount
e086fd8876f5 arm64: dts: exynos7870-on7xelte: reduce memory ranges to base amount
9d9c6611c451 arm64: dts: exynos7870: add quirk to disable USB2 LPM in gadget mode
208cce5857c4 ARM: dts: microchip: sama7g5: Add cache configuration for cpu node
509b99826913 ARM: dts: microchip: sama7d65: Add cache configuration for cpu node
f3d0e33299fd ARM: dts: microchip: sama5d4: Update the cache configuration for CPU
8941fbf6ba5b ARM: dts: microchip: sama5d3: Update the cache configuration for CPU
2eff3303da8d ARM: dts: microchip: sama5d2: Update the cache configuration for CPU
e7b18d4c2364 Merge merge point of tag 'usb-6.16-rc5' into usb-next
c38da1ad3c4f dt-bindings: opp: adreno: Update regex of OPP entry
677b04f5438a dt-bindings: power: qcom,rpmpd: add Turbo L5 corner
e31a0e2df6d3 arm64: dts: amlogic: Enable the npu node for Alta and VIM3
607ef22a465f dts: arm64: amlogic: add S6 pinctrl node
9211f8207ece dts: arm64: amlogic: add S7D pinctrl node
ab5a66e09833 dts: arm64: amlogic: add S7 pinctrl node
15aac295b6bc arm64: dts: amlogic: Add Ugoos AM3
79c971501356 dt-bindings: arm: amlogic: Add Ugoos AM3
a6dec074934f arm64: dts: amlogic: Align wifi node name with bindings
a21c94e943cb dt-bindings: display/msm: qcom,sm8750-mdss: Add SM8750
109b054c5d62 dt-bindings: display/msm: qcom,sm8650-dpu: Add SM8750
d58d7037c611 dt-bindings: display/msm: dp-controller: Add SM8750
79c555201895 dt-bindings: display/msm: dsi-controller-main: Add SM8750
02e87e911953 dt-bindings: display/msm: dsi-phy-7nm: Add SM8750
792e2ba64bb0 ARM: dts: stm32: add stm32mp157f-dk2 board support
69778818ec62 dt-bindings: arm: stm32: add STM32MP157F-DK2 board compatible
7643ccce963f ARM: dts: stm32: optee async notif interrupt for MP15 scmi variants
5b0e91604398 ARM: dts: stm32: use internal regulators bindings for MP15 scmi variants
bf70ebd8ffe1 dt-bindings: regulator: Add STM32MP15 SCMI regulator identifiers
c76df445d8e2 ARM: dts: stm32: use 'typec' generic name for stusb1600 on stm32mp15xx-dkx
475d705400c1 ARM: dts: stm32: fullfill diversity with OPP for STM32M15xF SOCs
4bb10d43e4dc ARM: dts: stm32: add system-clock-direction-out on stm32mp15xx-dkx
b0cec331ce90 arm64: dts: st: add timer nodes on stm32mp257f-ev1
3784048145a5 arm64: dts: st: add timer pins for stm32mp257f-ev1
2030d965c281 arm64: dts: st: add timer nodes on stm32mp251
5e0382c920e9 ARM: dts: stm32: Add nvmem-cells to ethernet nodes for constant mac-addresses
7f41efee603f Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
1210620aaa38 arm64: dts: ti: k3-am62p-verdin: add SD_1 CD pull-up
49fb938f2aa0 ARM: dts: aspeed: yosemite4: add gpio name for uart mux sel
f80c1ece0727 ARM: dts: aspeed: santabarbara: Add Meta Santabarbara BMC
5739123deb47 dt-bindings: arm: aspeed: add Meta Santabarbara board
17e841eb8a01 ARM: dts: aspeed: bletchley: enable USB PD negotiation
6c20b3c5da78 ARM: dts: aspeed: lanyang: Fix 'lable' typo in LED nodes
ac274dd83da4 ARM: dts: aspeed: harma: add mmc health
5f776e456b95 ARM: dts: aspeed: Harma: revise gpio bride pin for battery
285c16da7d59 ARM: dts: aspeed: harma: add ADC128D818 for voltage monitoring
707670385616 ARM: dts: aspeed: harma: add fan board I/O expander
5cdab6370fb5 ARM: dts: aspeed: harma: add E1.S power monitor
4ac3caeab4d6 ARM: dts: aspeed: catalina: Enable MCTP for frontend NIC management
4acc31107f44 Merge tag 'drm-misc-next-2025-07-03' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
3dfcfb15f3a4 riscv: dts: spacemit: add reset support for the K1 SoC
b1de41ddb12c Merge tag 'spacemit-reset-binding-for-6.17-1' of https://github.com/spacemit-com/linux
990c4c25e751 dt-bindings: pinctrl: stm32: Add missing blank lines
e6da1f46eb46 dt-bindings: pinctrl: convert nxp,lpc1850-scu.txt to yaml format
bfffde04584b arm64: dts: qcom: sm8150: Drop unrelated clocks from PCIe hosts
bccba5ad2d5e arm64: dts: qcom: sc8180x: Drop unrelated clocks from PCIe hosts
7d4d5736e895 dt-bindings: watchdog: fsl-imx-wdt: add compatible string fsl,ls1046a-wdt
3bd76858e231 Merge tag 'arm-soc/for-6.17/devicetree-arm64' of https://github.com/Broadcom/stblinux into soc/dt
e5d755023dc6 ARM: dts: lpc32xx: Add #pwm-cells property to the two SoC PWMs
5c1cfc4da7e7 Merge tag 'arm-soc/for-6.17/devicetree' of https://github.com/Broadcom/stblinux into soc/dt
376d0636861a dt-bindings: mtd: jedec,spi-nor: Add atmel,at26* compatible string
fe2b22926763 Merge tag 'renesas-dts-for-v6.17-tag1' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
5aaa6a166e8d Merge tag 'renesas-dt-bindings-for-v6.17-tag1' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
7a374a9fc8f9 arm64: dts: cavium: thunder2: Add missing PL011 "uartclk"
9b8b632ab773 arm64: dts: lg: Add missing PL011 "uartclk"
1840478bd82c arm64: dts: lg: Refactor common LG1312 and LG1313 parts
da6dbfcc7301 dt-bindings: soc: spacemit: define spacemit,k1-ccu resets
bb90348d29a9 dt-bindings: mmc: Add sdhci compatible for qcs8300
0414ba944436 spi: dt-bindings: Convert marvell,orion-spi to DT schema
a56bc205230f dt-bindings: mmc: loongson,ls2k0500-mmc: Add compatible for Loongson-2K2000
3cc034e85df9 dt-bindings: mmc: Add Loongson-2K SD/SDIO/eMMC controller binding
dcdc40b6d229 mips: dts: qca: add wmac support
c66d6090a834 MIPS: mobileye: dts: eyeq5: add the emmc controller
cec254c8523d MIPS: mobileye: dts: eyeq6h: add the emmc controller
611c15d5e513 dt-bindings: mmc: renesas,sdhi: Document RZ/T2H and RZ/N2H support
c824773bddb3 dt-bindings: reset: Convert snps,dw-reset to DT schema
86485ac1b19d dt-bindings: media: qcom,x1e80100-camss: Fix isp unit address
728f8edb14ff dt-bindings: media: qcom,x1e80100-camss: Remove clock-lanes port property
7a573d543274 dt-bindings: media: qcom,x1e80100-camss: Add optional bus-type property
775c0a28cdd1 dt-bindings: media: qcom,x1e80100-camss: Tighten the property regex pattern
e73fc4fe22c1 Merge tag 'ib-mfd-gpio-input-pwm-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd into gpio/for-next
2cdc59469372 dt-bindings: net: Convert socfpga-dwmac bindings to yaml
03396f2ec6d3 arm64: dts: renesas: Add CN15 eMMC and SD overlays for RZ/V2H and RZ/V2N EVKs
b581622620e9 arm64: dts: renesas: r8a779h2: Add Gray Hawk Single support
8c9f5b0429a2 arm64: dts: renesas: Add Renesas R8A779H2 SoC support
2b6093a18f87 arm64: dts: renesas: Factor out Gray Hawk Single board support
c8fc0b439820 dt-bindings: soc: renesas: Document R-Car V4M-7 Gray Hawk Single
ec22ed6659ed Merge tag 'renesas-r9a09g057-dt-binding-defs-tag4' into renesas-clk-for-v6.17
64c19295dba9 Merge tag 'renesas-r9a09g087-dt-binding-defs-tag2' into renesas-clk-for-v6.17
8fef4f6b3495 dt-bindings: clock: renesas,r9a09g077/87: Add SDHI_CLKHS clock ID
0f1bcc2d243a dt-bindings: clock: renesas,r9a09g056/57-cpg: Add XSPI core clock
4380d39a0bfd ARM: dts: sun8i: v3: Add RGB666 LCD PD pins definition
d4241e745089 ARM: dts: sun8i: v3s: Add RGB666 LCD PE pins definition
6b354c7e0cba mips: dts: realtek: Add gpio block
c0d0aedd3de9 mips: dts: realtek: Add watchdog
dae2bc5616a8 mips: dts: realtek: Add switch interrupts
38394a11dfec mips: dts: cameo-rtl9302c: Add switch block
e4d0f8f0b485 MIPS: dts: ralink: gardena_smart_gateway_mt7688: Fix power LED
53804508fc88 MIPS: dts: ralink: mt7628a: Update watchdog node according to bindings
96b1d8882b30 MIPS: dts: ralink: mt7628a: Fix sysc's compatible property for MT7688
3a5d39e27fb7 dt-bindings: clock: mediatek,mtmips-sysc: Adapt compatible for MT7688 boards
e2714b69d705 ASoC: dt-bindings: qcom,sm8250: Add QCS8275 sound card
93001f7dcb85 ARM: dts: imx6ul: support Engicam MicroGEA GTW board
9ea985f294fc ARM: dts: imx6ul: support Engicam MicroGEA RMM board
b0e34d5a967c ARM: dts: imx6ul: support Engicam MicroGEA BMM board
acf9f66533f6 ARM: dts: imx6ul: support Engicam MicroGEA-MX6UL SoM
d23e9ea1eaac dt-bindings: arm: fsl: support Engicam MicroGEA GTW board
e50303295b76 dt-bindings: arm: fsl: support Engicam MicroGEA RMM board
aec517ade0f4 dt-bindings: arm: fsl: support Engicam MicroGEA BMM board
98ba73c32158 dt-bindings: net: convert nxp,lpc1850-dwmac.txt to yaml format
0f4043ab479c iio: adc: ad7173: add SPI offload support
d7b8723e5cc9 dt-bindings: trigger-source: add ADI Util Sigma-Delta SPI
84d8f9c362fd dt-bindings: mfd: adp5585: document reset gpio
362f91ed9a71 dt-bindings: mfd: adp5585: add properties for input events
a8629f7b1c76 dt-bindings: mfd: adp5585: document adp5589 I/O expander
56126147cf7f dt-bindings: mfd: adp5585: ease on the required properties
e89612b694cf dt-bindings: input: touchscreen: edt-ft5x06: Document FT8716 support
fcb3290cc9aa dt-bindings: input: touchscreen: convert tsc2007.txt to yaml format
2aa354161f52 dt-bindings: dsp: fsl,dsp: document 'access-controllers' property
6e293da49ad9 dt-bindings: bus: document the IMX AIPSTZ bridge
56370e58513a arm64: dts: imx93-11x11-evk: remove the duplicated pinctrl_lpi2c3 node
b2cf0ac6473f arm64: dts: imx93-11x11-evk: reduce the driving strength of net RXC/TXC
1f8f5eb35b99 arm64: dts: imx93-11x11-evk: disable all realtek ethernet phy CLKOUT
3f439f3e0847 arm64: dts: imx93-qsb/evk: add usdhc3 and lpuart5
c288a6c72f58 arm64: dts: imx93: remove eee-broken-1000t for eqos node
28a0f520481d arm64: dts: imx93-9x9-qsb: add IMU sensor support
bdbdeea06674 arm64: dts: freescale: imx8mp-var-som: Add EQoS support with MaxLinear PHY
fef47da29940 arm64: dts: imx8qm: add system controller watchdog support
43a9c5204a71 arm64: dts: imx95-19x19-evk: add GPIO reset for ethphy0
cfbae9c05739 arm64: dts: imx95-19x19-evk: adjust pinctrl settings for usdhc2
2d2d317cda64 arm64: dts: imx95-evk: add USB3 PHY tuning properties
e2984acda327 arm64: dts: imx95-19x19-evk: add adc0 flexcan[1,2] i2c[2,3] uart5 spi3 and tpm3
1b516b64f709 arm64: dts: freescale: imx93-var-som: update eqos support for MaxLinear PHY
236b3b5fa844 arm64: dts: imx8mp-venice-gw74xx: update name of M2SKT_WDIS2# gpio
ee2949900e0f arm64: dts: freescale: imx93-tqma9352: add memory node
a8cfb47ba83a arm64: dts: freescale: imx93-phyboard-nash: Move ADC vref to SoM
b4ab5602f093 dt-bindings: arm: fsl: add i.MX28 Amarula rmm board
58732bd8328b ARM: dts: mxs: support i.MX28 Amarula rmm board
54dad17c1416 ARM: dts: imx28: add pwm7 muxing options
7826f7be97d7 dt-bindings: serial: mediatek,uart: add MT6572
a6870cdf2262 dt-bindings: interrupt-controller: Convert fsl,mpic-msi to YAML
a39baf2874e1 riscv: dts: thead: Add PVT node
59dcbcb5dbe8 riscv: dts: thead: th1520: Add GPU clkgen reset to AON node
b7064204c34a arm: dts: omap: Add support for BeagleBone Green Eco board
97e7316298d4 dt-bindings: omap: Add Seeed BeagleBone Green Eco
1fc23c040c64 arm: dts: omap: am335x-bone-common: Rename tps to generic pmic node
d6a683de0144 dt-bindings: display: panel: Make reset-gpio as optional for Raydium RM67200
c7b79f4c60ea dt-bindings: display: panel: Add Himax HX83112B
287b9ff3a30a dt-bindings: vendor-prefixes: document Shenzhen DJN Optronics Technology
5b00d9d7cef3 arm64: dts: rockchip: Enable eMMC HS200 mode on Radxa E20C
f493d4244fb4 arm64: dts: rockchip: Add bluetooth support to ArmSoM Sige7
2c6901d159a6 arm64: dts: rockchip: enable PCIe on ROCK 4D
c3fcd8d33101 arm64: dts: rockchip: Enable HDMI receiver on CM3588
c0c64cb2bea6 arm64: dts: rockchip: Add HDMI PHY PLL clock source to VOP2 on rk3576
271c1ecee280 arm64: dts: rockchip: Enable HDMI PHY clk provider on rk3576
b347f6353796 dt-bindings: display: vop2: Add optional PLL clock property for rk3576
0ec19b976d2f dt-bindings: media: imx258: inherit video-interface-devices properties
32656f2dd7f7 dt-bindings: media: ov8858: inherit video-interface-devices properties
0a479200fad0 media: dt-bindings: mt9m114: Add slew-rate DT-binding
afcd87416700 media: dt-bindings: sony,imx214: Deprecate property clock-frequency
8c02f74a820d media: dt-bindings: mipi-ccs: Refer to video-interface-devices.yaml
21dd16fda6ae arm64: dts: exynos: gs101: switch to gs101 specific reboot
692223514aae arm64: dts: exynos: gs101-pixel-common: add main PMIC node
92a8f685b654 arm64: dts: exynos: gs101: ufs: add dma-coherent property
221da32f58b1 Merge 6.16-rc4 into tty-next
c0f052a89615 arm64: dts: imx95: add SMMU support for NETC
b5ed179c47d0 arm64: dts: imx943-evk: Add PDM microphone sound card support
bd71324d2afc arm64: dts: imx943-evk: add bt-sco sound card support
e22973f9644c arm64: dts: imx943-evk: add sound-wm8962 support
ba65c43c3568 arm64: dts: imx943-evk: add i2c io expander support
2364aebb71bb arm64: dts: imx943-evk: add lpi2c support
0b36a8496df3 arm64: dts: imx94: Add micfil and mqs device nodes
47f22e04693c dt-bindings: serial: 8250: allow clock 'uartclk' and 'reg' for nxp,lpc1850-uart
bb6fa1f5823a dt-bindings: usb: genesys,gl850g: add downstream facing ports
fe67c5983537 dt-bindings: usb: genesys,gl850g: use usb-hub.yaml
9d866d360be9 dt-bindings: input: touchscreen: convert lpc32xx-tsc.txt to yaml format
d9e86831c9e7 ARM: dts: Fix up wrv54g device tree
c88d144e4ee0 dt-bindings: dsa: Rewrite Micrel KS8995 in schema
721733928299 dt-bindings: net: sun8i-emac: Add A100 EMAC compatible
26d787d538c0 dt-bindings: net/nfc: ti,trf7970a: Add ti,rx-gain-reduction-db option
c4e889a39fbe dt-bindings: net: convert lpc-eth.txt yaml format
9d619f67ea06 dt-bindings: reset: sophgo: Add CV1800B support
390a51a896e0 dt-bindings: reset: renesas,rzv2h-usb2phy: Document RZ/V2N SoC support
1ab195547189 dt-bindings: reset: convert nxp,lpc1850-rgu.txt to yaml format
74f427003123 dt-bindings: reset: add support for canaan,k230-rst
bdfa6cf09cc8 dt-bindings: leds: lp50xx: Document child reg, fix example
0481e0a9c242 arm64: dts: exynos: gs101: add dm-verity-device-corrupted syscon-reboot-mode
d358bcfbc85a arm64: dts: exynos: gs101-pixel-common: add nvmem-reboot-mode
3b48424bb12d arm64: dts: exynos: gs101-pixel-common: add Maxim MAX77759 PMIC
1067406bccda dt-bindings: net: Document support for Airoha AN7583 MDIO Controller
5d19097df3ab dt-bindings: memory-controller: Define fallback compatible
3a12dc8d7019 dt-bindings: interrupt-controller: Add arm,armv7m-nvic and fix #interrupt-cells
977be08b2098 dt-bindings: trivial-devices: add compatible string nxp,isp1301 from isp1301.txt
faae60a9136d dt-bindings: net: Rename renesas,r9a09g057-gbeth.yaml
acc53bb0cab4 Merge tag 'drm-misc-next-2025-06-26' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
253782c324ed dt-bindings: phy: qcom,snps-eusb2-repeater: Remove default tuning values
0ba1a407aad6 dt-bindings: phy: apm,xgene-phy: Remove trailing whitespace
29f6bd159cad spi: dt-bindings: add nxp,lpc3220-spi.yaml
563a067ae378 dt-bindings: net: wireless: ath11k-pci: describe firmware-name property
3dafddbf2214 dt-bindings: net: wireless: ath9k: add WIFI bindings
5a46d78c27c7 arm64: dts: qcom: x1-asus-zenbook: support sound
4820d1a59ead arm64: dts: qcom: x1-asus-zenbook: fixup GPU nodes
17d54e8cff64 dt-bindings: iio: adc: ad7768-1: add trigger-sources property
f1a36c705c57 dt-bindings: iio: adc: ad7768-1: Document GPIO controller
6d62b06711b2 dt-bindings: iio: adc: ad7768-1: document regulator provider property
f94145ede4c6 dt-bindings: trigger-source: add generic GPIO trigger source
b5103f279f65 dt-bindings: iio: adc: add ad7405
72d91eb75105 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
4a0d83820fdf arm64: dts: renesas: r9a09g047: Add GBETH nodes
3485db855114 arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Rename fixed regulator node names
66a9960e5871 arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Add RAA215300 PMIC
062f9e2c026a arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Add RAA215300 PMIC
3cfe736f1e40 dt-bindings: interrupt-controller: Add MIPS P8700 aclint-sswi
3cd935575bee dt-bindings: net: ti: k3-am654-cpsw-nuss: update phy-mode in example
669d2c02c393 dt-bindings: display: ti: Add schema for AM625 OLDI Transmitter
7b4c77851db5 dt-bindings: display: ti,am65x-dss: Re-indent the example
7fe4a35ce8ca arm64: dts: ti: k3-j784s4-j742s2-main-common: Add ACSPCIE1 node
c6a9ae83e762 arm64: dts: ti: k3-j722s-evm: Fix USB gpio-hog level for Type-C
a0ad301286a9 arm64: dts: qcom: sm6115: add debug UART pins
2c030b5460a9 dt-bindings: trivial-devices: Add Analog Devices ADT7411
34cb86fcdff2 Add few updates to the STM32 SPI driver
d16f0509fbae ARM: dts: microchip: sam9x7: Add LVDS controller
dc59315540b6 ASoC: Standardize ASoC menu
717b4dc30bb3 arm64: dts: exynos5433: Align i2c-gpio node names with dtschema
0d47606fb8d9 ARM: dts: s5pv210: Align i2c-gpio node names with dtschema
ae5dcb68953b ARM: dts: exynos: Align i2c-gpio node names with dtschema
fc41e79c8d7c dt-bindings: reset: sun55i-a523-r-ccu: Add missing PPU0 reset
97166fd1f53d dt-bindings: firmware: thead,th1520: Add resets for GPU clkgen
9c5a0a7d84d4 dt-bindings: net: cdns,macb: add sama7d65 ethernet interface
989c7d86c01f spi: dt-bindings: stm32: deprecate `st,spi-midi-ns` property
65f0c52f9155 spi: dt-bindings: stm32: update bindings with SPI Rx DMA-MDMA chaining
3b18f58612bb dt-bindings: usb: dwc2: rename sophgo usb compatible string
37b9182375b9 dt-bindings: gnss: u-blox: add u-blox,neo-9m compatible
aeb89b24ad7e dt-bindings: mmc: cdns: add Mobileye EyeQ MMC/SDHCI controller
eb7dca9a7276 dt-bindings: mmc: mxs-mmc: change ref to mmc-controller-common.yaml from mmc-controller.yaml
d3ef944175aa dt-bindings: pse: tps23881: Clarify channels property description
54965f2a3351 dt-bindings: soc: renesas: Document RZ/T2H Evaluation Board part number
4e1c8311bf0d ARM: dts: microchip: sama5d2_icp: rename spi-cs-setup-ns property to spi-cs-setup-delay-ns
f6e4727e66e0 ARM: dts: microchip: sama5d27_wlsom1: rename spi-cs-setup-ns property to spi-cs-setup-delay-ns
1025e2432dc1 ARM: dts: microchip: sama5d27_som1: rename spi-cs-setup-ns property to spi-cs-setup-delay-ns
346177955338 ARM: dts: microchip: sam9x60ek: rename spi-cs-setup-ns property to spi-cs-setup-delay-ns
040ecf520251 dt-bindings: net: convert qca,qca7000.txt yaml format
da41efa1472c Revert "ARM: dts: Update pcie ranges for dra7"
86e3aa4733ed ARM: dts: omap: am335x: Use non-deprecated rts-gpios
dcc259a92bf1 spi: microchip-core-qspi: Add regular transfers
689d9094a731 dt-bindings: net: qca,ar803x: Add IPQ5018 Internal GE PHY support
795bfa427a40 regulator: dvfsrc: Add support for MT8196 and
0c92dc5fb726 dt-bindings: regulator: mediatek-dvfsrc: Add MT8196 support
40062b24de96 dt-bindings: regulator: mediatek-dvfsrc: Add MT6893 support
3ea17e80490b dt-bindings: PCI: brcm,stb-pcie: Add num-lanes property
1a3a8073faf0 dt-bindings: PCI: qcom,pcie-sm8150: Drop unrelated clocks from PCIe hosts
ead3a65c4352 dt-bindings: PCI: qcom,pcie-sc8180x: Drop unrelated clocks from PCIe hosts
23ba48ce4f3d dt-bindings: crypto: Convert ti,omap4-des to DT schema
f3dc660ef7dd dt-bindings: crypto: Convert ti,omap2-aes to DT schema
b339218b8279 dt-bindings: rng: atmel,at91-trng: add sama7d65 TRNG
ff643bb28541 dt-bindings: crypto: add sama7d65 in Atmel TDES
0f0c72dc98dc dt-bindings: crypto: add sama7d65 in Atmel SHA
8462bd595120 dt-bindings: crypto: add sama7d65 in Atmel AES
76b9ac22e92f dt-bindings: crypto: fsl,sec-v4.0: Add power domains for iMX8QM and iMX8QXP
8639cd6d493b powerpc/microwatt: Correct ISA version number in device tree
5a69b5d0f9d4 ARM: dts: at91-sama5d27_wlsom1: Improve the Wifi compatible
b38f516e544a ARM: dts: microchip: gardena-smart-gateway: Fix power LED
a7efef227924 ARM: dts: microchip: sam9x7: Add clock name property
0c5aec276273 ARM: dts: microchip: sama7d65: Add clock name property
6fe4b2852827 ARM: dts: microchip: sama7g5: Adjust clock xtal phandle
3f1852d5065d ARM: dts: microchip: sam9x7: Add HLCD controller
5e5f78f26a1c ARM: dts: microchip: sama7d65: Enable CAN bus
9f891644a466 ARM: dts: microchip: sama7d65: Clean up extra space
e458631c8156 ARM: dts: microchip: sama7d65: Add CAN bus support
a2d173f4f06a ARM: dts: microchip: sama7d65: Add PWM support
e8cb36704dcf ARM: dts: microchip: sama7d65: Add crypto support
fad2776b7baf ARM: dts: microchip: use recent scl/sda gpio bindings
cfa530559e94 dt-bindings: power: supply: Drop redundant monitored-battery ref
4a278ae395fb dt-bindings: power: supply: summit,smb347: Add missing power-supply ref
1b193da31601 dt-bindings: power: supply: richtek,rt5033: Add missing power-supply ref
5b64ac18febc dt-bindings: power: supply: qcom,pmi8998: Add missing power-supply ref
f09e89e71f18 dt-bindings: power: supply: bq256xx: Add missing power-supply ref
561c50eeff1b dt-bindings: power: supply: bq2515x: Add missing power-supply ref
1c2a6f716763 arm64: dts: rockchip: add DTs for Firefly ROC-RK3588S-PC
6e8c6721786a dt-bindings: arm: rockchip: Add Firefly ROC-RK3588S-PC
d788cdf18afe arm64: dts: rockchip: Enable GPU on Radxa E20C
16d867f13e38 arm64: dts: rockchip: Add GPU node for RK3528
c3a10091d51d arm64: dts: ti: k3-am642-evm-pcie0-ep: Add boot phase tag to "pcie0_ep"
a2ef24e102ed arm64: dts: ti: k3-j722s-main: Add audio-refclk0 node
1d53c6646d99 arm64: dts: ti: k3-am62p-j722s: fix pinctrl-single size
307b8ee66245 arm64: dts: ti: k3-am62a7-sk: Describe the SPI NAND
e0da88bbe5dc arm64: dts: ti: k3-j721s2-main: Add McASP nodes
f72c8b39a660 arm64: dts: ti: k3-am62p-verdin: Enable pull-ups on I2C_3_HDMI
4228071de8ea arm64: dts: ti: k3-am62-verdin: Enable pull-ups on I2C buses
9f3a0581be0a arm64: dts: ti: k3-am642-phyboard-electra: Fix PRU-ICSSG Ethernet ports
0067f17cbb71 arm64: dts: mediatek: mt8370: Enable gpu support
fd8a8a611df3 dt-bindings: gpu: mali-bifrost: Add compatible for MT8370 SoC
8a87dd54887f media: dt-bindings: nxp,imx8-jpeg: Add compatible strings for IMX95 JPEG
a811534390f1 dt-bindings: media: convert fsl-vdoa.txt to yaml format
7c1831c97562 arm64: dts: rockchip: support camera module on Haikou Video Demo on PX30 Ringneck
e65d94e8c6e4 arm64: dts: rockchip: add label to first port of ISP on px30
49bd59bda613 arm64: dts: rockchip: fix endpoint dtc warning for PX30 ISP
8f0855aaa6a1 dt-bindings: dma: qcom,gpi: Document the sc8280xp GPI DMA engine
de8e8cacccbf arm64: dts: s32g: add RTC node
2eff8e3eb821 arm64: dts: Add DSPI entries for S32G platforms
527d37438b73 arm64: dts: freescale: imx93-phyboard-segin: Set ethernet1 alias
e9c4ed1380e5 arm64: dts: freescale: imx93-phycore-som: Move ethernet0 alias to SoM
19fc892ae830 arm64: dts: tqma8mpql: Add EASRC support
10d58add28d4 arm64: dts: tqma8mnql: Add EASRC support
9684884f9cc2 arm64: dts: freescale: Add the BOE av123z7m-n17 variant of the Moduline Display
36d39a81979d arm64: dts: freescale: Add the BOE av101hdt-a10 variant of the Moduline Display
0ab9cec49c0a arm64: dts: freescale: Add the GOcontroll Moduline Display baseboard
96478662ba59 arm64: dts: freescale: add Ka-Ro Electronics tx8p-ml81 COM
a54ff893e9e6 arm64: dts: imx8mp: Add pinctrl config definitions
b0356e47aa51 arm64: dts: rockchip: Add power controller for RK3528
fa630610e626 arm64: dts: rockchip: enable USB on Sige5
32d30cc2bfc3 arm64: dts: rockchip: add overlay for the WiFi/BT module on Sige5 v1.2
c7f61653a73d arm64: dts: rockchip: add version-independent WiFi/BT nodes on Sige5
d5edb6dfb78c arm64: dts: rockchip: add SDIO controller on RK3576
a22bac5ead32 arm64: dts: rockchip: Enable gpu on rk3576-evb1-v10
4e9c9ee05c23 dt-bindings: clock: convert lpc1850-ccu.txt to yaml format
5dab6d0666f8 arm64: dts: rockchip: Update the PinePhone Pro panel description
eaa75b56dcfb Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
64842d8e059f Merge tag 'renesas-r9a09g087-dt-binding-defs-tag1' into renesas-clk-for-v6.17
07f1f3844c5d Merge tag 'renesas-r9a09g077-dt-binding-defs-tag2' into renesas-clk-for-v6.17
e0ebadb2045d dt-bindings: clock: renesas,cpg-mssr: Document RZ/N2H support
949d0cfc7c44 dt-bindings: soc: renesas: Document RZ/N2H (R9A09G087) SoC
51071ab402e3 dt-bindings: clock: renesas,r9a09g077: Add PCLKL core clock ID
3ec018584fa1 arm64: dts: renesas: rcar-gen3: Add bootph-all to sysinfo EEPROMs
fc5f0def788b arm64: dts: renesas: sparrow-hawk: Describe split PCIe clock
3a8905aac211 arm64: dts: renesas: r8a779g0: Describe PCIe root ports
6887bc8543b4 arm64: dts: renesas: ebisu: Add CAN0 support
fd8b44404cb0 ARM: dts: renesas: r9a06g032: Add second clock input to RTC
2371c2df77ea arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Enable USB2.0 support
b1400fa1ae46 arm64: dts: renesas: r9a09g056: Add USB2.0 support
1e6055b1bfba arm64: dts: renesas: r8a779g3-sparrow-hawk: Sort DTS
e46668c89ed4 ARM: dts: renesas: r9a06g032-rzn1d400-db: Describe debug LEDs
b65d84ca5033 arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable USB2.0 support
5105a55fda27 dt-bindings: serial: renesas,rsci: Document RZ/N2H support
717942ab9fdf dt-bindings: usb: renesas,usbhs: Add RZ/V2N SoC support
51e5237dc82f ARM: dts: vf: vf610-zii-cfu1: rename node name *-gpio to *-gpios
39b627463c2b ARM: dts: vf: vf-colibri-eval-v3: add power-supply for edt,et057090dhu
fd302676921b ARM: dts: vf: rename io-expander@20 to pinctrl@20
9bea7c6d261c ARM: dts: vf: remove redundant layer under iomux
e139807952b1 ARM: dts: vf: remove redundant pinctrl-names
d2e638640e96 ARM: dts: vf: remove reg property for arm pmu
8f8e41560419 ARM: dts: vfxxx: Correctly use two tuples for timer address
f98b63e7e4d4 dt-bindings: arm: fsl: Add GOcontroll Moduline Display
2c61daf98d93 arm64: dts: add ngpios for vf610 compatible gpio controllers
063fd6175ada ARM: dts: add ngpios for vf610 compatible gpio controllers
19c622072a55 dt-bindings: net: pse-pd: ti,tps23881: Add interrupt description
a956323691dc dt-bindings: net: pse-pd: microchip,pd692x0: Add manager regulator supply
49faac7c9fd8 dt-bindings: clock: Convert alphascale,asm9260-clock-controller to DT schema
2d92d14e9eef dt-bindings: clock: Convert marvell,armada-370-corediv-clock to DT schema
d2ce3c47d404 dt-bindings: clock: Convert marvell,armada-3700-periph-clock to DT schema
e37e069f8b0f dt-bindings: clock: Convert marvell,mvebu-core-clock to DT schema
9cf6d0ba0fdf dt-bindings: clock: Convert marvell,berlin2-clk to DT schema
bb06131b2ecc dt-bindings: clock: Convert marvell,dove-divider-clock to DT schema
1fd176774ea2 dt-bindings: clock: Convert marvell,armada-3700-tbg-clock to DT schema
a06036f72ced dt-bindings: clock: Convert marvell-armada-370-gating-clock to DT schema
45f94b0de650 dt-bindings: clock: Convert marvell,armada-xp-cpu-clock to DT schema
5a9f538c0e6b dt-bindings: clock: Convert TI-NSPIRE clocks to DT schema
5a62a028d23b dt-bindings: clock: Convert lsi,axm5516-clks to DT schema
bb7d222956f9 dt-bindings: clock: Convert img,pistachio-clk to DT schema
763873a48189 dt-bindings: clock: Convert brcm,bcm2835-cprman to DT schema
cee9659816b4 dt-bindings: clock: Convert cirrus,ep7209-clk to DT schema
f10c6670b7e2 dt-bindings: clock: Convert APM XGene clocks to DT schema
bff50be25ecd dt-bindings: clock: Convert axis,artpec6-clkctrl to DT schema
7debe9917c80 dt-bindings: clock: Convert brcm,bcm53573-ilp to DT schema
37248ce61324 Merge branch '20250610-qcom_ipq5424_cmnpll-v3-1-ceada8165645@quicinc.com' into clk-for-6.17
945db09189dc dt-bindings: clock: qcom: Add CMN PLL support for IPQ5424 SoC
71f2de4a034f arm64: dts: qcom: sm8650: add iris DT node
d496cf29098a arm64: dts: qcom: msm8976-longcheer-l9360: Add initial device tree
ab1f53f63414 arm64: dts: qcom: msm8976: Add sdc2 GPIOs
b003f5c6b91d dt-bindings: arm: qcom: Add MSM8976 BQ Aquaris X5 Plus
a260177d0411 arm64: dts: qcom: msm8976: Make blsp_dma controlled-remotely
6de07b6f15ca ASoC: dt-bindings: cirrus,cs42xx8: add 'port' property
fb3447bb3b35 arm64: dts: qcom: sa8775p: Correct the interrupt for remoteproc
3058275a342c dt-bindings: rockchip: pmu: Add compatible for RK3528
50db66235f2b dt-bindings: power: rockchip: Add support for RK3528
33ceeabccc61 dt-bindings: pinctrl: eswin: Document for EIC7700 SoC
64e88c0fed96 arm64: dts: exynos: gs101: Add 'local-timer-stop' to cpuidle nodes
b10142d10119 dt-bindings: gpio: arm,pl061: Drop interrupt properties as required
469d40ff1fc6 arm64: dts: exynosautov920: Add DT node for all SPI ports
d6e199e49db3 dt-bindings: pinctrl: stm32: Add RSVD mux function
fcd55a37ae62 dt-bindings: mtd: convert nxp-spifi.txt to yaml format
b88ae50b4a3f media: dt-bindings: nxp,imx8mq-mipi-csi2: Add i.MX8QM(QXP) compatible strings
5ea6161f602d media: dt-bindings: Add binding doc for i.MX8QXP and i.MX8QM ISI
12f918ab5174 arm64: dts: qcom: sm8550: Add support for camss
3b8507884db9 arm64: dts: qcom: qcs615: disable the CTI device of the camera block
f605900d6de0 arm64: dts: qcom: qcs615-ride: enable remoteprocs
8093aa08d5a7 arm64: dts: qcom: qcs615: add ADSP and CDSP nodes
cff0cbfd4ffc arm64: dts: qcom: qcs615: Add IMEM and PIL info region
1454cb2395b1 arm64: dts: qcom: qcs615: Add mproc node for SEMP2P
d41393450043 arm64: dts: qcom: Add support for X1-based Asus Zenbook A14
455400158e35 arm64: dts: qcom: sc7180: Expand IMEM region
b73a5a409b33 arm64: dts: qcom: sdm845: Expand IMEM region
ed819d4948e0 dt-bindings: sram: qcom,imem: Add a number of missing compatibles
46d41941b590 arm64: dts: qcom: qcs615: fix a crash issue caused by infinite loop for Coresight
bcd405d4605c arm64: dts: qcom: sm6350: add APR and some audio-related services
cf84790a7bc1 arm64: dts: qcom: qcm2290: Add CAMSS node
71de0b13f5f4 arm64: dts: qcom: sa8775p-ride: enable video
f3c905ddb143 arm64: dts: qcom: sa8775p: add support for video node
2ea4d1a862e7 arm64: dts: qcom: sa8775p: Add CPU OPP tables to scale DDR/L3
f57f90da02fd arm64: dts: qcom: sa8775p: add EPSS l3 interconnect provider
484acd85064e arm64: dts: qcom: sm8750: Add UFS nodes for SM8750 QRD board
08d016ce62b5 arm64: dts: qcom: sm8750: Add UFS nodes for SM8750 MTP
21f3bb719d06 arm64: dts: qcom: sm8750: Add UFS nodes for SM8750 SoC
a4f170b96c2b arm64: dts: qcom: apq8016-sbc-d3-camera: Convert to DT overlay
96ffdf9514de arm64: dts: qcom: x1e80100-dell-xps-9345: Add WiFi/BT pwrseq
81e24b484d8f Merge tag 'drm-misc-next-2025-06-12' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
7c6c4e986b5e dt-bindings: arm: cpus: Add Kryo 470 CPUs
c3e977592183 dt-bindings: sram: qcom,imem: Add the SM7150 compatible
ff4ba6b971ae dt-bindings: soc: qcom: aoss-qmp: Add the SM7150 compatible
3b86b00b2868 dt-bindings: soc: qcom,dcc: Add the SM7150 compatible
47cee050ea05 dt-bindings: soc: qcom: add qcom,qcs615-imem compatible
73bee717137b dt-bindings: PCI: pci-ep: Extend max-link-speed to PCIe Gen5/Gen6
6ad7e7635ff2 dt-bindings: PCI: qcom,pcie-sa8775p: Document QCS8300
fe9760407d9e dt-bindings: PCI: qcom,pcie-sm8150: Document QCS615
279926cf824c arm64: dts: qcom: Add QMP handle for qcom_stats
33b6b81327b2 arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: remove camcc status property
4dcdeb9e373b arm64: dts: qcom: sm8250: enable camcc clock controller by default
986337f7125b dt-bindings: remoteproc: qcom,sa8775p-pas: Correct the interrupt number
87d25536e261 dt-bindings: gpio: gpio-xilinx: Mark clocks as required property
7d9619784d4c dt-bindings: dmaengine: Add dma multiplexer for CV18XX/SG200X series SoC
949eaeb96a7b dt-bindings: clock: Add RaspberryPi RP1 clock bindings
d37ab6d3737b media: dt-bindings: media: renesas,vsp1: Document RZ/V2N SoC
c999498941a3 media: dt-bindings: media: renesas,fcp: Document RZ/V2N SoC
17e3b9892493 dt-bindings: phy: Add the M31 based eUSB2 PHY bindings
bc371e92d06e dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add SM8750 to QMP PHY
335d8d9ff6e9 dt-bindings: phy: renesas,usb2-phy: Document RZ/V2N SoC support
b6272058c2ee dt-bindings: phy: Convert Marvell MVEBU PHYs to DT schema
3e6965af3886 dt-bindings: phy: Convert marvell,armada-380-comphy to DT schema
87f3979709df dt-bindings: phy: Convert ti,keystone-usbphy to DT schema
09d69b51d927 dt-bindings: phy: Convert ti,dm816x-usb-phy to DT schema
844acf2c998f dt-bindings: phy: Convert st,spear1310-miphy to DT schema
4bce5936846a dt-bindings: phy: Convert qca,ar7100-usb-phy to DT schema
ac5ef382d934 dt-bindings: phy: Convert motorola,mapphone-mdm6600 to DT schema
85e480d5fc84 dt-bindings: phy: Convert motorola,cpcap-usb-phy to DT schema
fe17837b8d9b dt-bindings: phy: Convert marvell,mmp2-usb-phy to DT schema
b126307f27dc dt-bindings: phy: Convert marvell,comphy-cp110 to DT schema
9bcbff3bd9d7 dt-bindings: phy: Convert marvell,berlin2-usb-phy to DT schema
0c82a7e3b08d dt-bindings: phy: Convert marvell,berlin2-sata-phy to DT schema
dc17572110df dt-bindings: phy: Convert lantiq,ase-usb2-phy to DT schema
b10685a3371a dt-bindings: phy: Convert img,pistachio-usb-phy to DT schema
408705e5a1ad dt-bindings: phy: Convert hisilicon,inno-usb2-phy to DT schema
727e67e12857 dt-bindings: phy: Convert hisilicon,hi6220-usb-phy to DT schema
1723ae98c198 dt-bindings: phy: Convert hisilicon,hix5hd2-sata-phy to DT schema
1dc8e1978b35 dt-bindings: phy: Convert brcm,sr-pcie-phy to DT schema
7cff50883378 dt-bindings: phy: Convert brcm,ns2-drd-phy to DT schema
93a177a9b1e9 dt-bindings: phy: Convert apm,xgene-phy to DT schema
55252481b031 dt-bindings: phy: samsung,mipi-video-phy: document exynos7870 MIPI phy
2b521ba242d3 dt-bindings: phy: samsung,usb3-drd-phy: Add exynos990 compatible
249194d3dfb7 dt-bindings: pci: Add Sophgo SG2044 PCIe host
88df97c059e6 arm64: dts: freescale: imx93-tqma9352: Remove unneeded GPIO hog
a73858b8f497 arm64: dts: freescale: imx93-tqma9352: Limit BUCK2 to 600mV
74609a3fb4f4 dt-bindings: net: renesas-gbeth: Add support for RZ/G3E (R9A09G047) SoC
ecbe9ffa03ea ARM: dts: imx7s-warp: Improve the Wifi description
b3cead4032a5 ARM: dts: imx7s-warp: Improve the Bluetooth description
d826170f23a8 arm64: dts: exynosautov920: add CMU_HSI2 clock DT nodes
892f6f8d54b1 dt-bindings: clock: exynosautov920: add hsi2 clock definitions
fc73efed87ea dt-bindings: clock: exynosautov920: sort clock definitions
a698889e0340 ARM: dts: vt8500: Add L2 cache controller on WM8850/WM8950
cc0cd2f62fba ARM: dts: vt8500: Fix the unit address of the VT8500 LCD controller
ba6b8fbd8f10 ARM: dts: vt8500: Use generic node name for the SD/MMC controller
4c2bee5a57aa ARM: dts: vt8500: Move memory nodes to board dts and fix addr/size
618840988c7d ARM: dts: vt8500: Add node address and reg in CPU nodes
638f4396159a arm64: dts: exynos: add initial support for Samsung Galaxy S22+
cda58ddae028 arm64: dts: exynos: add initial support for exynos2200 SoC
ba78ccfb85f1 dt-bindings: arm: samsung: document g0s board binding
928cf7b4db3d ASoC: dt-bindings: mt8192-afe-pcm: Allow specifying reserved memory region
7f82922e67a2 ASoC: dt-bindings: mt8186-afe-pcm: Allow specifying reserved memory region
7b4cfbf9cb43 ASoC: dt-bindings: mt8173-afe-pcm: Allow specifying reserved memory region
76cd57f4055e ASoC: dt-bindings: mt8173-afe-pcm: Add power domain
e8ba4d8d36e5 ASoC: dt-bindings: Convert MT8173 AFE binding to dt-schema
f9ab470b7216 ARM: dts: qcom: msm8974-sony-xperia-rhine: Add alias for mmc0 & mmc1
9a441a5e784a ARM: dts: qcom: msm8974-hammerhead: Add alias for mmc0
ab2a3af6930a ARM: dts: qcom: msm8974-oneplus-bacon: Add alias for mmc0
13bab98ae230 ARM: dts: qcom: Add initial support for Sony Xperia Z Ultra (togari)
830c3bb76487 dt-bindings: arm: qcom: Add Sony Xperia Z Ultra (togari)
65ca47d47e86 ARM: dts: qcom: msm8974-sony-xperia-rhine: Move camera buttons to amami & honami
658cf0eaccff ARM: dts: qcom: msm8974-sony-xperia-rhine: Enable USB charging
23712e8754a3 arm64: dts: qcom: x1p42100: Fix thermal sensor configuration
aa97b937223a arm64: dts: qcom: sm8650: remove unused reg
822ac62b57ee arm64: dts: qcom: sm8750-qrd: Add sound (speakers, headset codec, dmics)
6a7ae2443826 arm64: dts: qcom: sm8750-mtp: Add sound (speakers, headset codec, dmics)
6f4d1bf469a1 arm64: dts: qcom: sm8750: Add Soundwire nodes
dd1d6dea4bb1 arm64: dts: qcom: x1e80100-hp-x14: amend order of nodes
9eeffdf93012 arm64: dts: qcom: x1e80100-hp-x14: remove unused i2c buses
87e775221157 arm64: dts: qcom: x1e80100-hp-x14: add usb-1-ss1-sbu-mux
22c3ee0b6723 dt-bindings: clock: Convert brcm,bcm63xx-clocks to DT schema
5959214b449a dt-bindings: clock: ti: add ti,autoidle.yaml reference
be74285c8495 dt-bindings: clock: ti: Convert fixed-factor-clock to yaml
795aeb632bcf dt-bindings: clock: ti: Convert autoidle binding to yaml
81cf11f33bdc ARM: dts: qcom: msm8960: use macros for interrupts
b8acdc312e48 spi: dt-bindings: mediatek,spi-mt65xx: Add support for MT6991/MT8196 SPI
b27e030826ed arm64: dts: mediatek: mt8395-genio-1200-evk: Enable Audio DSP and sound card
f1bdce636304 arm64: dts: mediatek: mt8192-asurada: Reserve memory for audio frontend
4c6cbd4937e7 arm64: dts: mediatek: mt8186-corsola: Reserve memory for audio frontend
0bbc5f383e6f arm64: dts: mediatek: mt8183-kukui: Reserve memory for audio frontend
459a4687b473 arm64: dts: mediatek: mt8173: Reserve memory for audio frontend
bcfa2c4f812f arm64: dts: imx8mp: Enable gpu passive throttling
4bee3e87ff2b arm64: dts: imx95: correct i3c node in imx95
f4253a424db7 Merge drm/drm-next into drm-misc-next
67be89b70d90 ARM: dts: aspeed: Add device tree for Nvidia's GB200NVL BMC
b38511e07580 dt-bindings: arm: aspeed: add Nvidia's GB200NVL BMC
c9ef33bddfd0 ARM: dts: aspeed: catalina: Enable MCTP support for NIC management
5bea70972e95 ARM: dts: aspeed: catalina: Update CBC FRU EEPROM I2C bus and address
5340d8724879 ARM: dts: aspeed: catalina: Enable multi-master on additional I2C buses
917b91ebae04 ARM: dts: aspeed: catalina: Remove INA238 and INA230 nodes
0872eae37927 ARM: dts: aspeed: catalina: Add second source HSC node support
30621d6376f4 ARM: dts: aspeed: catalina: Add second source fan controller support
23a5060692bc ARM: dts: aspeed: catalina: Add fan controller support
c9680d1b9907 ARM: dts: aspeed: catalina: Add MP5990 power sensor node
43d4786d6d8d ARM: dts: aspeed: catalina: Add Front IO board remote thermal sensor
084d47454493 ARM: dts: aspeed: catalina: Add IO Mezz board thermal sensor nodes
5038976dd89a ARM: dts: aspeed: system1: Disable gpio pull down
a50225982fba ARM: dts: aspeed: system1: Mark GPIO line high/low
50fd31ea857a ARM: dts: aspeed: system1: Remove VRs max8952
907d0214bef2 ARM: dts: aspeed: system1: Update LED gpio name
7a218d1c5197 ARM: dts: aspeed: system1: Reduce sgpio speed
9d816c14e2c1 ARM: dts: aspeed: system1: Add GPIO line name
b78c314eda75 ARM: dts: aspeed: system1: Add IPMB device
4dbb7162e72d dt-bindings: ipmi: Add binding for IPMB device
58cf50957126 ARM: dts: aspeed: bletchley: remove unused ethernet-phy node
e2d77b735d13 ARM: dts: aspeed: Align GPIO hog name with bindings
7827afbe3914 ARM: dts: aspeed: Remove swift machine
a888a5efe1c2 dt-bindings: remoteproc: qcom,sm8150-pas: Document QCS615 remoteproc
69d13fabcaaf arm64: dts: qcom: Add camera clock controller for sc8180x
a9d6cb6c0fbe Merge branch '20250512-sc8180x-camcc-support-v4-2-8fb1d3265f52@quicinc.com' into arm64-for-6.17
531ad909582b Merge branch '20250512-sc8180x-camcc-support-v4-2-8fb1d3265f52@quicinc.com' into clk-for-6.17
db7047b5c166 dt-bindings: clock: Add Qualcomm SC8180X Camera clock controller
85694e07d677 dt-bindings: clock: qcom: Add missing bindings on gcc-sc8180x
0b4116099b60 arm64: dts: qcom: sm6350: Add video clock controller
c685c753be9d arm64: dts: qcom: qcs8300-ride: enable video
b80f475be983 arm64: dts: qcom: qcs8300: add video node
e08e7b76aa1e dt-bindings: clock: qcom,sm8450-camcc: Move sc8280xp camcc to sa8775p camcc
4d05467482c8 dt-bindings: clock: qcom,sm8450-camcc: Allow to specify two power domains
895f435e10e9 dt-bindings: clock: qcom,sm8450-videocc: Add MXC power domain
bc791dcd8483 arm64: dts: qcom: sa8775p-ride: add anx7625 DSI to DP bridge nodes
4098c5a2bf59 arm64: dts: qcom: sa8775p: add Display Serial Interface device nodes
0e31d061c9c0 arm64: dts: broadcom: northstar2: Drop GIC V2M "interrupt-parent"
ea1885c9fd30 arm64: dts: qcom: x1e80100: Add missing 'global' PCIe interrupt
14ad59d4559f arm64: dts: qcom: sar2130p: Add 'global' PCIe interrupt
0a47f45ad43a arm64: dts: qcom: sc8180x: Add 'global' PCIe interrupt
94ff2d21c06d arm64: dts: qcom: ipq6018: Add missing MSI and 'global' IRQs
420964cc89e0 arm64: dts: qcom: ipq8074: Add missing MSI and 'global' IRQs
6d1521f0fc17 arm64: dts: qcom: msm8998: Add missing MSI and 'global' IRQs
9da0fdcbce25 arm64: dts: qcom: msm8996: Add missing MSI SPI interrupts
275a1383fcdf arm64: dts: qcom: sdm845: Add missing MSI and 'global' IRQs
22e63cea7b60 arm64: dts: qcom: sc7280: Add 'global' PCIe interrupt
28bef8454e3d arm64: dts: qcom: sa8775p: Add 'global' PCIe interrupt
c18c33f1c365 arm64: dts: qcom: sm8350: Add 'global' PCIe interrupt
30dd461fe360 arm64: dts: qcom: sm8250: Add 'global' PCIe interrupt
5c8dac48ba74 arm64: dts: qcom: sm8150: Add 'global' PCIe interrupt
bb38e4d566a8 ARM: dts: qcom: Align wifi node name with bindings
0b05f902b191 dt-bindings: pinctrl: rockchip: increase max amount of device functions
e09ea8c6b2f4 dt-bindings: ili9881c: Document 7" Raspberry Pi 720x1280
d8786b38477d dt-bindings: pinctl: amlogic,pinctrl-a4: Add compatible string for S7/S7D/S6
ac3bc668fd07 dt-bindings: display: st7701: Add Winstar wf40eswaa6mnn0 panel
998a197154ea dt-bindings: display: visionox-rm69299: document new compatible string
8f0d68ed872a arm64: dts: rockchip: convert rk3562 to their dt-binding constants
509e0c2fabe8 arm64: dts: rockchip: Add Luckfox Omni3576 Board support
28cf288916a0 dt-bindings: arm: rockchip: Add Luckfox Omni3576 and Core3576 bindings
9c61e9d15269 dt-bindings: vendor-prefixes: Add luckfox prefix
2ab598cbc1ba arm64: dts: rockchip: Remove workaround that prevented Turing RK1 GPU power regulator control
68888e37d9fb arm64: dts: rockchip: add overlay for RockPro64 screen
f1ab980e061c Revert "dt-bindings: clock: renesas,rzg2l-cpg: Update #power-domain-cells = <1> for RZ/G3S"
d5b5838ba286 dt-bindings: clock: rzg2l: Drop power domain IDs
eb2482bd3a71 Merge tag 'renesas-r9a09g077-dt-binding-defs-tag' into renesas-clk-for-v6.17
c80e0b36f0b1 dt-bindings: memory-controllers: convert arm,pl172.txt to yaml format
6cf75590b12d dt-bindings: soc: samsung: exynos-pmu: Constrain google,pmu-intr-gen-syscon
9505fc5dd862 dt-bindings: gpio: convert nxp,lpc1850-gpio.txt to yaml format
54fb0929cc99 dt-bindings: gpio: convert gpio-74xx-mmio.txt to yaml format
a3e905523cd5 dt-bindings: gpio: convert gpio-pisosr.txt to yaml format
1040128bb18a arm64: dts: renesas: r9a09g057: Add USB2.0 support
a2a9c525081e arm64: dts: renesas: r9a09g047e57-smarc: Enable CRU, CSI support
21b5186a7f3e arm64: dts: renesas: renesas-smarc2: Enable I2C0 node
313bfdd58194 arm64: dts: renesas: r9a09g047e57-smarc: Add I2C0 pincontrol
c4a0b4786c56 arm64: dts: renesas: r9a09g047: Add CRU, CSI2 nodes
942d44d91446 arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Enable Mali-G31 GPU
df4a18da3850 arm64: dts: renesas: r9a09g056: Add Mali-G31 GPU node
97126d793150 arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Enable WDT1
aa49b82d292a arm64: dts: renesas: r9a09g056: Add WDT0-WDT3 nodes
0fd2a920a15b arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Enable RIIC controllers
a9e1b1c51a2e arm64: dts: renesas: r9a09g056: Add RIIC controllers
8620f503d15b arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Enable OSTM timers on RZ/V2N EVK
7edd14aa50b6 arm64: dts: renesas: r9a09g056: Add OSTM0-OSTM7 nodes
694ebe54d549 arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Enable GBETH
4b6db87a7c10 arm64: dts: renesas: r9a09g056: Add GBETH nodes
46869466a047 arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable GBETH
7fd2951fbfb5 arm64: dts: renesas: r9a09g057: Add GBETH nodes
d2a7f6061328 arm64: dts: renesas: rzg3e-smarc-som: Enable serial NOR FLASH
ca067cd873d2 arm64: dts: renesas: r9a09g047: Add XSPI node
6afb981042a9 dt-bindings: soc: renesas: Document RZ/V2H EVK board part number
47e339df4236 arm64: dts: qcom: sdm850-lenovo-yoga-c630: enable sensors DSP
3eb07ee1199c arm64: dts: qcom: x1e80100-dell-xps13-9345: Enable fingerprint sensor
2369c0a8d811 spi: spi-fsl-dspi: DSPI support for NXP S32G
519d961ebee1 ARM: dts: bcm958625-meraki-mx6x: Use #pwm-cells = <3>
364569526281 ARM: dts: bcm63178: Add BCMBCA peripherals
a8aa7adbe86e ARM: dts: bcm63148: Add BCMBCA peripherals
72b55d5589da ARM: dts: bcm63138: Add BCMBCA peripherals
40f65eebdc16 ARM: dts: bcm6878: Add BCMBCA peripherals
4db474ab76b1 ARM: dts: bcm6855: Add BCMBCA peripherals
c1fa2261ce24 ARM: dts: bcm6846: Add interrupt to RNG
cfb95bca76c8 dt-bindings: rng: r200: Add interrupt property
8f5c0556e851 ARM: dts: bcm6878: Correct UART0 IRQ number
756cdb1f3650 arm64: dts: broadcom: Add overlay for RP1 device
f3e865c8518c arm64: dts: broadcom: Add board DTS for Rpi5 which includes RP1 node
f07526de4e4d arm64: dts: bcm2712: Add external clock for RP1 chipset on Rpi5
82e6696b5c5c arm64: dts: rp1: Add support for RaspberryPi's RP1 device
e4470510ff94 dt-bindings: misc: Add device specific bindings for RaspberryPi RP1
36ec48d1dd05 dt-bindings: pinctrl: Add RaspberryPi RP1 gpio/pinctrl/pinmux bindings
5bae359ddb89 dt-bindings: clock: Add RaspberryPi RP1 clock bindings
7311a83b9240 ARM64: dts: bcm63158: Add BCMBCA peripherals
c820a00e2552 ARM64: dts: bcm6858: Add BCMBCA peripherals
2a6681b31935 ARM64: dts: bcm6856: Add BCMBCA peripherals
f6d523dc2308 ARM64: dts: bcm4908: Add BCMBCA peripherals
cfb6a63d41fe riscv: dts: spacemit: enable eMMC for K1 SoC
274a9a682e34 dt-bindings: display: convert himax,hx8357d.txt to yaml format
99b29e7ccd61 dt-bindings: display: arm,pl11x: Allow resets property
e13ecc320126 dt-bindings: display: convert sitronix,st7586 to YAML
1e04213799d5 dt-bindings: lcdif: add lcd panel related property for imx28
11b1b6e24edd dt-bindings: soc: Add fsl,imx23-digctl.yaml for i.MX23 and i.MX28
9c5a32bcb7b7 ASoC: Add Richtek RTQ9124 support
d57db601e6b0 ASoC: tas571x: add support for tas5753
caa03026f5ef ASoC: codecs: wcd93xx: Few simplifications of code and
baa572592b2c regulator: dt-bindings: rpi-panel: Add regulator for 7" Raspberry Pi 720x1280
504cdf1cd54f ASoC: dt-bindings: rt9123: Append RTQ9124 description
3174278d792f arm64: dts: rockchip: drop touch panel display from rockpro64
873fbebb9c18 arm64: dts: rockchip: Use standard PHY reset properties for RK3576 ArmSoM Sige5
1222a7f24b9f arm64: dts: rockchip: add ROCK 5T device tree
0f79e5a028f1 arm64: dts: rockchip: move common ROCK 5B/+ nodes into own tree
0562055bfc3a arm64: dts: rockchip: rename rk3588-rock-5b.dtsi
9c200495868c dt-bindings: arm: rockchip: add RADXA ROCK 5T
7bcc6969adbc arm64: dts: rockchip: Add spi nodes for RK3528
45b18dd32d6a arm64: dts: rockchip: add DTs for Sakura Pi RK3308B
bfca6dc90f2b dt-bindings: arm: rockchip: Add Sakura Pi RK3308B
6d2e9d5b069d dt-bindings: vendor-prefixes: Add SakuraPi prefix
99295ef16891 arm64: dts: rockchip: Fix cover detection on PineNote
c13e5de9b3a4 arm64: dts: rockchip: Document unused device on i2c1
718ca7a2529e arm64: dts: rockchip: support Ethernet Switch adapter for RK3588 Jaguar
f6310c860d5d arm64: dts: rockchip: Add DSI panel support for gameforce-ace
e53018a1ec5b dt-bindings: iio: adc: adi,ad7606: add gain calibration support
14dc2df77a84 dt-bindings: iio: gyroscope: invensense,itg3200: add binding
2f573d87f578 dt-bindings: iio: adc: st,spear600-adc: txt to yaml format conversion.
ed7d4c99dbc3 dt-bindings: iio: adc: add ad4080
61b12aa8b66f dt-bindings: iio: adc: add ad408x axi variant
05db8b79a0b6 arm64: dts: qcom: sm8750: Trivial stray lines removal
1576a89b79e8 spi: dt-bindings: mxs-spi: allow clocks properpty
feffdd266d46 dt-bindings: spi: dspi: Add S32G support
d87d1c2d9447 dt-bindings: regulator: add pca9450: Add regulator-allowed-modes
fa5cfb1fe890 ASoC: dt-bindings: covert mxs-audio-sgtl5000.txt to yaml format
1a0738c10fdd ASoC: dt-bindings: tas57xx: add tas5753 compatibility
90f889cf60f4 ASoC: dt-bindings: qcom,wcd939x: Document missing VDD_PX supply
36269efd9ee8 dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c
8cd51ffc1367 dt-bindings: vendor-prefixes: Add prefix for Huiling
534b0f65825d dt-bindings: display: simple: add AUO P238HAN01 panel
158a6f7c3376 Merge drm-next-2025-05-28 into drm-misc-next
af3871ba3627 dt-bindings: allwinner: add H616 DE33 mixer binding
2124a6a99b66 dt-bindings: clock: renesas,cpg-mssr: Document RZ/T2H support
f5efe4f4902d dt-bindings: display: renesas,rzg2l-du: Add support for RZ/V2H(P) SoC
c625b4924743 dt-bindings: display: panel: Document Renesas R69328 based DSI panel
36ea865fae13 dt-bindings: display: panel: Document Renesas R61307 based DSI panel
0d28beee9809 dt-bindings: display: ti,am65x-dss: Add support for AM62L DSS
a0e2388af079 dt-bindings: gpu: mali-utgard: Add Rockchip RK3528 compatible
ac5d1cdc0275 dt-bindings: display: imx: Add i.MX8qxp Display Controller
963333f8371f dt-bindings: interrupt-controller: Add i.MX8qxp Display Controller interrupt controller
2889c661fb91 dt-bindings: display: imx: Add i.MX8qxp Display Controller command sequencer
57051a9f0a4c dt-bindings: display: imx: Add i.MX8qxp Display Controller AXI performance counter
cf04f0c00267 dt-bindings: display: imx: Add i.MX8qxp Display Controller pixel engine
0940d6bd8421 dt-bindings: display: imx: Add i.MX8qxp Display Controller display engine
6454e207cfe6 dt-bindings: display: imx: Add i.MX8qxp Display Controller blit engine
8300a1f4ca66 dt-bindings: display: imx: Add i.MX8qxp Display Controller processing units

git-subtree-dir: dts/upstream
git-subtree-split: 4d52919c55f45d027062baf25ebe1c24730699bd

1349 files changed:
Bindings/arm/amlogic.yaml
Bindings/arm/arm,trace-buffer-extension.yaml
Bindings/arm/aspeed/aspeed.yaml
Bindings/arm/axiado.yaml [new file with mode: 0644]
Bindings/arm/cix.yaml [new file with mode: 0644]
Bindings/arm/cpus.yaml
Bindings/arm/freescale/fsl,vf610-mscm-ir.txt [deleted file]
Bindings/arm/fsl.yaml
Bindings/arm/mediatek.yaml
Bindings/arm/mrvl/mrvl.yaml
Bindings/arm/qcom.yaml
Bindings/arm/rockchip.yaml
Bindings/arm/rockchip/pmu.yaml
Bindings/arm/samsung/samsung-boards.yaml
Bindings/arm/stm32/st,mlahb.yaml
Bindings/arm/stm32/stm32.yaml
Bindings/arm/sunxi.yaml
Bindings/arm/tegra.yaml
Bindings/arm/tegra/nvidia,tegra186-pmc.yaml
Bindings/arm/ti/k3.yaml
Bindings/arm/ti/omap.yaml
Bindings/bus/fsl,imx8mp-aipstz.yaml [new file with mode: 0644]
Bindings/bus/fsl,imx8qxp-pixel-link-msi-bus.yaml
Bindings/clock/alphascale,acc.txt [deleted file]
Bindings/clock/alphascale,asm9260-clock-controller.yaml [new file with mode: 0644]
Bindings/clock/apm,xgene-device-clock.yaml [new file with mode: 0644]
Bindings/clock/apm,xgene-socpll-clock.yaml [new file with mode: 0644]
Bindings/clock/armada3700-periph-clock.txt [deleted file]
Bindings/clock/armada3700-tbg-clock.txt [deleted file]
Bindings/clock/artpec6.txt [deleted file]
Bindings/clock/axis,artpec6-clkctrl.yaml [new file with mode: 0644]
Bindings/clock/brcm,bcm2835-cprman.txt [deleted file]
Bindings/clock/brcm,bcm2835-cprman.yaml [new file with mode: 0644]
Bindings/clock/brcm,bcm53573-ilp.txt [deleted file]
Bindings/clock/brcm,bcm53573-ilp.yaml [new file with mode: 0644]
Bindings/clock/brcm,bcm63xx-clocks.txt [deleted file]
Bindings/clock/brcm,bcm63xx-clocks.yaml [new file with mode: 0644]
Bindings/clock/cirrus,ep7209-clk.yaml [new file with mode: 0644]
Bindings/clock/clps711x-clock.txt [deleted file]
Bindings/clock/dove-divider-clock.txt [deleted file]
Bindings/clock/img,pistachio-clk.yaml [new file with mode: 0644]
Bindings/clock/lpc1850-ccu.txt [deleted file]
Bindings/clock/lpc1850-cgu.txt [deleted file]
Bindings/clock/lpc1850-creg-clk.txt [deleted file]
Bindings/clock/lsi,axm5516-clks.txt [deleted file]
Bindings/clock/lsi,axm5516-clks.yaml [new file with mode: 0644]
Bindings/clock/lsi,nspire-cx-clock.yaml [new file with mode: 0644]
Bindings/clock/marvell,armada-370-corediv-clock.yaml [new file with mode: 0644]
Bindings/clock/marvell,armada-3700-periph-clock.yaml [new file with mode: 0644]
Bindings/clock/marvell,armada-3700-tbg-clock.yaml [new file with mode: 0644]
Bindings/clock/marvell,armada-xp-cpu-clock.yaml [new file with mode: 0644]
Bindings/clock/marvell,berlin.txt [deleted file]
Bindings/clock/marvell,berlin2-clk.yaml [new file with mode: 0644]
Bindings/clock/marvell,dove-divider-clock.yaml [new file with mode: 0644]
Bindings/clock/marvell,mvebu-core-clock.yaml [new file with mode: 0644]
Bindings/clock/marvell-armada-370-gating-clock.yaml [new file with mode: 0644]
Bindings/clock/maxim,max9485.txt [deleted file]
Bindings/clock/maxim,max9485.yaml [new file with mode: 0644]
Bindings/clock/mediatek,mtmips-sysc.yaml
Bindings/clock/microchip,pic32.txt [deleted file]
Bindings/clock/microchip,pic32mzda-clk.yaml [new file with mode: 0644]
Bindings/clock/moxa,moxart-clock.txt [deleted file]
Bindings/clock/moxa,moxart-clock.yaml [new file with mode: 0644]
Bindings/clock/mvebu-core-clock.txt [deleted file]
Bindings/clock/mvebu-corediv-clock.txt [deleted file]
Bindings/clock/mvebu-cpu-clock.txt [deleted file]
Bindings/clock/mvebu-gated-clock.txt [deleted file]
Bindings/clock/nspire-clock.txt [deleted file]
Bindings/clock/nuvoton,npcm750-clk.txt [deleted file]
Bindings/clock/nuvoton,npcm750-clk.yaml [new file with mode: 0644]
Bindings/clock/nxp,imx95-blk-ctl.yaml
Bindings/clock/nxp,lpc1850-ccu.yaml [new file with mode: 0644]
Bindings/clock/nxp,lpc1850-cgu.yaml [new file with mode: 0644]
Bindings/clock/pistachio-clock.txt [deleted file]
Bindings/clock/qca,ath79-pll.txt [deleted file]
Bindings/clock/qca,ath79-pll.yaml [new file with mode: 0644]
Bindings/clock/qcom,camcc-sm8250.yaml
Bindings/clock/qcom,dispcc-sm6125.yaml
Bindings/clock/qcom,dispcc-sm6350.yaml
Bindings/clock/qcom,gcc-ipq4019.yaml
Bindings/clock/qcom,gcc-ipq8074.yaml
Bindings/clock/qcom,gcc-msm8976.yaml
Bindings/clock/qcom,gcc-msm8994.yaml
Bindings/clock/qcom,gcc-msm8996.yaml
Bindings/clock/qcom,gcc-msm8998.yaml
Bindings/clock/qcom,gcc-qcm2290.yaml
Bindings/clock/qcom,gcc-qcs404.yaml
Bindings/clock/qcom,gcc-sc7180.yaml
Bindings/clock/qcom,gcc-sc7280.yaml
Bindings/clock/qcom,gcc-sc8180x.yaml
Bindings/clock/qcom,gcc-sc8280xp.yaml
Bindings/clock/qcom,gcc-sdm845.yaml
Bindings/clock/qcom,gcc-sdx55.yaml
Bindings/clock/qcom,gcc-sdx65.yaml
Bindings/clock/qcom,gcc-sm6115.yaml
Bindings/clock/qcom,gcc-sm6125.yaml
Bindings/clock/qcom,gcc-sm6350.yaml
Bindings/clock/qcom,gcc-sm8150.yaml
Bindings/clock/qcom,gcc-sm8250.yaml
Bindings/clock/qcom,gcc-sm8350.yaml
Bindings/clock/qcom,gcc-sm8450.yaml
Bindings/clock/qcom,ipq9574-cmn-pll.yaml
Bindings/clock/qcom,krait-cc.txt [deleted file]
Bindings/clock/qcom,krait-cc.yaml [new file with mode: 0644]
Bindings/clock/qcom,milos-camcc.yaml [new file with mode: 0644]
Bindings/clock/qcom,milos-dispcc.yaml [new file with mode: 0644]
Bindings/clock/qcom,milos-gcc.yaml [new file with mode: 0644]
Bindings/clock/qcom,milos-videocc.yaml [new file with mode: 0644]
Bindings/clock/qcom,mmcc.yaml
Bindings/clock/qcom,msm8998-gpucc.yaml
Bindings/clock/qcom,qcm2290-dispcc.yaml
Bindings/clock/qcom,qcs615-dispcc.yaml [new file with mode: 0644]
Bindings/clock/qcom,qcs615-gpucc.yaml [new file with mode: 0644]
Bindings/clock/qcom,qcs615-videocc.yaml [new file with mode: 0644]
Bindings/clock/qcom,qdu1000-ecpricc.yaml
Bindings/clock/qcom,qdu1000-gcc.yaml
Bindings/clock/qcom,rpmhcc.yaml
Bindings/clock/qcom,sa8775p-camcc.yaml
Bindings/clock/qcom,sa8775p-gcc.yaml
Bindings/clock/qcom,sc7180-camcc.yaml
Bindings/clock/qcom,sc7180-dispcc.yaml
Bindings/clock/qcom,sc7180-lpasscorecc.yaml
Bindings/clock/qcom,sc7280-camcc.yaml
Bindings/clock/qcom,sc7280-dispcc.yaml
Bindings/clock/qcom,sc7280-lpasscc.yaml
Bindings/clock/qcom,sc8180x-camcc.yaml [new file with mode: 0644]
Bindings/clock/qcom,sdm845-camcc.yaml
Bindings/clock/qcom,sdm845-dispcc.yaml
Bindings/clock/qcom,sdm845-lpasscc.yaml
Bindings/clock/qcom,sdx75-gcc.yaml
Bindings/clock/qcom,sm4450-camcc.yaml
Bindings/clock/qcom,sm4450-dispcc.yaml
Bindings/clock/qcom,sm4450-gcc.yaml
Bindings/clock/qcom,sm6115-dispcc.yaml
Bindings/clock/qcom,sm6115-gpucc.yaml
Bindings/clock/qcom,sm6125-gpucc.yaml
Bindings/clock/qcom,sm6350-camcc.yaml
Bindings/clock/qcom,sm6375-dispcc.yaml
Bindings/clock/qcom,sm6375-gcc.yaml
Bindings/clock/qcom,sm6375-gpucc.yaml
Bindings/clock/qcom,sm7150-camcc.yaml
Bindings/clock/qcom,sm7150-dispcc.yaml
Bindings/clock/qcom,sm7150-gcc.yaml
Bindings/clock/qcom,sm7150-videocc.yaml
Bindings/clock/qcom,sm8150-camcc.yaml
Bindings/clock/qcom,sm8450-camcc.yaml
Bindings/clock/qcom,sm8450-dispcc.yaml
Bindings/clock/qcom,sm8450-gpucc.yaml
Bindings/clock/qcom,sm8450-videocc.yaml
Bindings/clock/qcom,sm8550-gcc.yaml
Bindings/clock/qcom,sm8550-tcsr.yaml
Bindings/clock/qcom,sm8650-gcc.yaml
Bindings/clock/qcom,x1e80100-gcc.yaml
Bindings/clock/raspberrypi,rp1-clocks.yaml [new file with mode: 0644]
Bindings/clock/renesas,cpg-mssr.yaml
Bindings/clock/renesas,rzg2l-cpg.yaml
Bindings/clock/samsung,exynosautov920-clock.yaml
Bindings/clock/ti/autoidle.txt [deleted file]
Bindings/clock/ti/fixed-factor-clock.txt [deleted file]
Bindings/clock/ti/ti,autoidle.yaml [new file with mode: 0644]
Bindings/clock/ti/ti,divider-clock.yaml
Bindings/clock/ti/ti,fixed-factor-clock.yaml [new file with mode: 0644]
Bindings/clock/xgene.txt [deleted file]
Bindings/crypto/atmel,at91sam9g46-aes.yaml
Bindings/crypto/atmel,at91sam9g46-sha.yaml
Bindings/crypto/atmel,at91sam9g46-tdes.yaml
Bindings/crypto/fsl,sec-v4.0.yaml
Bindings/crypto/omap-aes.txt [deleted file]
Bindings/crypto/omap-des.txt [deleted file]
Bindings/crypto/ti,omap2-aes.yaml [new file with mode: 0644]
Bindings/crypto/ti,omap4-des.yaml [new file with mode: 0644]
Bindings/display/allwinner,sun8i-a83t-de2-mixer.yaml
Bindings/display/arm,pl11x.yaml
Bindings/display/fsl,dcu.txt [deleted file]
Bindings/display/fsl,lcdif.yaml
Bindings/display/fsl,ls1021a-dcu.yaml [new file with mode: 0644]
Bindings/display/himax,hx8357.yaml [new file with mode: 0644]
Bindings/display/himax,hx8357d.txt [deleted file]
Bindings/display/imx/fsl,imx8qxp-dc-axi-performance-counter.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-blit-engine.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-blitblend.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-clut.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-command-sequencer.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-constframe.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-display-engine.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-dither.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-extdst.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-fetchunit.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-filter.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-framegen.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-gammacor.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-layerblend.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-matrix.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-pixel-engine.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-rop.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-safety.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-scaling-engine.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-signature.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-store.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc-tcon.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx8qxp-dc.yaml [new file with mode: 0644]
Bindings/display/mediatek/mediatek,dp.yaml
Bindings/display/msm/dp-controller.yaml
Bindings/display/msm/dsi-controller-main.yaml
Bindings/display/msm/dsi-phy-7nm.yaml
Bindings/display/msm/qcom,mdp5.yaml
Bindings/display/msm/qcom,sm8650-dpu.yaml
Bindings/display/msm/qcom,sm8750-mdss.yaml [new file with mode: 0644]
Bindings/display/panel/himax,hx83112b.yaml [new file with mode: 0644]
Bindings/display/panel/himax,hx8394.yaml
Bindings/display/panel/ilitek,ili9881c.yaml
Bindings/display/panel/panel-simple.yaml
Bindings/display/panel/raydium,rm67200.yaml
Bindings/display/panel/renesas,r61307.yaml [new file with mode: 0644]
Bindings/display/panel/renesas,r69328.yaml [new file with mode: 0644]
Bindings/display/panel/samsung,atna33xc20.yaml
Bindings/display/panel/sitronix,st7701.yaml
Bindings/display/panel/visionox,rm69299.yaml
Bindings/display/renesas,rzg2l-du.yaml
Bindings/display/rockchip/rockchip,dw-mipi-dsi.yaml
Bindings/display/rockchip/rockchip-vop2.yaml
Bindings/display/sitronix,st7567.yaml [new file with mode: 0644]
Bindings/display/sitronix,st7586.txt [deleted file]
Bindings/display/sitronix,st7586.yaml [new file with mode: 0644]
Bindings/display/sprd/sprd,sharkl3-dpu.yaml
Bindings/display/sprd/sprd,sharkl3-dsi-host.yaml
Bindings/display/ti/ti,am625-oldi.yaml [new file with mode: 0644]
Bindings/display/ti/ti,am65x-dss.yaml
Bindings/dma/brcm,iproc-sba.txt [deleted file]
Bindings/dma/brcm,iproc-sba.yaml [new file with mode: 0644]
Bindings/dma/fsl,mxs-dma.yaml
Bindings/dma/lpc1850-dmamux.txt [deleted file]
Bindings/dma/marvell,orion-xor.yaml [new file with mode: 0644]
Bindings/dma/mv-xor.txt [deleted file]
Bindings/dma/nvidia,tegra186-gpc-dma.yaml
Bindings/dma/qcom,bam-dma.yaml
Bindings/dma/qcom,gpi.yaml
Bindings/dma/sophgo,cv1800b-dmamux.yaml [new file with mode: 0644]
Bindings/dpll/dpll-device.yaml [new file with mode: 0644]
Bindings/dpll/dpll-pin.yaml [new file with mode: 0644]
Bindings/dpll/microchip,zl30731.yaml [new file with mode: 0644]
Bindings/dsp/fsl,dsp.yaml
Bindings/dsp/mediatek,mt8195-dsp.yaml
Bindings/firmware/intel,ixp4xx-network-processing-engine.yaml
Bindings/firmware/nvidia,tegra186-bpmp.yaml
Bindings/firmware/qcom,scm.yaml
Bindings/firmware/thead,th1520-aon.yaml
Bindings/fpga/fpga-region.yaml
Bindings/fpga/xlnx,versal-fpga.yaml
Bindings/gnss/u-blox,neo-6m.yaml
Bindings/gpio/8xxx_gpio.txt [deleted file]
Bindings/gpio/abilis,tb10x-gpio.txt [deleted file]
Bindings/gpio/abilis,tb10x-gpio.yaml [new file with mode: 0644]
Bindings/gpio/altr-pio-1.0.yaml [new file with mode: 0644]
Bindings/gpio/apm,xgene-gpio-sb.yaml [new file with mode: 0644]
Bindings/gpio/apple,smc-gpio.yaml [new file with mode: 0644]
Bindings/gpio/cavium,octeon-3860-gpio.yaml [new file with mode: 0644]
Bindings/gpio/cavium-octeon-gpio.txt [deleted file]
Bindings/gpio/cdns,gpio.txt [deleted file]
Bindings/gpio/cdns,gpio.yaml [new file with mode: 0644]
Bindings/gpio/cirrus,clps711x-mctrl-gpio.txt [deleted file]
Bindings/gpio/cirrus,clps711x-mctrl-gpio.yaml [new file with mode: 0644]
Bindings/gpio/exar,xra1403.yaml [new file with mode: 0644]
Bindings/gpio/fcs,fxl6408.yaml [deleted file]
Bindings/gpio/fsl,qoriq-gpio.yaml
Bindings/gpio/gateworks,pld-gpio.txt [deleted file]
Bindings/gpio/gpio-74xx-mmio.txt [deleted file]
Bindings/gpio/gpio-altera.txt [deleted file]
Bindings/gpio/gpio-ath79.txt [deleted file]
Bindings/gpio/gpio-clps711x.txt [deleted file]
Bindings/gpio/gpio-dsp-keystone.txt [deleted file]
Bindings/gpio/gpio-lp3943.txt [deleted file]
Bindings/gpio/gpio-max3191x.txt [deleted file]
Bindings/gpio/gpio-max77620.txt [deleted file]
Bindings/gpio/gpio-mm-lantiq.txt [deleted file]
Bindings/gpio/gpio-moxtet.txt [deleted file]
Bindings/gpio/gpio-palmas.txt [deleted file]
Bindings/gpio/gpio-pca9570.yaml [deleted file]
Bindings/gpio/gpio-pca95xx.yaml
Bindings/gpio/gpio-pisosr.txt [deleted file]
Bindings/gpio/gpio-tpic2810.yaml [deleted file]
Bindings/gpio/gpio-ts4800.txt [deleted file]
Bindings/gpio/gpio-ts4900.txt [deleted file]
Bindings/gpio/gpio-twl4030.txt [deleted file]
Bindings/gpio/gpio-xgene-sb.txt [deleted file]
Bindings/gpio/gpio-xgene.txt [deleted file]
Bindings/gpio/gpio-xra1403.txt [deleted file]
Bindings/gpio/ibm,ppc4xx-gpio.txt [deleted file]
Bindings/gpio/lacie,netxbig-gpio-ext.yaml [new file with mode: 0644]
Bindings/gpio/lantiq,gpio-mm-lantiq.yaml [new file with mode: 0644]
Bindings/gpio/loongson,ls1x-gpio.yaml [deleted file]
Bindings/gpio/maxim,max31910.yaml [new file with mode: 0644]
Bindings/gpio/microchip,pic32-gpio.txt [deleted file]
Bindings/gpio/microchip,pic32mzda-gpio.yaml [new file with mode: 0644]
Bindings/gpio/netxbig-gpio-ext.txt [deleted file]
Bindings/gpio/nintendo,hollywood-gpio.txt [deleted file]
Bindings/gpio/nxp,lpc1850-gpio.txt [deleted file]
Bindings/gpio/nxp,lpc1850-gpio.yaml [new file with mode: 0644]
Bindings/gpio/pisosr-gpio.yaml [new file with mode: 0644]
Bindings/gpio/pl061-gpio.yaml
Bindings/gpio/qca,ar7100-gpio.yaml [new file with mode: 0644]
Bindings/gpio/rockchip,gpio-bank.yaml
Bindings/gpio/rockchip,rk3328-grf-gpio.yaml [deleted file]
Bindings/gpio/snps,creg-gpio.txt [deleted file]
Bindings/gpio/spear_spics.txt [deleted file]
Bindings/gpio/st,spear-spics-gpio.yaml [new file with mode: 0644]
Bindings/gpio/ti,keystone-dsp-gpio.yaml [new file with mode: 0644]
Bindings/gpio/ti,twl4030-gpio.yaml [new file with mode: 0644]
Bindings/gpio/trivial-gpio.yaml [new file with mode: 0644]
Bindings/gpio/xlnx,gpio-xilinx.yaml
Bindings/gpu/apple,agx.yaml [new file with mode: 0644]
Bindings/gpu/arm,mali-bifrost.yaml
Bindings/gpu/arm,mali-utgard.yaml
Bindings/hwmon/adi,adm1266.yaml
Bindings/hwmon/adi,ltc2992.yaml
Bindings/hwmon/adt7475.yaml
Bindings/hwmon/lltc,ltc2978.yaml
Bindings/hwmon/maxim,max20730.yaml
Bindings/hwmon/national,lm90.yaml
Bindings/hwmon/pmbus/adi,adp1050.yaml
Bindings/hwmon/pmbus/isil,isl68137.yaml
Bindings/hwmon/pmbus/ti,ucd90320.yaml
Bindings/hwmon/ti,amc6821.yaml
Bindings/hwmon/ti,ina2xx.yaml
Bindings/hwmon/ti,lm87.yaml
Bindings/i2c/apple,i2c.yaml
Bindings/i2c/i2c-exynos5.yaml
Bindings/i2c/i2c-rk3x.yaml
Bindings/i2c/nxp,pnx-i2c.yaml
Bindings/i2c/renesas,riic.yaml
Bindings/i2c/spacemit,k1-i2c.yaml
Bindings/i3c/cdns,i3c-master.yaml
Bindings/i3c/renesas,i3c.yaml [new file with mode: 0644]
Bindings/iio/adc/adi,ad4080.yaml [new file with mode: 0644]
Bindings/iio/adc/adi,ad4170-4.yaml [new file with mode: 0644]
Bindings/iio/adc/adi,ad4851.yaml
Bindings/iio/adc/adi,ad7405.yaml [new file with mode: 0644]
Bindings/iio/adc/adi,ad7606.yaml
Bindings/iio/adc/adi,ad7768-1.yaml
Bindings/iio/adc/adi,axi-adc.yaml
Bindings/iio/adc/mediatek,mt2701-auxadc.yaml
Bindings/iio/adc/mediatek,mt6359-auxadc.yaml
Bindings/iio/adc/nxp,lpc3220-adc.yaml
Bindings/iio/adc/st,spear600-adc.yaml [new file with mode: 0644]
Bindings/iio/gyroscope/invensense,itg3200.yaml [new file with mode: 0644]
Bindings/iio/proximity/nicera,d3323aa.yaml [new file with mode: 0644]
Bindings/input/syna,rmi4.yaml
Bindings/input/touchscreen/edt-ft5x06.yaml
Bindings/input/touchscreen/lpc32xx-tsc.txt [deleted file]
Bindings/input/touchscreen/nxp,lpc3220-tsc.yaml [new file with mode: 0644]
Bindings/input/touchscreen/sitronix,st1232.yaml
Bindings/input/touchscreen/ti.tsc2007.yaml [new file with mode: 0644]
Bindings/input/touchscreen/touchscreen.yaml
Bindings/input/touchscreen/tsc2007.txt [deleted file]
Bindings/interconnect/mediatek,cci.yaml
Bindings/interconnect/qcom,milos-rpmh.yaml [new file with mode: 0644]
Bindings/interconnect/qcom,msm8998-bwmon.yaml
Bindings/interconnect/qcom,osm-l3.yaml
Bindings/interconnect/qcom,sa8775p-rpmh.yaml
Bindings/interconnect/qcom,sar2130p-rpmh.yaml
Bindings/interconnect/qcom,sc7280-rpmh.yaml
Bindings/interconnect/qcom,sc8280xp-rpmh.yaml
Bindings/interconnect/qcom,sm7150-rpmh.yaml
Bindings/interconnect/qcom,sm8450-rpmh.yaml
Bindings/interconnect/qcom,sm8550-rpmh.yaml
Bindings/interconnect/qcom,sm8650-rpmh.yaml
Bindings/interconnect/qcom,sm8750-rpmh.yaml
Bindings/interconnect/qcom,x1e80100-rpmh.yaml
Bindings/interrupt-controller/andestech,plicsw.yaml [new file with mode: 0644]
Bindings/interrupt-controller/apm,xgene1-msi.yaml [new file with mode: 0644]
Bindings/interrupt-controller/arm,gic-v5-iwb.yaml [new file with mode: 0644]
Bindings/interrupt-controller/arm,gic-v5.yaml [new file with mode: 0644]
Bindings/interrupt-controller/arm,nvic.yaml
Bindings/interrupt-controller/fsl,icoll.yaml [new file with mode: 0644]
Bindings/interrupt-controller/fsl,imx8qxp-dc-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/fsl,mpic-msi.yaml [new file with mode: 0644]
Bindings/interrupt-controller/fsl,vf610-mscm-ir.yaml [new file with mode: 0644]
Bindings/interrupt-controller/mediatek,mt6577-sysirq.yaml
Bindings/interrupt-controller/sifive,plic-1.0.0.yaml
Bindings/interrupt-controller/thead,c900-aclint-sswi.yaml
Bindings/interrupt-controller/xlnx,intc.yaml [new file with mode: 0644]
Bindings/iommu/arm,smmu.yaml
Bindings/iommu/riscv,iommu.yaml
Bindings/ipmi/ipmb-dev.yaml [new file with mode: 0644]
Bindings/leds/leds-lp50xx.yaml
Bindings/leds/leds-mt6360.yaml
Bindings/leds/onnn,ncp5623.yaml
Bindings/mailbox/allwinner,sun6i-a31-msgbox.yaml
Bindings/mailbox/amlogic,meson-gxbb-mhu.yaml
Bindings/mailbox/apple,mailbox.yaml
Bindings/mailbox/aspeed,ast2700-mailbox.yaml [new file with mode: 0644]
Bindings/mailbox/brcm,bcm74110-mbox.yaml [new file with mode: 0644]
Bindings/mailbox/cix,sky1-mbox.yaml [new file with mode: 0644]
Bindings/mailbox/nvidia,tegra186-hsp.yaml
Bindings/mailbox/qcom,apcs-kpss-global.yaml
Bindings/mailbox/qcom-ipcc.yaml
Bindings/mailbox/ti,omap-mailbox.yaml
Bindings/mailbox/ti,secure-proxy.yaml
Bindings/media/cdns,csi2rx.yaml
Bindings/media/fsl,imx6q-vdoa.yaml [new file with mode: 0644]
Bindings/media/fsl,imx8qm-isi.yaml [new file with mode: 0644]
Bindings/media/fsl,imx8qxp-isi.yaml [new file with mode: 0644]
Bindings/media/fsl-vdoa.txt [deleted file]
Bindings/media/i2c/mipi-ccs.yaml
Bindings/media/i2c/onnn,mt9m114.yaml
Bindings/media/i2c/ovti,ov8858.yaml
Bindings/media/i2c/sony,imx214.yaml
Bindings/media/i2c/sony,imx258.yaml
Bindings/media/nxp,imx8-jpeg.yaml
Bindings/media/nxp,imx8mq-mipi-csi2.yaml
Bindings/media/qcom,x1e80100-camss.yaml
Bindings/media/renesas,fcp.yaml
Bindings/media/renesas,vsp1.yaml
Bindings/media/rockchip,vdec.yaml
Bindings/memory-controllers/arm,pl172.txt [deleted file]
Bindings/memory-controllers/arm,pl172.yaml [new file with mode: 0644]
Bindings/memory-controllers/brcm,brcmstb-memc-ddr.yaml
Bindings/memory-controllers/nvidia,tegra186-mc.yaml
Bindings/memory-controllers/renesas,rzg3e-xspi.yaml
Bindings/mfd/adi,adp5585.yaml
Bindings/mfd/apple,smc.yaml [new file with mode: 0644]
Bindings/mfd/fsl,imx8qxp-csr.yaml [deleted file]
Bindings/mfd/lp3943.txt
Bindings/mfd/motorola-cpcap.txt
Bindings/mfd/mxs-lradc.txt [deleted file]
Bindings/mfd/mxs-lradc.yaml [new file with mode: 0644]
Bindings/mfd/nxp,lpc1850-creg.yaml [new file with mode: 0644]
Bindings/mfd/rockchip,rk806.yaml
Bindings/mfd/samsung,s2mps11.yaml
Bindings/mfd/ti,tps65910.yaml [new file with mode: 0644]
Bindings/mfd/ti,tps6594.yaml
Bindings/mfd/tps65910.txt [deleted file]
Bindings/mips/brcm/soc.yaml
Bindings/misc/intel,ixp4xx-ahb-queue-manager.yaml
Bindings/misc/nvidia,tegra186-misc.yaml
Bindings/misc/pci1de4,1.yaml [new file with mode: 0644]
Bindings/mmc/cdns,sdhci.yaml
Bindings/mmc/loongson,ls2k0500-mmc.yaml [new file with mode: 0644]
Bindings/mmc/mxs-mmc.yaml
Bindings/mmc/renesas,sdhi.yaml
Bindings/mmc/sdhci-msm.yaml
Bindings/mmc/sdhci-pxa.yaml
Bindings/mtd/jedec,spi-nor.yaml
Bindings/mtd/nxp,lpc1773-spifi.yaml [new file with mode: 0644]
Bindings/mtd/nxp-spifi.txt [deleted file]
Bindings/mtd/technologic,nand.yaml
Bindings/net/adi,adin.yaml
Bindings/net/adi,adin1110.yaml
Bindings/net/airoha,an7583-mdio.yaml [new file with mode: 0644]
Bindings/net/allwinner,sun8i-a83t-emac.yaml
Bindings/net/altr,gmii-to-sgmii-2.0.yaml [new file with mode: 0644]
Bindings/net/altr,socfpga-stmmac.yaml [new file with mode: 0644]
Bindings/net/bluetooth/nxp,88w8987-bt.yaml
Bindings/net/cdns,macb.yaml
Bindings/net/dsa/brcm,b53.yaml
Bindings/net/dsa/mediatek,mt7530.yaml
Bindings/net/dsa/micrel,ks8995.yaml [new file with mode: 0644]
Bindings/net/dsa/microchip,ksz.yaml
Bindings/net/ethernet-controller.yaml
Bindings/net/faraday,ftgmac100.yaml
Bindings/net/ieee802154/at86rf230.txt [deleted file]
Bindings/net/ieee802154/atmel,at86rf233.yaml [new file with mode: 0644]
Bindings/net/intel,ixp4xx-ethernet.yaml
Bindings/net/lpc-eth.txt [deleted file]
Bindings/net/marvell,armada-370-neta.yaml [new file with mode: 0644]
Bindings/net/marvell,armada-380-neta-bm.yaml [new file with mode: 0644]
Bindings/net/marvell-armada-370-neta.txt [deleted file]
Bindings/net/marvell-neta-bm.txt [deleted file]
Bindings/net/mediatek,net.yaml
Bindings/net/micrel-ks8995.txt [deleted file]
Bindings/net/nfc/ti,trf7970a.yaml
Bindings/net/nxp,lpc-eth.yaml [new file with mode: 0644]
Bindings/net/nxp,lpc1850-dwmac.txt [deleted file]
Bindings/net/nxp,lpc1850-dwmac.yaml [new file with mode: 0644]
Bindings/net/pse-pd/microchip,pd692x0.yaml
Bindings/net/pse-pd/ti,tps23881.yaml
Bindings/net/qca,ar803x.yaml
Bindings/net/qca,qca7000.txt [deleted file]
Bindings/net/qca,qca7000.yaml [new file with mode: 0644]
Bindings/net/renesas,rzv2h-gbeth.yaml [moved from Bindings/net/renesas,r9a09g057-gbeth.yaml with 97% similarity]
Bindings/net/snps,dwmac.yaml
Bindings/net/socfpga-dwmac.txt [deleted file]
Bindings/net/sophgo,cv1800b-dwmac.yaml [new file with mode: 0644]
Bindings/net/sophgo,sg2044-dwmac.yaml
Bindings/net/thead,th1520-gmac.yaml
Bindings/net/ti,k3-am654-cpsw-nuss.yaml
Bindings/net/wireless/qca,ath9k.yaml
Bindings/net/wireless/qcom,ath11k-pci.yaml
Bindings/net/wireless/ralink,rt2880.yaml [new file with mode: 0644]
Bindings/nvmem/allwinner,sun4i-a10-sid.yaml
Bindings/nvmem/amlogic,meson6-efuse.yaml
Bindings/nvmem/fsl,vf610-ocotp.yaml [new file with mode: 0644]
Bindings/nvmem/layouts/fixed-layout.yaml
Bindings/nvmem/lpc1857-eeprom.txt [deleted file]
Bindings/nvmem/mediatek,efuse.yaml
Bindings/nvmem/nxp,lpc1857-eeprom.yaml [new file with mode: 0644]
Bindings/nvmem/vf610-ocotp.txt [deleted file]
Bindings/opp/opp-v2-qcom-adreno.yaml
Bindings/pci/83xx-512x-pci.txt [deleted file]
Bindings/pci/aardvark-pci.txt [deleted file]
Bindings/pci/amazon,al-alpine-v3-pcie.yaml [new file with mode: 0644]
Bindings/pci/apm,xgene-pcie.yaml [new file with mode: 0644]
Bindings/pci/axis,artpec6-pcie.txt [deleted file]
Bindings/pci/axis,artpec6-pcie.yaml [new file with mode: 0644]
Bindings/pci/brcm,stb-pcie.yaml
Bindings/pci/marvell,armada-3700-pcie.yaml [new file with mode: 0644]
Bindings/pci/pci-ep.yaml
Bindings/pci/pcie-al.txt [deleted file]
Bindings/pci/qcom,pcie-common.yaml
Bindings/pci/qcom,pcie-sa8255p.yaml [new file with mode: 0644]
Bindings/pci/qcom,pcie-sa8775p.yaml
Bindings/pci/qcom,pcie-sc7280.yaml
Bindings/pci/qcom,pcie-sc8180x.yaml
Bindings/pci/qcom,pcie-sm8150.yaml
Bindings/pci/snps,dw-pcie.yaml
Bindings/pci/sophgo,sg2044-pcie.yaml [new file with mode: 0644]
Bindings/pci/spear13xx-pcie.txt [deleted file]
Bindings/pci/st,spear1340-pcie.yaml [new file with mode: 0644]
Bindings/pci/ti,j721e-pci-ep.yaml
Bindings/pci/xgene-pci-msi.txt [deleted file]
Bindings/pci/xgene-pci.txt [deleted file]
Bindings/phy/apm,xgene-phy.yaml [new file with mode: 0644]
Bindings/phy/apm-xgene-phy.txt [deleted file]
Bindings/phy/berlin-sata-phy.txt [deleted file]
Bindings/phy/berlin-usb-phy.txt [deleted file]
Bindings/phy/brcm,ns2-drd-phy.txt [deleted file]
Bindings/phy/brcm,ns2-drd-phy.yaml [new file with mode: 0644]
Bindings/phy/brcm,sr-pcie-phy.txt [deleted file]
Bindings/phy/brcm,sr-pcie-phy.yaml [new file with mode: 0644]
Bindings/phy/brcm,sr-usb-combo-phy.yaml [new file with mode: 0644]
Bindings/phy/brcm,stingray-usb-phy.txt [deleted file]
Bindings/phy/dm816x-phy.txt [deleted file]
Bindings/phy/hisilicon,hi6220-usb-phy.yaml [new file with mode: 0644]
Bindings/phy/hisilicon,hix5hd2-sata-phy.yaml [new file with mode: 0644]
Bindings/phy/hisilicon,inno-usb2-phy.yaml [new file with mode: 0644]
Bindings/phy/hix5hd2-phy.txt [deleted file]
Bindings/phy/img,pistachio-usb-phy.yaml [new file with mode: 0644]
Bindings/phy/keystone-usb-phy.txt [deleted file]
Bindings/phy/lantiq,ase-usb2-phy.yaml [new file with mode: 0644]
Bindings/phy/marvell,armada-375-usb-cluster.yaml [new file with mode: 0644]
Bindings/phy/marvell,armada-380-comphy.yaml [new file with mode: 0644]
Bindings/phy/marvell,berlin2-sata-phy.yaml [new file with mode: 0644]
Bindings/phy/marvell,berlin2-usb-phy.yaml [new file with mode: 0644]
Bindings/phy/marvell,comphy-cp110.yaml [new file with mode: 0644]
Bindings/phy/marvell,mmp2-usb-phy.yaml [new file with mode: 0644]
Bindings/phy/marvell,mvebu-sata-phy.yaml [new file with mode: 0644]
Bindings/phy/mixel,mipi-dsi-phy.yaml
Bindings/phy/motorola,cpcap-usb-phy.yaml [new file with mode: 0644]
Bindings/phy/motorola,mapphone-mdm6600.yaml [new file with mode: 0644]
Bindings/phy/phy-armada38x-comphy.txt [deleted file]
Bindings/phy/phy-ath79-usb.txt [deleted file]
Bindings/phy/phy-cpcap-usb.txt [deleted file]
Bindings/phy/phy-da8xx-usb.txt [deleted file]
Bindings/phy/phy-hi6220-usb.txt [deleted file]
Bindings/phy/phy-hisi-inno-usb2.txt [deleted file]
Bindings/phy/phy-lantiq-rcu-usb2.txt [deleted file]
Bindings/phy/phy-lpc18xx-usb-otg.txt [deleted file]
Bindings/phy/phy-mapphone-mdm6600.txt [deleted file]
Bindings/phy/phy-mvebu-comphy.txt [deleted file]
Bindings/phy/phy-mvebu.txt [deleted file]
Bindings/phy/phy-pxa-usb.txt [deleted file]
Bindings/phy/pistachio-usb-phy.txt [deleted file]
Bindings/phy/qca,ar7100-usb-phy.yaml [new file with mode: 0644]
Bindings/phy/qcom,m31-eusb2-phy.yaml [new file with mode: 0644]
Bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml
Bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
Bindings/phy/qcom,snps-eusb2-phy.yaml
Bindings/phy/qcom,snps-eusb2-repeater.yaml
Bindings/phy/renesas,usb2-phy.yaml
Bindings/phy/samsung,mipi-video-phy.yaml
Bindings/phy/samsung,usb3-drd-phy.yaml
Bindings/phy/st,spear1310-miphy.yaml [new file with mode: 0644]
Bindings/phy/st-spear-miphy.txt [deleted file]
Bindings/phy/ti,da830-usb-phy.yaml [new file with mode: 0644]
Bindings/phy/ti,dm8168-usb-phy.yaml [new file with mode: 0644]
Bindings/phy/ti,keystone-usbphy.yaml [new file with mode: 0644]
Bindings/pinctrl/amlogic,pinctrl-a4.yaml
Bindings/pinctrl/eswin,eic7700-pinctrl.yaml [new file with mode: 0644]
Bindings/pinctrl/mediatek,mt8189-pinctrl.yaml [new file with mode: 0644]
Bindings/pinctrl/nxp,lpc1850-scu.txt [deleted file]
Bindings/pinctrl/nxp,lpc1850-scu.yaml [new file with mode: 0644]
Bindings/pinctrl/qcom,milos-tlmm.yaml [new file with mode: 0644]
Bindings/pinctrl/qcom,pmic-gpio.yaml
Bindings/pinctrl/raspberrypi,rp1-gpio.yaml [new file with mode: 0644]
Bindings/pinctrl/rockchip,pinctrl.yaml
Bindings/pinctrl/st,stm32-hdp.yaml [new file with mode: 0644]
Bindings/pinctrl/st,stm32-pinctrl.yaml
Bindings/power/allwinner,sun20i-d1-ppu.yaml
Bindings/power/power-domain.yaml
Bindings/power/qcom,rpmpd.yaml
Bindings/power/reset/apple,smc-reboot.yaml [new file with mode: 0644]
Bindings/power/reset/qcom,pon.yaml
Bindings/power/rockchip,power-controller.yaml
Bindings/power/supply/bq24190.yaml
Bindings/power/supply/bq2515x.yaml
Bindings/power/supply/bq256xx.yaml
Bindings/power/supply/bq25980.yaml
Bindings/power/supply/cw2015_battery.yaml
Bindings/power/supply/qcom,pmi8998-charger.yaml
Bindings/power/supply/richtek,rt5033-charger.yaml
Bindings/power/supply/stericsson,ab8500-btemp.yaml
Bindings/power/supply/stericsson,ab8500-chargalg.yaml
Bindings/power/supply/stericsson,ab8500-charger.yaml
Bindings/power/supply/stericsson,ab8500-fg.yaml
Bindings/power/supply/summit,smb347-charger.yaml
Bindings/power/supply/x-powers,axp20x-battery-power-supply.yaml
Bindings/powerpc/fsl/msi-pic.txt [deleted file]
Bindings/powerpc/nintendo/wii.txt
Bindings/pwm/adi,axi-pwmgen.yaml
Bindings/pwm/argon40,fan-hat.yaml [new file with mode: 0644]
Bindings/pwm/lpc1850-sct-pwm.txt [deleted file]
Bindings/pwm/lpc32xx-pwm.txt [deleted file]
Bindings/pwm/marvell,pxa-pwm.yaml
Bindings/pwm/mediatek,mt2712-pwm.yaml
Bindings/pwm/nxp,lpc1850-sct-pwm.yaml [new file with mode: 0644]
Bindings/pwm/nxp,lpc3220-pwm.yaml [new file with mode: 0644]
Bindings/pwm/sophgo,sg2042-pwm.yaml
Bindings/regulator/infineon,ir38060.yaml
Bindings/regulator/mediatek,mt6873-dvfsrc-regulator.yaml
Bindings/regulator/nxp,pca9450-regulator.yaml
Bindings/regulator/qcom,rpmh-regulator.yaml
Bindings/regulator/raspberrypi,7inch-touchscreen-panel-regulator.yaml
Bindings/remoteproc/qcom,sa8775p-pas.yaml
Bindings/remoteproc/qcom,sm8150-pas.yaml
Bindings/reserved-memory/nvidia,tegra264-bpmp-shmem.yaml
Bindings/reset/canaan,k230-rst.yaml [new file with mode: 0644]
Bindings/reset/nxp,lpc1850-rgu.txt [deleted file]
Bindings/reset/nxp,lpc1850-rgu.yaml [new file with mode: 0644]
Bindings/reset/renesas,rzv2h-usb2phy-reset.yaml
Bindings/reset/snps,dw-reset.txt [deleted file]
Bindings/reset/snps,dw-reset.yaml [new file with mode: 0644]
Bindings/reset/sophgo,sg2042-reset.yaml
Bindings/riscv/andes.yaml [new file with mode: 0644]
Bindings/riscv/cpus.yaml
Bindings/rng/atmel,at91-trng.yaml
Bindings/rng/brcm,iproc-rng200.yaml
Bindings/rtc/amlogic,a4-rtc.yaml
Bindings/rtc/nvidia,tegra20-rtc.yaml
Bindings/rtc/nxp,lpc1788-rtc.yaml
Bindings/rtc/nxp,lpc3220-rtc.yaml [new file with mode: 0644]
Bindings/rtc/nxp,pcf85063.yaml
Bindings/rtc/renesas,rzn1-rtc.yaml
Bindings/rtc/sophgo,cv1800b-rtc.yaml [moved from Bindings/soc/sophgo/sophgo,cv1800b-rtc.yaml with 96% similarity]
Bindings/rtc/trivial-rtc.yaml
Bindings/serial/8250.yaml
Bindings/serial/brcm,bcm7271-uart.yaml
Bindings/serial/cdns,uart.yaml
Bindings/serial/mediatek,uart.yaml
Bindings/serial/qcom,sa8255p-geni-uart.yaml [new file with mode: 0644]
Bindings/serial/renesas,hscif.yaml
Bindings/serial/renesas,rsci.yaml
Bindings/serial/renesas,scif.yaml
Bindings/serial/samsung_uart.yaml
Bindings/serial/snps-dw-apb-uart.yaml
Bindings/soc/amlogic/amlogic,meson-gx-hhi-sysctrl.yaml
Bindings/soc/fsl/fsl,imx23-digctl.yaml [new file with mode: 0644]
Bindings/soc/qcom/qcom,aoss-qmp.yaml
Bindings/soc/qcom/qcom,dcc.yaml
Bindings/soc/qcom/qcom,eud.yaml
Bindings/soc/qcom/qcom,pmic-glink.yaml
Bindings/soc/qcom/qcom,sa8255p-geni-se-qup.yaml [new file with mode: 0644]
Bindings/soc/renesas/renesas.yaml
Bindings/soc/rockchip/grf.yaml
Bindings/soc/samsung/exynos-pmu.yaml
Bindings/soc/samsung/samsung,exynos-sysreg.yaml
Bindings/soc/sophgo/sophgo.yaml [moved from Bindings/riscv/sophgo.yaml with 76% similarity]
Bindings/soc/spacemit/spacemit,k1-syscon.yaml
Bindings/soc/ti/ti,j784s4-bist.yaml [new file with mode: 0644]
Bindings/soc/ti/wkup-m3-ipc.yaml
Bindings/sound/atmel,at91-ssc.yaml
Bindings/sound/cirrus,cs42xx8.yaml
Bindings/sound/fsl,mxs-audio-sgtl5000.yaml [new file with mode: 0644]
Bindings/sound/mediatek,mt8173-afe-pcm.yaml [new file with mode: 0644]
Bindings/sound/mt8186-afe-pcm.yaml
Bindings/sound/mt8192-afe-pcm.yaml
Bindings/sound/mtk-afe-pcm.txt [deleted file]
Bindings/sound/mxs-audio-sgtl5000.txt [deleted file]
Bindings/sound/qcom,lpass-va-macro.yaml
Bindings/sound/qcom,q6afe.yaml
Bindings/sound/qcom,sm8250.yaml
Bindings/sound/qcom,wcd939x.yaml
Bindings/sound/richtek,rt9123.yaml
Bindings/sound/ti,tas57xx.yaml
Bindings/spi/amlogic,a4-spisg.yaml [new file with mode: 0644]
Bindings/spi/fsl,dspi.yaml
Bindings/spi/marvell,orion-spi.yaml [new file with mode: 0644]
Bindings/spi/mediatek,spi-mt65xx.yaml
Bindings/spi/mxs-spi.yaml
Bindings/spi/nxp,lpc3220-spi.yaml [new file with mode: 0644]
Bindings/spi/renesas,rzv2h-rspi.yaml [new file with mode: 0644]
Bindings/spi/spi-fsl-lpspi.yaml
Bindings/spi/spi-mux.yaml
Bindings/spi/spi-orion.txt [deleted file]
Bindings/spi/spi-peripheral-props.yaml
Bindings/spi/spi-sg2044-nor.yaml
Bindings/spi/st,stm32-spi.yaml
Bindings/sram/qcom,imem.yaml
Bindings/staging/iio/adc/spear-adc.txt [deleted file]
Bindings/submitting-patches.rst
Bindings/thermal/mediatek,thermal.yaml
Bindings/thermal/nvidia,tegra124-soctherm.yaml
Bindings/thermal/qcom-tsens.yaml
Bindings/thermal/rockchip-thermal.yaml
Bindings/timer/andestech,plmt0.yaml [new file with mode: 0644]
Bindings/timer/via,vt8500-timer.txt [deleted file]
Bindings/timer/via,vt8500-timer.yaml [new file with mode: 0644]
Bindings/trigger-source/adi,util-sigma-delta-spi.yaml [new file with mode: 0644]
Bindings/trigger-source/gpio-trigger.yaml [new file with mode: 0644]
Bindings/trivial-devices.yaml
Bindings/ufs/mediatek,ufs.yaml
Bindings/usb/ci-hdrc-usb2.yaml
Bindings/usb/dwc2.yaml
Bindings/usb/fsl,usbmisc.yaml
Bindings/usb/genesys,gl850g.yaml
Bindings/usb/isp1301.txt [deleted file]
Bindings/usb/lpc32xx-udc.txt [deleted file]
Bindings/usb/nxp,lpc3220-udc.yaml [new file with mode: 0644]
Bindings/usb/qcom,snps-dwc3.yaml
Bindings/usb/renesas,usbhs.yaml
Bindings/vendor-prefixes.yaml
Bindings/watchdog/fsl-imx-wdt.yaml
Bindings/watchdog/mediatek,mtk-wdt.yaml
Bindings/watchdog/nxp,pnx4008-wdt.yaml
Bindings/writing-bindings.rst
Bindings/writing-schema.rst
include/dt-bindings/arm/qcom,ids.h
include/dt-bindings/clock/ast2600-clock.h
include/dt-bindings/clock/cix,sky1.h [new file with mode: 0644]
include/dt-bindings/clock/nvidia,tegra264.h [new file with mode: 0644]
include/dt-bindings/clock/nxp,imx94-clock.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,gcc-sc8180x.h
include/dt-bindings/clock/qcom,ipq5018-cmn-pll.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,ipq5424-cmn-pll.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,milos-camcc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,milos-dispcc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,milos-gcc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,milos-gpucc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,milos-videocc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,qcs615-camcc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,qcs615-dispcc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,qcs615-gpucc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,qcs615-videocc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,sc8180x-camcc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,x1e80100-gcc.h
include/dt-bindings/clock/r9a07g043-cpg.h
include/dt-bindings/clock/r9a07g044-cpg.h
include/dt-bindings/clock/r9a07g054-cpg.h
include/dt-bindings/clock/r9a08g045-cpg.h
include/dt-bindings/clock/raspberrypi,rp1-clocks.h [new file with mode: 0644]
include/dt-bindings/clock/renesas,r9a09g056-cpg.h
include/dt-bindings/clock/renesas,r9a09g057-cpg.h
include/dt-bindings/clock/renesas,r9a09g077-cpg-mssr.h [new file with mode: 0644]
include/dt-bindings/clock/renesas,r9a09g087-cpg-mssr.h [new file with mode: 0644]
include/dt-bindings/clock/samsung,exynosautov920.h
include/dt-bindings/clock/spacemit,k1-syscon.h
include/dt-bindings/iio/adc/adi,ad7768-1.h [new file with mode: 0644]
include/dt-bindings/iio/adc/mediatek,mt6363-auxadc.h [new file with mode: 0644]
include/dt-bindings/iio/adc/mediatek,mt6373-auxadc.h [new file with mode: 0644]
include/dt-bindings/input/linux-event-codes.h
include/dt-bindings/interconnect/qcom,milos-rpmh.h [new file with mode: 0644]
include/dt-bindings/memory/nvidia,tegra264.h [new file with mode: 0644]
include/dt-bindings/pinctrl/stm32-pinfunc.h
include/dt-bindings/power/allwinner,sun55i-a523-pck-600.h [new file with mode: 0644]
include/dt-bindings/power/allwinner,sun55i-a523-ppu.h [new file with mode: 0644]
include/dt-bindings/power/qcom-rpmpd.h
include/dt-bindings/power/rockchip,rk3528-power.h [new file with mode: 0644]
include/dt-bindings/regulator/nxp,pca9450-regulator.h [new file with mode: 0644]
include/dt-bindings/regulator/st,stm32mp15-regulator.h [new file with mode: 0644]
include/dt-bindings/reset/canaan,k230-rst.h [new file with mode: 0644]
include/dt-bindings/reset/nvidia,tegra264.h [new file with mode: 0644]
include/dt-bindings/reset/sun55i-a523-r-ccu.h
src/arm/allwinner/sun4i-a10-olinuxino-lime.dts
src/arm/allwinner/sun8i-q8-common.dtsi
src/arm/allwinner/sun8i-r40.dtsi
src/arm/allwinner/sun8i-v3.dtsi
src/arm/allwinner/sun8i-v3s-netcube-kumquat.dts
src/arm/allwinner/sun8i-v3s.dtsi
src/arm/aspeed/aspeed-bmc-ampere-mtjade.dts
src/arm/aspeed/aspeed-bmc-arm-stardragon4800-rep2.dts
src/arm/aspeed/aspeed-bmc-asrock-e3c246d4i.dts
src/arm/aspeed/aspeed-bmc-bytedance-g220a.dts
src/arm/aspeed/aspeed-bmc-delta-ahe50dc.dts
src/arm/aspeed/aspeed-bmc-facebook-bletchley.dts
src/arm/aspeed/aspeed-bmc-facebook-catalina.dts
src/arm/aspeed/aspeed-bmc-facebook-harma.dts
src/arm/aspeed/aspeed-bmc-facebook-santabarbara.dts [new file with mode: 0644]
src/arm/aspeed/aspeed-bmc-facebook-yosemite4.dts
src/arm/aspeed/aspeed-bmc-ibm-bonnell.dts
src/arm/aspeed/aspeed-bmc-ibm-everest.dts
src/arm/aspeed/aspeed-bmc-ibm-rainier.dts
src/arm/aspeed/aspeed-bmc-ibm-system1.dts
src/arm/aspeed/aspeed-bmc-lenovo-hr630.dts
src/arm/aspeed/aspeed-bmc-lenovo-hr855xg2.dts
src/arm/aspeed/aspeed-bmc-nvidia-gb200nvl-bmc.dts [new file with mode: 0644]
src/arm/aspeed/aspeed-bmc-opp-lanyang.dts
src/arm/aspeed/aspeed-bmc-opp-nicole.dts
src/arm/aspeed/aspeed-bmc-opp-palmetto.dts
src/arm/aspeed/aspeed-bmc-opp-romulus.dts
src/arm/aspeed/aspeed-bmc-opp-swift.dts [deleted file]
src/arm/aspeed/aspeed-bmc-opp-zaius.dts
src/arm/broadcom/bcm63138.dtsi
src/arm/broadcom/bcm63148.dtsi
src/arm/broadcom/bcm63178.dtsi
src/arm/broadcom/bcm6846.dtsi
src/arm/broadcom/bcm6855.dtsi
src/arm/broadcom/bcm6878.dtsi
src/arm/broadcom/bcm7445.dtsi
src/arm/broadcom/bcm958625-meraki-mx6x-common.dtsi
src/arm/intel/ixp/intel-ixp42x-linksys-wrv54g.dts
src/arm/intel/socfpga/socfpga_cyclone5_sodia.dts
src/arm/marvell/armada-370-db.dts
src/arm/marvell/kirkwood-km_common.dtsi
src/arm/marvell/kirkwood-openrd-client.dts
src/arm/mediatek/mt6572-jty-d101.dts [new file with mode: 0644]
src/arm/mediatek/mt6572-lenovo-a369i.dts [new file with mode: 0644]
src/arm/mediatek/mt6572.dtsi [new file with mode: 0644]
src/arm/microchip/at91-sam9x60ek.dts
src/arm/microchip/at91-sama5d27_som1.dtsi
src/arm/microchip/at91-sama5d27_wlsom1.dtsi
src/arm/microchip/at91-sama5d2_icp.dts
src/arm/microchip/at91-sama7d65_curiosity.dts
src/arm/microchip/at91-sama7g5ek.dts
src/arm/microchip/at91rm9200.dtsi
src/arm/microchip/at91sam9260.dtsi
src/arm/microchip/at91sam9261.dtsi
src/arm/microchip/at91sam9263.dtsi
src/arm/microchip/at91sam9g25-gardena-smart-gateway.dts
src/arm/microchip/at91sam9g45.dtsi
src/arm/microchip/at91sam9n12.dtsi
src/arm/microchip/at91sam9rl.dtsi
src/arm/microchip/at91sam9x5.dtsi
src/arm/microchip/sam9x7.dtsi
src/arm/microchip/sama5d2.dtsi
src/arm/microchip/sama5d3.dtsi
src/arm/microchip/sama5d4.dtsi
src/arm/microchip/sama7d65.dtsi
src/arm/microchip/sama7g5.dtsi
src/arm/nvidia/tegra30-asus-p1801-t.dts [new file with mode: 0644]
src/arm/nvidia/tegra30-asus-tf600t.dts [new file with mode: 0644]
src/arm/nvidia/tegra30-pegatron-chagall.dts
src/arm/nxp/imx/imx53-tx53-x03x.dts
src/arm/nxp/imx/imx53-tx53-x13x.dts
src/arm/nxp/imx/imx53-tx53.dtsi
src/arm/nxp/imx/imx6dl-gw551x.dts
src/arm/nxp/imx/imx6dl-gw553x.dts
src/arm/nxp/imx/imx6dl-gw560x.dts
src/arm/nxp/imx/imx6dl-gw5903.dts
src/arm/nxp/imx/imx6dl-gw5904.dts
src/arm/nxp/imx/imx6dl-tx6dl-comtft.dts
src/arm/nxp/imx/imx6dl-tx6s-8034-mb7.dts
src/arm/nxp/imx/imx6dl-tx6s-8034.dts
src/arm/nxp/imx/imx6dl-tx6s-8035-mb7.dts
src/arm/nxp/imx/imx6dl-tx6s-8035.dts
src/arm/nxp/imx/imx6dl-tx6u-801x.dts
src/arm/nxp/imx/imx6dl-tx6u-8033-mb7.dts
src/arm/nxp/imx/imx6dl-tx6u-8033.dts
src/arm/nxp/imx/imx6dl-tx6u-80xx-mb7.dts
src/arm/nxp/imx/imx6dl-tx6u-811x.dts
src/arm/nxp/imx/imx6dl-tx6u-81xx-mb7.dts
src/arm/nxp/imx/imx6q-gw551x.dts
src/arm/nxp/imx/imx6q-gw553x.dts
src/arm/nxp/imx/imx6q-gw560x.dts
src/arm/nxp/imx/imx6q-gw5903.dts
src/arm/nxp/imx/imx6q-gw5904.dts
src/arm/nxp/imx/imx6q-tx6q-1010-comtft.dts
src/arm/nxp/imx/imx6q-tx6q-1010.dts
src/arm/nxp/imx/imx6q-tx6q-1020-comtft.dts
src/arm/nxp/imx/imx6q-tx6q-1020.dts
src/arm/nxp/imx/imx6q-tx6q-1036-mb7.dts
src/arm/nxp/imx/imx6q-tx6q-1036.dts
src/arm/nxp/imx/imx6q-tx6q-10x0-mb7.dts
src/arm/nxp/imx/imx6q-tx6q-1110.dts
src/arm/nxp/imx/imx6q-tx6q-11x0-mb7.dts
src/arm/nxp/imx/imx6qdl-gw551x.dtsi
src/arm/nxp/imx/imx6qdl-gw553x.dtsi
src/arm/nxp/imx/imx6qdl-gw560x.dtsi
src/arm/nxp/imx/imx6qdl-gw5903.dtsi
src/arm/nxp/imx/imx6qdl-gw5904.dtsi
src/arm/nxp/imx/imx6qdl-tx6-lcd.dtsi
src/arm/nxp/imx/imx6qdl-tx6-lvds.dtsi
src/arm/nxp/imx/imx6qdl-tx6-mb7.dtsi
src/arm/nxp/imx/imx6qdl-tx6.dtsi
src/arm/nxp/imx/imx6qp-tx6qp-8037-mb7.dts
src/arm/nxp/imx/imx6qp-tx6qp-8037.dts
src/arm/nxp/imx/imx6qp-tx6qp-8137-mb7.dts
src/arm/nxp/imx/imx6qp-tx6qp-8137.dts
src/arm/nxp/imx/imx6ul-kontron-bl-common.dtsi
src/arm/nxp/imx/imx6ul-kontron-sl-common.dtsi
src/arm/nxp/imx/imx6ul-tx6ul-0010.dts
src/arm/nxp/imx/imx6ul-tx6ul-0011.dts
src/arm/nxp/imx/imx6ul-tx6ul-mainboard.dts
src/arm/nxp/imx/imx6ul-tx6ul.dtsi
src/arm/nxp/imx/imx6ull-engicam-microgea-bmm.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6ull-engicam-microgea-gtw.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6ull-engicam-microgea-rmm.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6ull-engicam-microgea.dtsi [new file with mode: 0644]
src/arm/nxp/imx/imx7s-warp.dts
src/arm/nxp/imx/imx7ulp.dtsi
src/arm/nxp/lpc/lpc32xx.dtsi
src/arm/nxp/mxs/imx28-amarula-rmm.dts [new file with mode: 0644]
src/arm/nxp/mxs/imx28.dtsi
src/arm/nxp/vf/vf-colibri-eval-v3.dtsi
src/arm/nxp/vf/vf-colibri.dtsi
src/arm/nxp/vf/vf500-colibri.dtsi
src/arm/nxp/vf/vf500.dtsi
src/arm/nxp/vf/vf610-bk4.dts
src/arm/nxp/vf/vf610-cosmic.dts
src/arm/nxp/vf/vf610-twr.dts
src/arm/nxp/vf/vf610-zii-cfu1.dts
src/arm/nxp/vf/vf610-zii-dev-rev-c.dts
src/arm/nxp/vf/vf610-zii-scu4-aib.dts
src/arm/nxp/vf/vf610-zii-spb4.dts
src/arm/nxp/vf/vf610-zii-ssmb-dtu.dts
src/arm/nxp/vf/vf610-zii-ssmb-spu3.dts
src/arm/nxp/vf/vf610m4-colibri.dts
src/arm/nxp/vf/vf610m4-cosmic.dts
src/arm/nxp/vf/vfxxx.dtsi
src/arm/qcom/qcom-msm8960.dtsi
src/arm/qcom/qcom-msm8974-lge-nexus5-hammerhead.dts
src/arm/qcom/qcom-msm8974-sony-xperia-rhine-amami.dts
src/arm/qcom/qcom-msm8974-sony-xperia-rhine-honami.dts
src/arm/qcom/qcom-msm8974-sony-xperia-rhine-togari.dts [new file with mode: 0644]
src/arm/qcom/qcom-msm8974-sony-xperia-rhine.dtsi
src/arm/qcom/qcom-msm8974pro-oneplus-bacon.dts
src/arm/renesas/r9a06g032-rzn1d400-db.dts
src/arm/renesas/r9a06g032.dtsi
src/arm/rockchip/rk3128-xpi-3128.dts
src/arm/rockchip/rv1109-relfor-saib.dts
src/arm/samsung/exynos3250-monk.dts
src/arm/samsung/exynos3250-rinato.dts
src/arm/samsung/exynos4210-i9100.dts
src/arm/samsung/exynos4212-tab3.dtsi
src/arm/samsung/exynos4412-galaxy-s3.dtsi
src/arm/samsung/exynos4412-midas.dtsi
src/arm/samsung/exynos4412-p4note.dtsi
src/arm/samsung/s5pv210-aquila.dts
src/arm/samsung/s5pv210-aries.dtsi
src/arm/samsung/s5pv210-galaxys.dts
src/arm/samsung/s5pv210-goni.dts
src/arm/st/spear1310-evb.dts
src/arm/st/spear1310.dtsi
src/arm/st/spear1340-evb.dts
src/arm/st/spear13xx.dtsi
src/arm/st/spear300-evb.dts
src/arm/st/spear310-evb.dts
src/arm/st/spear320-evb.dts
src/arm/st/spear3xx.dtsi
src/arm/st/stm32mp131.dtsi
src/arm/st/stm32mp133.dtsi
src/arm/st/stm32mp15-scmi.dtsi
src/arm/st/stm32mp157f-dk2-scmi.dtsi [new file with mode: 0644]
src/arm/st/stm32mp157f-dk2.dts [new file with mode: 0644]
src/arm/st/stm32mp15xf.dtsi [new file with mode: 0644]
src/arm/st/stm32mp15xx-dkx.dtsi
src/arm/ti/omap/am335x-bone-common.dtsi
src/arm/ti/omap/am335x-boneblack.dts
src/arm/ti/omap/am335x-bonegreen-eco.dts [new file with mode: 0644]
src/arm/ti/omap/am335x-nano.dts
src/arm/ti/omap/am335x-pdu001.dts
src/arm/ti/omap/dra7.dtsi
src/arm/vt8500/vt8500-bv07.dts
src/arm/vt8500/vt8500.dtsi
src/arm/vt8500/wm8505-ref.dts
src/arm/vt8500/wm8505.dtsi
src/arm/vt8500/wm8650-mid.dts
src/arm/vt8500/wm8650.dtsi
src/arm/vt8500/wm8750-apc8750.dts
src/arm/vt8500/wm8750.dtsi
src/arm/vt8500/wm8850-w70v2.dts
src/arm/vt8500/wm8850.dtsi
src/arm64/airoha/en7581-evb.dts
src/arm64/airoha/en7581.dtsi
src/arm64/allwinner/sun50i-a100.dtsi
src/arm64/allwinner/sun50i-a133-liontron-h-a133l.dts
src/arm64/allwinner/sun55i-a523.dtsi
src/arm64/allwinner/sun55i-a527-cubie-a5e.dts
src/arm64/allwinner/sun55i-h728-x96qpro+.dts
src/arm64/allwinner/sun55i-t527-avaota-a1.dts
src/arm64/allwinner/sun55i-t527-orangepi-4a.dts [new file with mode: 0644]
src/arm64/altera/socfpga_stratix10.dtsi
src/arm64/altera/socfpga_stratix10_swvp.dts
src/arm64/amlogic/amlogic-s6.dtsi
src/arm64/amlogic/amlogic-s7.dtsi
src/arm64/amlogic/amlogic-s7d.dtsi
src/arm64/amlogic/meson-g12b-a311d-khadas-vim3.dts
src/arm64/amlogic/meson-g12b-a311d-libretech-cc.dts
src/arm64/amlogic/meson-gx-p23x-q20x.dtsi
src/arm64/amlogic/meson-gxm-rbox-pro.dts
src/arm64/amlogic/meson-gxm-ugoos-am3.dts [new file with mode: 0644]
src/arm64/apple/t6000.dtsi
src/arm64/apple/t6001.dtsi
src/arm64/apple/t6002.dtsi
src/arm64/apple/t600x-common.dtsi
src/arm64/apple/t600x-die0.dtsi
src/arm64/apple/t8012-j132.dts
src/arm64/apple/t8103.dtsi
src/arm64/apple/t8112.dtsi
src/arm64/axiado/ax3000-evk.dts [new file with mode: 0644]
src/arm64/axiado/ax3000.dtsi [new file with mode: 0644]
src/arm64/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts [new file with mode: 0644]
src/arm64/broadcom/bcm2712-rpi-5-b.dts
src/arm64/broadcom/bcmbca/bcm4908.dtsi
src/arm64/broadcom/bcmbca/bcm63158.dtsi
src/arm64/broadcom/bcmbca/bcm6856.dtsi
src/arm64/broadcom/bcmbca/bcm6858.dtsi
src/arm64/broadcom/northstar2/ns2.dtsi
src/arm64/broadcom/rp1-common.dtsi [new file with mode: 0644]
src/arm64/broadcom/rp1-nexus.dtsi [new file with mode: 0644]
src/arm64/broadcom/rp1.dtso [new file with mode: 0644]
src/arm64/cavium/thunder2-99xx.dtsi
src/arm64/cix/sky1-orion-o6.dts [new file with mode: 0644]
src/arm64/cix/sky1.dtsi [new file with mode: 0644]
src/arm64/exynos/exynos2200-g0s.dts [new file with mode: 0644]
src/arm64/exynos/exynos2200-pinctrl.dtsi [new file with mode: 0644]
src/arm64/exynos/exynos2200.dtsi [new file with mode: 0644]
src/arm64/exynos/exynos5433-tm2-common.dtsi
src/arm64/exynos/exynos7870-j6lte.dts
src/arm64/exynos/exynos7870-on7xelte.dts
src/arm64/exynos/exynos7870.dtsi
src/arm64/exynos/exynosautov920.dtsi
src/arm64/exynos/google/gs101-pixel-common.dtsi
src/arm64/exynos/google/gs101.dtsi
src/arm64/freescale/fsl-ls1043a-tqmls1043a-mbls10xxa.dts
src/arm64/freescale/fsl-ls1043a-tqmls1043a.dtsi
src/arm64/freescale/fsl-ls1043a.dtsi
src/arm64/freescale/fsl-ls1046a-tqmls1046a-mbls10xxa.dts
src/arm64/freescale/fsl-ls1046a-tqmls1046a.dtsi
src/arm64/freescale/fsl-ls1046a.dtsi
src/arm64/freescale/fsl-ls1088a-tqmls1088a-mbls10xxa.dts
src/arm64/freescale/fsl-ls1088a-tqmls1088a.dtsi
src/arm64/freescale/fsl-lx2160a-qds.dts
src/arm64/freescale/imx8-ss-img.dtsi
src/arm64/freescale/imx8-ss-security.dtsi [new file with mode: 0644]
src/arm64/freescale/imx8mm-beacon-som.dtsi
src/arm64/freescale/imx8mm-venice-gw700x.dtsi
src/arm64/freescale/imx8mm-venice-gw7901.dts
src/arm64/freescale/imx8mm-venice-gw7902.dts
src/arm64/freescale/imx8mm-venice-gw7903.dts
src/arm64/freescale/imx8mm-venice-gw7904.dts
src/arm64/freescale/imx8mm.dtsi
src/arm64/freescale/imx8mn-beacon-som.dtsi
src/arm64/freescale/imx8mn-tqma8mqnl-mba8mx.dts
src/arm64/freescale/imx8mn-tqma8mqnl.dtsi
src/arm64/freescale/imx8mn-venice-gw7902.dts
src/arm64/freescale/imx8mn.dtsi
src/arm64/freescale/imx8mp-data-modul-edm-sbc.dts
src/arm64/freescale/imx8mp-dhcom-som.dtsi
src/arm64/freescale/imx8mp-evk.dts
src/arm64/freescale/imx8mp-nominal.dtsi
src/arm64/freescale/imx8mp-pinfunc.h
src/arm64/freescale/imx8mp-toradex-smarc-dev.dts
src/arm64/freescale/imx8mp-toradex-smarc.dtsi
src/arm64/freescale/imx8mp-tqma8mpql-mba8mp-ras314.dts
src/arm64/freescale/imx8mp-tqma8mpql-mba8mpxl-lvds-tm070jvhg33.dtso [moved from src/arm64/freescale/imx8mp-tqma8mpql-mba8mpxl-lvds.dtso with 100% similarity]
src/arm64/freescale/imx8mp-tqma8mpql-mba8mpxl.dts
src/arm64/freescale/imx8mp-tqma8mpql.dtsi
src/arm64/freescale/imx8mp-tx8p-ml81-moduline-display-106-av101hdt-a10.dtso [new file with mode: 0644]
src/arm64/freescale/imx8mp-tx8p-ml81-moduline-display-106-av123z7m-n17.dtso [new file with mode: 0644]
src/arm64/freescale/imx8mp-tx8p-ml81-moduline-display-106.dts [new file with mode: 0644]
src/arm64/freescale/imx8mp-tx8p-ml81.dtsi [new file with mode: 0644]
src/arm64/freescale/imx8mp-var-som.dtsi
src/arm64/freescale/imx8mp-venice-gw702x.dtsi
src/arm64/freescale/imx8mp-venice-gw74xx.dts
src/arm64/freescale/imx8mp.dtsi
src/arm64/freescale/imx8qm-mek-ov5640-csi0.dtso [new file with mode: 0644]
src/arm64/freescale/imx8qm-mek-ov5640-csi1.dtso [new file with mode: 0644]
src/arm64/freescale/imx8qm-mek.dts
src/arm64/freescale/imx8qm-ss-img.dtsi
src/arm64/freescale/imx8qm.dtsi
src/arm64/freescale/imx8qxp-mek-ov5640-csi.dtso [new file with mode: 0644]
src/arm64/freescale/imx8qxp-mek.dts
src/arm64/freescale/imx8qxp-ss-img.dtsi
src/arm64/freescale/imx8qxp-ss-security.dtsi [new file with mode: 0644]
src/arm64/freescale/imx8qxp.dtsi
src/arm64/freescale/imx8ulp.dtsi
src/arm64/freescale/imx93-11x11-evk.dts
src/arm64/freescale/imx93-14x14-evk.dts
src/arm64/freescale/imx93-9x9-qsb.dts
src/arm64/freescale/imx93-phyboard-nash-peb-wlbt-07.dtso [new file with mode: 0644]
src/arm64/freescale/imx93-phyboard-nash.dts
src/arm64/freescale/imx93-phyboard-segin-peb-eval-01.dtso [new file with mode: 0644]
src/arm64/freescale/imx93-phyboard-segin-peb-wlbt-05.dtso [new file with mode: 0644]
src/arm64/freescale/imx93-phyboard-segin.dts
src/arm64/freescale/imx93-phycore-rpmsg.dtso [new file with mode: 0644]
src/arm64/freescale/imx93-phycore-som.dtsi
src/arm64/freescale/imx93-tqma9352.dtsi
src/arm64/freescale/imx93-var-som.dtsi
src/arm64/freescale/imx93.dtsi
src/arm64/freescale/imx94.dtsi
src/arm64/freescale/imx943-evk.dts
src/arm64/freescale/imx95-15x15-evk.dts
src/arm64/freescale/imx95-19x19-evk.dts
src/arm64/freescale/imx95-libra-rdk-fpsc.dts [new file with mode: 0644]
src/arm64/freescale/imx95-phycore-fpsc.dtsi [new file with mode: 0644]
src/arm64/freescale/imx95.dtsi
src/arm64/freescale/mba8mx.dtsi
src/arm64/freescale/s32g2.dtsi
src/arm64/freescale/s32g3.dtsi
src/arm64/freescale/s32gxxxa-evb.dtsi
src/arm64/freescale/s32gxxxa-rdb.dtsi
src/arm64/freescale/tqmls1088a-mbls10xxa-mc.dtsi
src/arm64/freescale/tqmls10xxa-mbls10xxa.dtsi
src/arm64/freescale/tqmls10xxa.dtsi
src/arm64/intel/socfpga_agilex.dtsi
src/arm64/lg/lg1312.dtsi
src/arm64/lg/lg1313.dtsi
src/arm64/lg/lg131x.dtsi [new file with mode: 0644]
src/arm64/marvell/armada-8040-mcbin.dtsi
src/arm64/marvell/cn9130-cf.dtsi
src/arm64/marvell/cn9131-cf-solidwan.dts
src/arm64/marvell/cn9132-clearfog.dts
src/arm64/marvell/cn9132-sr-cex7.dtsi
src/arm64/marvell/mmp/pxa1908-samsung-coreprimevelte.dts [new file with mode: 0644]
src/arm64/marvell/mmp/pxa1908.dtsi [new file with mode: 0644]
src/arm64/mediatek/mt7988a-bananapi-bpi-r4.dtsi
src/arm64/mediatek/mt7988a.dtsi
src/arm64/mediatek/mt8173.dtsi
src/arm64/mediatek/mt8183-kukui.dtsi
src/arm64/mediatek/mt8186-corsola-squirtle.dts [new file with mode: 0644]
src/arm64/mediatek/mt8186-corsola-steelix.dtsi
src/arm64/mediatek/mt8186-corsola-tentacool-sku327683.dts
src/arm64/mediatek/mt8186-corsola-tentacruel-sku262148.dts
src/arm64/mediatek/mt8186-corsola-voltorb-sku589824.dts [deleted file]
src/arm64/mediatek/mt8186-corsola-voltorb.dts [moved from src/arm64/mediatek/mt8186-corsola-voltorb-sku589825.dts with 76% similarity]
src/arm64/mediatek/mt8186-corsola.dtsi
src/arm64/mediatek/mt8192-asurada-spherion-r0.dts
src/arm64/mediatek/mt8192-asurada.dtsi
src/arm64/mediatek/mt8195.dtsi
src/arm64/mediatek/mt8370.dtsi
src/arm64/mediatek/mt8390-genio-common.dtsi
src/arm64/mediatek/mt8395-genio-1200-evk.dts
src/arm64/nuvoton/nuvoton-common-npcm8xx.dtsi
src/arm64/nvidia/tegra264-p3834-0008.dtsi [new file with mode: 0644]
src/arm64/nvidia/tegra264-p3834.dtsi [new file with mode: 0644]
src/arm64/nvidia/tegra264-p3971-0089+p3834-0008.dts [new file with mode: 0644]
src/arm64/nvidia/tegra264-p3971-0089+p3834.dtsi [new file with mode: 0644]
src/arm64/nvidia/tegra264-p3971-0089.dtsi [new file with mode: 0644]
src/arm64/nvidia/tegra264-p3971.dtsi [new file with mode: 0644]
src/arm64/nvidia/tegra264.dtsi [new file with mode: 0644]
src/arm64/qcom/apq8016-sbc-d3-camera-mezzanine.dtso [moved from src/arm64/qcom/apq8016-sbc-d3-camera-mezzanine.dts with 89% similarity]
src/arm64/qcom/ipq6018.dtsi
src/arm64/qcom/ipq8074.dtsi
src/arm64/qcom/msm8976-longcheer-l9360.dts [new file with mode: 0644]
src/arm64/qcom/msm8976.dtsi
src/arm64/qcom/msm8996.dtsi
src/arm64/qcom/msm8998.dtsi
src/arm64/qcom/qcm2290.dtsi
src/arm64/qcom/qcs615-ride.dts
src/arm64/qcom/qcs615.dtsi
src/arm64/qcom/qcs8300-ride.dts
src/arm64/qcom/qcs8300.dtsi
src/arm64/qcom/qrb5165-rb5-vision-mezzanine.dtso
src/arm64/qcom/sa8775p-ride.dtsi
src/arm64/qcom/sa8775p.dtsi
src/arm64/qcom/sar2130p.dtsi
src/arm64/qcom/sc7180.dtsi
src/arm64/qcom/sc7280.dtsi
src/arm64/qcom/sc8180x.dtsi
src/arm64/qcom/sdm845.dtsi
src/arm64/qcom/sdm850-lenovo-yoga-c630.dts
src/arm64/qcom/sm6115.dtsi
src/arm64/qcom/sm6350.dtsi
src/arm64/qcom/sm8150.dtsi
src/arm64/qcom/sm8250.dtsi
src/arm64/qcom/sm8350.dtsi
src/arm64/qcom/sm8450.dtsi
src/arm64/qcom/sm8550.dtsi
src/arm64/qcom/sm8650-hdk.dts
src/arm64/qcom/sm8650-mtp.dts
src/arm64/qcom/sm8650-qrd.dts
src/arm64/qcom/sm8650.dtsi
src/arm64/qcom/sm8750-mtp.dts
src/arm64/qcom/sm8750-qrd.dts
src/arm64/qcom/sm8750.dtsi
src/arm64/qcom/x1-asus-zenbook-a14.dtsi [new file with mode: 0644]
src/arm64/qcom/x1e80100-asus-zenbook-a14.dts [new file with mode: 0644]
src/arm64/qcom/x1e80100-dell-xps13-9345.dts
src/arm64/qcom/x1e80100-hp-omnibook-x14.dts
src/arm64/qcom/x1e80100.dtsi
src/arm64/qcom/x1p42100-asus-zenbook-a14.dts [new file with mode: 0644]
src/arm64/qcom/x1p42100.dtsi
src/arm64/renesas/condor-common.dtsi
src/arm64/renesas/draak.dtsi
src/arm64/renesas/ebisu.dtsi
src/arm64/renesas/gray-hawk-single.dtsi [new file with mode: 0644]
src/arm64/renesas/r8a779g0.dtsi
src/arm64/renesas/r8a779g3-sparrow-hawk.dts
src/arm64/renesas/r8a779h0-gray-hawk-single.dts
src/arm64/renesas/r8a779h2-gray-hawk-single.dts [new file with mode: 0644]
src/arm64/renesas/r8a779h2.dtsi [new file with mode: 0644]
src/arm64/renesas/r9a09g047.dtsi
src/arm64/renesas/r9a09g047e57-smarc-cru-csi-ov5645.dtso [new file with mode: 0644]
src/arm64/renesas/r9a09g047e57-smarc.dts
src/arm64/renesas/r9a09g056.dtsi
src/arm64/renesas/r9a09g056n48-rzv2n-evk.dts
src/arm64/renesas/r9a09g057.dtsi
src/arm64/renesas/r9a09g057h44-rzv2h-evk.dts
src/arm64/renesas/renesas-smarc2.dtsi
src/arm64/renesas/rzg3e-smarc-som.dtsi
src/arm64/renesas/rzv2-evk-cn15-emmc.dtso [new file with mode: 0644]
src/arm64/renesas/rzv2-evk-cn15-sd.dtso [new file with mode: 0644]
src/arm64/renesas/salvator-common.dtsi
src/arm64/renesas/ulcb.dtsi
src/arm64/rockchip/px30-cobra-ltk050h3146w-a2.dts
src/arm64/rockchip/px30-cobra-ltk050h3146w.dts
src/arm64/rockchip/px30-cobra-ltk050h3148w.dts
src/arm64/rockchip/px30-cobra-ltk500hd1829.dts
src/arm64/rockchip/px30-evb.dts
src/arm64/rockchip/px30-pp1516-ltk050h3146w-a2.dts
src/arm64/rockchip/px30-pp1516-ltk050h3148w.dts
src/arm64/rockchip/px30-pp1516.dtsi
src/arm64/rockchip/px30-ringneck-haikou-video-demo.dtso
src/arm64/rockchip/px30.dtsi
src/arm64/rockchip/rk3308-sakurapi-rk3308b.dts [new file with mode: 0644]
src/arm64/rockchip/rk3326-anbernic-rg351m.dtsi
src/arm64/rockchip/rk3326-gameforce-chi.dts
src/arm64/rockchip/rk3326-odroid-go.dtsi
src/arm64/rockchip/rk3328.dtsi
src/arm64/rockchip/rk3368-lba3368.dts
src/arm64/rockchip/rk3399-base.dtsi
src/arm64/rockchip/rk3399-gru-chromebook.dtsi
src/arm64/rockchip/rk3399-gru-scarlet.dtsi
src/arm64/rockchip/rk3399-hugsun-x99.dts
src/arm64/rockchip/rk3399-pinebook-pro.dts
src/arm64/rockchip/rk3399-pinephone-pro.dts
src/arm64/rockchip/rk3399-puma-haikou-video-demo.dtso
src/arm64/rockchip/rk3399-rock-4c-plus.dts
src/arm64/rockchip/rk3399-rockpro64-screen.dtso [new file with mode: 0644]
src/arm64/rockchip/rk3399-rockpro64.dtsi
src/arm64/rockchip/rk3399-sapphire-excavator.dts
src/arm64/rockchip/rk3528-pinctrl.dtsi
src/arm64/rockchip/rk3528-radxa-e20c.dts
src/arm64/rockchip/rk3528.dtsi
src/arm64/rockchip/rk3562.dtsi
src/arm64/rockchip/rk3566-anbernic-rgxx3.dtsi
src/arm64/rockchip/rk3566-bigtreetech-cb2.dtsi
src/arm64/rockchip/rk3566-pinenote.dtsi
src/arm64/rockchip/rk3566-pinetab2.dtsi
src/arm64/rockchip/rk3568-evb1-v10.dts
src/arm64/rockchip/rk3568-nanopi-r5s.dts
src/arm64/rockchip/rk3568-nanopi-r5s.dtsi
src/arm64/rockchip/rk3576-armsom-sige5-v1.2-wifibt.dtso [new file with mode: 0644]
src/arm64/rockchip/rk3576-armsom-sige5.dts
src/arm64/rockchip/rk3576-evb1-v10.dts
src/arm64/rockchip/rk3576-luckfox-core3576.dtsi [new file with mode: 0644]
src/arm64/rockchip/rk3576-luckfox-omni3576.dts [new file with mode: 0644]
src/arm64/rockchip/rk3576-nanopi-m5.dts [new file with mode: 0644]
src/arm64/rockchip/rk3576-rock-4d.dts
src/arm64/rockchip/rk3576.dtsi
src/arm64/rockchip/rk3582-radxa-e52c.dts
src/arm64/rockchip/rk3588-armsom-sige7.dts
src/arm64/rockchip/rk3588-evb1-v10.dts
src/arm64/rockchip/rk3588-friendlyelec-cm3588-nas.dts
src/arm64/rockchip/rk3588-jaguar-ethernet-switch.dtso [new file with mode: 0644]
src/arm64/rockchip/rk3588-jaguar.dts
src/arm64/rockchip/rk3588-nanopc-t6.dtsi
src/arm64/rockchip/rk3588-orangepi-5-plus.dts
src/arm64/rockchip/rk3588-orangepi-5.dtsi
src/arm64/rockchip/rk3588-rock-5b-5bp-5t.dtsi [new file with mode: 0644]
src/arm64/rockchip/rk3588-rock-5b.dtsi
src/arm64/rockchip/rk3588-rock-5t.dts [new file with mode: 0644]
src/arm64/rockchip/rk3588-tiger.dtsi
src/arm64/rockchip/rk3588-turing-rk1.dtsi
src/arm64/rockchip/rk3588j.dtsi
src/arm64/rockchip/rk3588s-gameforce-ace.dts
src/arm64/rockchip/rk3588s-orangepi-5.dtsi
src/arm64/rockchip/rk3588s-roc-pc.dts [new file with mode: 0644]
src/arm64/rockchip/rk8xx.h [new file with mode: 0644]
src/arm64/sophgo/sg2000-milkv-duo-module-01-evb.dts [new file with mode: 0644]
src/arm64/sophgo/sg2000-milkv-duo-module-01.dtsi [new file with mode: 0644]
src/arm64/sophgo/sg2000.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp25-pinctrl.dtsi
src/arm64/st/stm32mp251.dtsi
src/arm64/st/stm32mp257f-ev1.dts
src/arm64/ti/k3-am62-lp-sk.dts
src/arm64/ti/k3-am62-main.dtsi
src/arm64/ti/k3-am62-verdin.dtsi
src/arm64/ti/k3-am625-sk.dts
src/arm64/ti/k3-am62a-main.dtsi
src/arm64/ti/k3-am62a-wakeup.dtsi
src/arm64/ti/k3-am62a7-sk.dts
src/arm64/ti/k3-am62d2-evm.dts [new file with mode: 0644]
src/arm64/ti/k3-am62d2.dtsi [new file with mode: 0644]
src/arm64/ti/k3-am62p-j722s-common-main.dtsi
src/arm64/ti/k3-am62p-j722s-common-thermal.dtsi
src/arm64/ti/k3-am62p-verdin.dtsi
src/arm64/ti/k3-am62p5-sk.dts
src/arm64/ti/k3-am62p5.dtsi
src/arm64/ti/k3-am62x-sk-common.dtsi
src/arm64/ti/k3-am642-evm-pcie0-ep.dtso
src/arm64/ti/k3-am642-phyboard-electra-rdk.dts
src/arm64/ti/k3-am65-main.dtsi
src/arm64/ti/k3-am65-wakeup.dtsi
src/arm64/ti/k3-am654-base-board.dts
src/arm64/ti/k3-am654-pcie-usb2.dtso
src/arm64/ti/k3-am654-pcie-usb3.dtso
src/arm64/ti/k3-am68-sk-base-board.dts
src/arm64/ti/k3-am69-sk.dts
src/arm64/ti/k3-j721s2-main.dtsi
src/arm64/ti/k3-j722s-evm.dts
src/arm64/ti/k3-j722s-main.dtsi
src/arm64/ti/k3-j722s.dtsi
src/arm64/ti/k3-j784s4-j742s2-main-common.dtsi
src/arm64/ti/k3-pinctrl.h
src/loongarch/loongson-2k0500-ref.dts
src/loongarch/loongson-2k0500.dtsi
src/loongarch/loongson-2k1000-ref.dts
src/loongarch/loongson-2k1000.dtsi
src/loongarch/loongson-2k2000-ref.dts
src/loongarch/loongson-2k2000.dtsi
src/mips/lantiq/danube_easy50712.dts
src/mips/mobileye/eyeq5-epm5.dts
src/mips/mobileye/eyeq5.dtsi
src/mips/mobileye/eyeq6h.dtsi
src/mips/qca/ar9132.dtsi
src/mips/qca/ar9132_tl_wr1043nd_v1.dts
src/mips/qca/ar9331.dtsi
src/mips/qca/ar9331_dpt_module.dts
src/mips/qca/ar9331_dragino_ms14.dts
src/mips/qca/ar9331_omega.dts
src/mips/qca/ar9331_openembed_som9331_board.dts
src/mips/qca/ar9331_tl_mr3020.dts
src/mips/ralink/gardena_smart_gateway_mt7688.dts
src/mips/ralink/mt7620a.dtsi
src/mips/ralink/mt7628a.dtsi
src/mips/realtek/cameo-rtl9302c-2x-rtl8224-2xge.dts
src/mips/realtek/rtl930x.dtsi
src/powerpc/microwatt.dts
src/riscv/allwinner/sun20i-d1-devterm-v3.14.dts
src/riscv/andes/qilai-voyager.dts [new file with mode: 0644]
src/riscv/andes/qilai.dtsi [new file with mode: 0644]
src/riscv/sifive/hifive-unleashed-a00.dts
src/riscv/sifive/hifive-unmatched-a00.dts
src/riscv/sophgo/cv180x.dtsi
src/riscv/sophgo/cv1812h-huashan-pi.dts
src/riscv/sophgo/cv18xx-reset.h [new file with mode: 0644]
src/riscv/sophgo/sg2042-cpus.dtsi
src/riscv/sophgo/sg2042-evb-v1.dts [new file with mode: 0644]
src/riscv/sophgo/sg2042-evb-v2.dts [new file with mode: 0644]
src/riscv/sophgo/sg2042.dtsi
src/riscv/sophgo/sg2044-cpus.dtsi
src/riscv/sophgo/sg2044-sophgo-srd3-10.dts
src/riscv/sophgo/sg2044.dtsi
src/riscv/spacemit/k1-bananapi-f3.dts
src/riscv/spacemit/k1-pinctrl.dtsi
src/riscv/spacemit/k1.dtsi
src/riscv/starfive/jh7110-common.dtsi
src/riscv/starfive/jh7110-milkv-mars.dts
src/riscv/thead/th1520.dtsi

index 05edf22e6c30368bfee7be61bbb4b682bfbc1d5e..2a096e060ed3d30f243d39b47817d2a5a36361b3 100644 (file)
@@ -135,6 +135,7 @@ properties:
               - minix,neo-u9h
               - nexbox,a1
               - tronsmart,vega-s96
+              - ugoos,am3
               - videostrong,gxm-kiii-pro
               - wetek,core2
           - const: amlogic,s912
index 87128e7b7d28a63e46c758508f617f74da4106c0..f5b54b4fc55de28b700479766897dbfb6b1cc5bd 100644 (file)
@@ -41,10 +41,10 @@ additionalProperties: false
 examples:
 
   - |
-   #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
 
-   trbe {
-     compatible = "arm,trace-buffer-extension";
-     interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
-   };
+    trbe {
+        compatible = "arm,trace-buffer-extension";
+        interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
+    };
 ...
index 01333ac111fbb076582a6c0e801903c3500b459f..456dbf7b5ec8f4442be815284e1ad085287dc443 100644 (file)
@@ -87,6 +87,7 @@ properties:
               - facebook,greatlakes-bmc
               - facebook,harma-bmc
               - facebook,minerva-cmc
+              - facebook,santabarbara-bmc
               - facebook,yosemite4-bmc
               - ibm,blueridge-bmc
               - ibm,everest-bmc
@@ -98,6 +99,7 @@ properties:
               - inventec,starscream-bmc
               - inventec,transformer-bmc
               - jabil,rbp-bmc
+              - nvidia,gb200nvl-bmc
               - qcom,dc-scm-v1-bmc
               - quanta,s6q-bmc
               - ufispace,ncplite-bmc
diff --git a/Bindings/arm/axiado.yaml b/Bindings/arm/axiado.yaml
new file mode 100644 (file)
index 0000000..bfabe7b
--- /dev/null
@@ -0,0 +1,23 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/axiado.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Axiado Platforms
+
+maintainers:
+  - Harshit Shah <hshah@axiado.com>
+
+properties:
+  $nodename:
+    const: '/'
+  compatible:
+    oneOf:
+      - description: AX3000 based boards
+        items:
+          - enum:
+              - axiado,ax3000-evk       # Axiado AX3000 Evaluation Board
+          - const: axiado,ax3000       # Axiado AX3000 SoC
+
+additionalProperties: true
diff --git a/Bindings/arm/cix.yaml b/Bindings/arm/cix.yaml
new file mode 100644 (file)
index 0000000..114dab4
--- /dev/null
@@ -0,0 +1,26 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/cix.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: CIX platforms
+
+maintainers:
+  - Peter Chen <peter.chen@cixtech.com>
+  - Fugang Duan <fugang.duan@cixtech.com>
+
+properties:
+  $nodename:
+    const: '/'
+  compatible:
+    oneOf:
+
+      - description: Radxa Orion O6
+        items:
+          - const: radxa,orion-o6
+          - const: cix,sky1
+
+additionalProperties: true
+
+...
index 2e9ab95830050053d700a8b0f56be2078a115502..5bd517befb680548a248e30457f937f26a66ed18 100644 (file)
@@ -200,6 +200,7 @@ properties:
       - qcom,kryo385
       - qcom,kryo465
       - qcom,kryo468
+      - qcom,kryo470
       - qcom,kryo485
       - qcom,kryo560
       - qcom,kryo570
diff --git a/Bindings/arm/freescale/fsl,vf610-mscm-ir.txt b/Bindings/arm/freescale/fsl,vf610-mscm-ir.txt
deleted file mode 100644 (file)
index 6dd6f39..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-Freescale Vybrid Miscellaneous System Control - Interrupt Router
-
-The MSCM IP contains multiple sub modules, this binding describes the second
-block of registers which control the interrupt router. The interrupt router
-allows to configure the recipient of each peripheral interrupt. Furthermore
-it controls the directed processor interrupts. The module is available in all
-Vybrid SoC's but is only really useful in dual core configurations (VF6xx
-which comes with a Cortex-A5/Cortex-M4 combination).
-
-Required properties:
-- compatible:          "fsl,vf610-mscm-ir"
-- reg:                 the register range of the MSCM Interrupt Router
-- fsl,cpucfg:          The handle to the MSCM CPU configuration node, required
-                       to get the current CPU ID
-- interrupt-controller:        Identifies the node as an interrupt controller
-- #interrupt-cells:    Two cells, interrupt number and cells.
-                       The hardware interrupt number according to interrupt
-                       assignment of the interrupt router is required.
-                       Flags get passed only when using GIC as parent. Flags
-                       encoding as documented by the GIC bindings.
-
-Example:
-       mscm_ir: interrupt-controller@40001800 {
-               compatible = "fsl,vf610-mscm-ir";
-               reg = <0x40001800 0x400>;
-               fsl,cpucfg = <&mscm_cpucfg>;
-               interrupt-controller;
-               #interrupt-cells = <2>;
-               interrupt-parent = <&intc>;
-       }
index d3b5e6923e4166e35760c17c772aa0195137de93..a3e9f9e0735a8808721ebba713f14818ee49172a 100644 (file)
@@ -89,6 +89,7 @@ properties:
       - description: i.MX28 based Boards
         items:
           - enum:
+              - amarula,imx28-rmm
               - armadeus,imx28-apf28      # APF28 SoM
               - bluegiga,apx4devkit       # Bluegiga APx4 SoM on dev board
               - crystalfontz,cfa10036     # Crystalfontz CFA-10036 SoM
@@ -769,6 +770,15 @@ properties:
           - const: dh,imx6ull-dhcor-som
           - const: fsl,imx6ull
 
+      - description: i.MX6ULL Engicam MicroGEA SoM based boards
+        items:
+          - enum:
+              - engicam,microgea-imx6ull-bmm       # i.MX6ULL Engicam MicroGEA BMM Board
+              - engicam,microgea-imx6ull-gtw       # i.MX6ULL Engicam MicroGEA GTW Board
+              - engicam,microgea-imx6ull-rmm       # i.MX6ULL Engicam MicroGEA RMM Board
+          - const: engicam,microgea-imx6ull        # i.MX6ULL Engicam MicroGEA SoM
+          - const: fsl,imx6ull
+
       - description: i.MX6ULL PHYTEC phyBOARD-Segin
         items:
           - enum:
@@ -1095,6 +1105,7 @@ properties:
               - gateworks,imx8mp-gw74xx   # i.MX8MP Gateworks Board
               - gateworks,imx8mp-gw75xx-2x # i.MX8MP Gateworks Board
               - gateworks,imx8mp-gw82xx-2x # i.MX8MP Gateworks Board
+              - gocontroll,moduline-display # GOcontroll Moduline Display controller
               - 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
@@ -1395,6 +1406,13 @@ properties:
               - fsl,imx95-19x19-evk       # i.MX95 19x19 EVK Board
           - const: fsl,imx95
 
+      - description: PHYTEC i.MX 95 FPSC based Boards
+        items:
+          - enum:
+              - phytec,imx95-libra-rdk-fpsc   # Libra-i.MX 95 FPSC
+          - const: phytec,imx95-phycore-fpsc  # phyCORE-i.MX 95 FPSC
+          - const: fsl,imx95
+
       - description: i.MXRT1050 based Boards
         items:
           - enum:
index a7e0a72f6e4cb87c444e762fffd3309fba0d517e..19ed9448c9c2d5a27c96a87b10be44d1b8994c52 100644 (file)
@@ -27,6 +27,11 @@ properties:
           - enum:
               - mediatek,mt2712-evb
           - const: mediatek,mt2712
+      - items:
+          - enum:
+              - jty,d101
+              - lenovo,a369i
+          - const: mediatek,mt6572
       - items:
           - enum:
               - mediatek,mt6580-evbp1
@@ -302,6 +307,10 @@ properties:
           - const: google,steelix-sku196608
           - const: google,steelix
           - const: mediatek,mt8186
+      - description: Google Squirtle (Acer Chromebook Spin 311 (R724T)
+        items:
+          - const: google,squirtle
+          - const: mediatek,mt8186
       - description: Google Starmie (ASUS Chromebook Enterprise CM30 (CM3001))
         items:
           - const: google,starmie-sku0
@@ -350,9 +359,6 @@ properties:
           - const: mediatek,mt8186
       - description: Google Voltorb (Acer Chromebook 311 C723/C732T)
         items:
-          - enum:
-              - google,voltorb-sku589824
-              - google,voltorb-sku589825
           - const: google,voltorb
           - const: mediatek,mt8186
       - items:
index 4c43eaf3632e4ec8e7d9aeac62f7204e2af4405a..f73bb8ec3a1a1b9594eb059b72d95dcbf8c87c6b 100644 (file)
@@ -35,6 +35,11 @@ properties:
           - enum:
               - dell,wyse-ariel
           - const: marvell,mmp3
+      - description: PXA1908 based boards
+        items:
+          - enum:
+              - samsung,coreprimevelte
+          - const: marvell,pxa1908
 
 additionalProperties: true
 
index 56f78f0f3803fedcb6422efd6adec3bbc81c2e03..ae43b35565808ed27cd8354b9a342545c4a98ed6 100644 (file)
@@ -209,6 +209,7 @@ properties:
               - samsung,hlte
               - sony,xperia-amami
               - sony,xperia-honami
+              - sony,xperia-togari
           - const: qcom,msm8974
 
       - items:
@@ -230,6 +231,11 @@ properties:
           - const: qcom,msm8974pro
           - const: qcom,msm8974
 
+      - items:
+          - enum:
+              - longcheer,l9360
+          - const: qcom,msm8976
+
       - items:
           - enum:
               - acer,a1-724
index 5772d905f390e53b44f9093d32b869a7e0655db6..28db6bd6aa5b54ffbf5ec86aaa29e3716883985c 100644 (file)
@@ -258,6 +258,11 @@ properties:
           - const: firefly,rk3566-roc-pc
           - const: rockchip,rk3566
 
+      - description: Firefly Station M3
+        items:
+          - const: firefly,rk3588s-roc-pc
+          - const: rockchip,rk3588s
+
       - description: Firefly Station P2
         items:
           - const: firefly,rk3568-roc-pc
@@ -295,6 +300,12 @@ properties:
               - friendlyarm,nanopi-r4s-enterprise
           - const: rockchip,rk3399
 
+      - description: FriendlyElec NanoPi M5 series boards
+        items:
+          - enum:
+              - friendlyarm,nanopi-m5
+          - const: rockchip,rk3576
+
       - description: FriendlyElec NanoPi R5 series boards
         items:
           - enum:
@@ -715,6 +726,13 @@ properties:
           - const: lckfb,tspi-rk3566
           - const: rockchip,rk3566
 
+      - description: Luckfox Core3576 Module based boards
+        items:
+          - enum:
+              - luckfox,omni3576
+          - const: luckfox,core3576
+          - const: rockchip,rk3576
+
       - description: Lunzn FastRhino R66S / R68S
         items:
           - enum:
@@ -961,6 +979,11 @@ properties:
           - const: radxa,rock-s0
           - const: rockchip,rk3308
 
+      - description: Radxa ROCK 5T
+        items:
+          - const: radxa,rock-5t
+          - const: rockchip,rk3588
+
       - description: Radxa ZERO 3W/3E
         items:
           - enum:
@@ -1109,6 +1132,11 @@ properties:
           - const: rockchip,rk3588-toybrick-x0
           - const: rockchip,rk3588
 
+      - description: Sakura Pi RK3308B
+        items:
+          - const: sakurapi,rk3308-sakurapi-rk3308b
+          - const: rockchip,rk3308
+
       - description: Sinovoip RK3308 Banana Pi P2 Pro
         items:
           - const: sinovoip,rk3308-bpi-p2pro
index 46c1af851be7497a5b1f3707b9ffde1de13dcc42..55b2200d6e75b70448ee655c9f836ba916e836b8 100644 (file)
@@ -25,6 +25,7 @@ select:
           - rockchip,rk3288-pmu
           - rockchip,rk3368-pmu
           - rockchip,rk3399-pmu
+          - rockchip,rk3528-pmu
           - rockchip,rk3562-pmu
           - rockchip,rk3568-pmu
           - rockchip,rk3576-pmu
@@ -44,6 +45,7 @@ properties:
           - rockchip,rk3288-pmu
           - rockchip,rk3368-pmu
           - rockchip,rk3399-pmu
+          - rockchip,rk3528-pmu
           - rockchip,rk3562-pmu
           - rockchip,rk3568-pmu
           - rockchip,rk3576-pmu
index b3be184c7e563478aa37eb16a69c08ff7f70af29..26fe899badc5bc585a50ab5c1ce8f745a9761c5a 100644 (file)
@@ -45,6 +45,12 @@ properties:
           - const: samsung,aries
           - const: samsung,s5pv210
 
+      - description: Exynos2200 based boards
+        items:
+          - enum:
+              - samsung,g0s                     # Samsung Galaxy S22+ (SM-S906B)
+          - const: samsung,exynos2200
+
       - description: Exynos3250 based boards
         items:
           - enum:
index 3e996346b2644806486757b1dd36bc4cb215a51e..4970b9167d1c4dfa0effb1019001c9840c0d50d5 100644 (file)
@@ -55,17 +55,17 @@ unevaluatedProperties: false
 examples:
   - |
     ahb {
-      compatible = "st,mlahb", "simple-bus";
-      #address-cells = <1>;
-      #size-cells = <1>;
-      ranges;
-      dma-ranges = <0x00000000 0x38000000 0x10000>,
-                   <0x10000000 0x10000000 0x60000>,
-                   <0x30000000 0x30000000 0x60000>;
+        compatible = "st,mlahb", "simple-bus";
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges;
+        dma-ranges = <0x00000000 0x38000000 0x10000>,
+                     <0x10000000 0x10000000 0x60000>,
+                     <0x30000000 0x30000000 0x60000>;
 
-      m4_rproc: m4@10000000 {
-       reg = <0x10000000 0x40000>;
-      };
+        m4_rproc: m4@10000000 {
+            reg = <0x10000000 0x40000>;
+        };
     };
 
 ...
index 408532504a24d5e570c738b16de30dcf8deead6a..ad144c02eb7edf4fc2191ab0af244342dcaa59d5 100644 (file)
@@ -121,6 +121,7 @@ properties:
               - st,stm32mp157a-dk1-scmi
               - st,stm32mp157c-dk2
               - st,stm32mp157c-dk2-scmi
+              - st,stm32mp157f-dk2
           - const: st,stm32mp157
 
       - items:
index 7807ea613258945d319c2c57f0b44cf83473aca0..c25a22fe4d25cbd8a8132689f1326548f7f43f2c 100644 (file)
@@ -341,15 +341,11 @@ properties:
           - const: allwinner,i12-tvbox
           - const: allwinner,sun7i-a20
 
-      - description: ICnova A20 ADB4006
+      - description: ICnova A20
         items:
-          - const: incircuit,icnova-a20-adb4006
-          - const: incircuit,icnova-a20
-          - const: allwinner,sun7i-a20
-
-      - description: ICNova A20 SWAC
-        items:
-          - const: incircuit,icnova-a20-swac
+          - enum:
+              - incircuit,icnova-a20-adb4006
+              - incircuit,icnova-a20-swac
           - const: incircuit,icnova-a20
           - const: allwinner,sun7i-a20
 
@@ -760,21 +756,12 @@ properties:
           - const: pine64,pinebook
           - const: allwinner,sun50i-a64
 
-      - description: Pine64 PinePhone Developer Batch (1.0)
-        items:
-          - const: pine64,pinephone-1.0
-          - const: pine64,pinephone
-          - const: allwinner,sun50i-a64
-
-      - description: Pine64 PinePhone Braveheart (1.1)
+      - description: Pine64 PinePhone
         items:
-          - const: pine64,pinephone-1.1
-          - const: pine64,pinephone
-          - const: allwinner,sun50i-a64
-
-      - description: Pine64 PinePhone (1.2)
-        items:
-          - const: pine64,pinephone-1.2
+          - enum:
+              - pine64,pinephone-1.0 # Developer Batch (1.0)
+              - pine64,pinephone-1.1 # Braveheart (1.1)
+              - pine64,pinephone-1.2
           - const: pine64,pinephone
           - const: allwinner,sun50i-a64
 
@@ -996,6 +983,11 @@ properties:
           - const: xunlong,orangepi-3
           - const: allwinner,sun50i-h6
 
+      - description: Xunlong OrangePi 4A
+        items:
+          - const: xunlong,orangepi-4a
+          - const: allwinner,sun55i-t527
+
       - description: Xunlong OrangePi Lite
         items:
           - const: xunlong,orangepi-lite
index 9cae3268a8274fd3a38580939c79a6f21de48a3f..1634dab53269c153c90d13b2aa9fc34ba787b426 100644 (file)
@@ -52,6 +52,10 @@ properties:
               - nvidia,cardhu-a04
           - const: nvidia,cardhu
           - const: nvidia,tegra30
+      - description: ASUS Portable AiO P1801-T
+        items:
+          - const: asus,p1801-t
+          - const: nvidia,tegra30
       - description: ASUS Transformers Device family
         items:
           - enum:
@@ -61,6 +65,10 @@ properties:
               - asus,tf300tl
               - asus,tf700t
           - const: nvidia,tegra30
+      - description: Asus VivoTab RT
+        items:
+          - const: asus,tf600t
+          - const: nvidia,tegra30
       - description: LG Optimus 4X P880
         items:
           - const: lg,p880
@@ -242,5 +250,10 @@ properties:
           - const: nvidia,p3768-0000+p3767-0005
           - const: nvidia,p3767-0005
           - const: nvidia,tegra234
+      - description: NVIDIA P3971-0089+P3834-0008 Engineering Reference Platform
+        items:
+          - const: nvidia,p3971-0089+p3834-0008
+          - const: nvidia,p3834-0008
+          - const: nvidia,tegra264
 
 additionalProperties: true
index ea4fbf655220be10199a4ff5cf8200db18c690ca..be70819020c5af0d291e4aa93d11449ca816d3fe 100644 (file)
@@ -16,6 +16,7 @@ properties:
       - nvidia,tegra186-pmc
       - nvidia,tegra194-pmc
       - nvidia,tegra234-pmc
+      - nvidia,tegra264-pmc
 
   reg:
     minItems: 4
index bf6003d8fb764a374561de6a650afa2d51e88fd6..e80c653fa4382acef964e182ecc4ae5445088936 100644 (file)
@@ -25,6 +25,12 @@ properties:
               - ti,am62a7-sk
           - const: ti,am62a7
 
+      - description: K3 AM62D2 SoC and Boards
+        items:
+          - enum:
+              - ti,am62d2-evm
+          - const: ti,am62d2
+
       - description: K3 AM62A7 SoC PHYTEC phyBOARD-Lyra
         items:
           - const: phytec,am62a7-phyboard-lyra-rdk
index 3603edd7361d3d3984ee8fb0ec30a60da28ac3a8..aa5df4692e37201eef97a6c80f23642f83e65ffc 100644 (file)
@@ -107,6 +107,7 @@ properties:
               - compulab,cm-t335
               - moxa,uc-8100-me-t
               - novatech,am335x-lxm
+              - seeed,am335x-bone-green-eco
               - ti,am335x-bone
               - ti,am335x-evm
               - ti,am3359-icev2
diff --git a/Bindings/bus/fsl,imx8mp-aipstz.yaml b/Bindings/bus/fsl,imx8mp-aipstz.yaml
new file mode 100644 (file)
index 0000000..993293e
--- /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/bus/fsl,imx8mp-aipstz.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Secure AHB to IP Slave bus (AIPSTZ) bridge
+
+description:
+  The secure AIPS bridge (AIPSTZ) acts as a bridge for AHB masters issuing
+  transactions to IP Slave peripherals. Additionally, this module offers access
+  control configurations meant to restrict which peripherals a master can
+  access.
+
+maintainers:
+  - Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8mp-aipstz
+
+  reg:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  "#access-controller-cells":
+    const: 3
+    description:
+      First cell - consumer ID
+      Second cell - consumer type (master or peripheral)
+      Third cell - configuration value
+
+  ranges: true
+
+# borrowed from simple-bus.yaml, no additional requirements for children
+patternProperties:
+  "@(0|[1-9a-f][0-9a-f]*)$":
+    type: object
+    additionalProperties: true
+    properties:
+      reg:
+        items:
+          minItems: 2
+          maxItems: 4
+        minItems: 1
+        maxItems: 1024
+      ranges:
+        oneOf:
+          - items:
+              minItems: 3
+              maxItems: 7
+            minItems: 1
+            maxItems: 1024
+          - $ref: /schemas/types.yaml#/definitions/flag
+    anyOf:
+      - required:
+          - reg
+      - required:
+          - ranges
+
+required:
+  - compatible
+  - reg
+  - power-domains
+  - "#address-cells"
+  - "#size-cells"
+  - "#access-controller-cells"
+  - ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8mp-clock.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    bus@30df0000 {
+        compatible = "fsl,imx8mp-aipstz";
+        reg = <0x30df0000 0x10000>;
+        ranges = <0x30c00000 0x30c00000 0x400000>;
+        power-domains = <&pgc_audio>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        #access-controller-cells = <3>;
+
+        dma-controller@30e00000 {
+            compatible = "fsl,imx8mp-sdma", "fsl,imx8mq-sdma";
+            reg = <0x30e00000 0x10000>;
+            #dma-cells = <3>;
+            clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SDMA3_ROOT>,
+                     <&clk IMX8MP_CLK_AUDIO_ROOT>;
+            clock-names = "ipg", "ahb";
+            interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+            fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
+        };
+    };
index 7e1ffc551046535b8f4b4e11f2a1c4c121e35027..4adbb7afa889d47bc51bb995f626e85186cb1f36 100644 (file)
@@ -103,11 +103,14 @@ examples:
         clock-names = "msi", "ahb";
         power-domains = <&pd IMX_SC_R_DC_0>;
 
-        syscon@56221000 {
-            compatible = "fsl,imx8qxp-mipi-lvds-csr", "syscon", "simple-mfd";
+        bus@56221000 {
+            compatible = "simple-pm-bus", "syscon";
             reg = <0x56221000 0x1000>;
             clocks = <&mipi_lvds_0_di_mipi_lvds_regs_lpcg IMX_LPCG_CLK_4>;
             clock-names = "ipg";
+            #address-cells = <1>;
+            #size-cells = <1>;
+            ranges;
 
             pxl2dpi {
                 compatible = "fsl,imx8qxp-pxl2dpi";
diff --git a/Bindings/clock/alphascale,acc.txt b/Bindings/clock/alphascale,acc.txt
deleted file mode 100644 (file)
index c9fb932..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-Alphascale Clock Controller
-
-The ACC (Alphascale Clock Controller) is responsible for choosing proper
-clock source, setting dividers and clock gates.
-
-Required properties for the ACC node:
- - compatible: must be "alphascale,asm9260-clock-controller"
- - reg: must contain the ACC register base and size
- - #clock-cells : shall be set to 1.
-
-Simple one-cell clock specifier format is used, where the only cell is used
-as an index of the clock inside the provider.
-It is encouraged to use dt-binding for clock index definitions. SoC specific
-dt-binding should be included to the device tree descriptor. For example
-Alphascale ASM9260:
-#include <dt-bindings/clock/alphascale,asm9260.h>
-
-This binding contains two types of clock providers:
- _AHB_ - AHB gate;
- _SYS_ - adjustable clock source. Not all peripheral have _SYS_ clock provider.
-All clock specific details can be found in the SoC documentation.
-CLKID_AHB_ROM          0
-CLKID_AHB_RAM          1
-CLKID_AHB_GPIO         2
-CLKID_AHB_MAC          3
-CLKID_AHB_EMI          4
-CLKID_AHB_USB0         5
-CLKID_AHB_USB1         6
-CLKID_AHB_DMA0         7
-CLKID_AHB_DMA1         8
-CLKID_AHB_UART0                9
-CLKID_AHB_UART1                10
-CLKID_AHB_UART2                11
-CLKID_AHB_UART3                12
-CLKID_AHB_UART4                13
-CLKID_AHB_UART5                14
-CLKID_AHB_UART6                15
-CLKID_AHB_UART7                16
-CLKID_AHB_UART8                17
-CLKID_AHB_UART9                18
-CLKID_AHB_I2S0         19
-CLKID_AHB_I2C0         20
-CLKID_AHB_I2C1         21
-CLKID_AHB_SSP0         22
-CLKID_AHB_IOCONFIG     23
-CLKID_AHB_WDT          24
-CLKID_AHB_CAN0         25
-CLKID_AHB_CAN1         26
-CLKID_AHB_MPWM         27
-CLKID_AHB_SPI0         28
-CLKID_AHB_SPI1         29
-CLKID_AHB_QEI          30
-CLKID_AHB_QUADSPI0     31
-CLKID_AHB_CAMIF                32
-CLKID_AHB_LCDIF                33
-CLKID_AHB_TIMER0       34
-CLKID_AHB_TIMER1       35
-CLKID_AHB_TIMER2       36
-CLKID_AHB_TIMER3       37
-CLKID_AHB_IRQ          38
-CLKID_AHB_RTC          39
-CLKID_AHB_NAND         40
-CLKID_AHB_ADC0         41
-CLKID_AHB_LED          42
-CLKID_AHB_DAC0         43
-CLKID_AHB_LCD          44
-CLKID_AHB_I2S1         45
-CLKID_AHB_MAC1         46
-
-CLKID_SYS_CPU          47
-CLKID_SYS_AHB          48
-CLKID_SYS_I2S0M                49
-CLKID_SYS_I2S0S                50
-CLKID_SYS_I2S1M                51
-CLKID_SYS_I2S1S                52
-CLKID_SYS_UART0                53
-CLKID_SYS_UART1                54
-CLKID_SYS_UART2                55
-CLKID_SYS_UART3                56
-CLKID_SYS_UART4                56
-CLKID_SYS_UART5                57
-CLKID_SYS_UART6                58
-CLKID_SYS_UART7                59
-CLKID_SYS_UART8                60
-CLKID_SYS_UART9                61
-CLKID_SYS_SPI0         62
-CLKID_SYS_SPI1         63
-CLKID_SYS_QUADSPI      64
-CLKID_SYS_SSP0         65
-CLKID_SYS_NAND         66
-CLKID_SYS_TRACE                67
-CLKID_SYS_CAMM         68
-CLKID_SYS_WDT          69
-CLKID_SYS_CLKOUT       70
-CLKID_SYS_MAC          71
-CLKID_SYS_LCD          72
-CLKID_SYS_ADCANA       73
-
-Example of clock consumer with _SYS_ and _AHB_ sinks.
-uart4: serial@80010000 {
-       compatible = "alphascale,asm9260-uart";
-       reg = <0x80010000 0x4000>;
-       clocks = <&acc CLKID_SYS_UART4>, <&acc CLKID_AHB_UART4>;
-       interrupts = <19>;
-};
-
-Clock consumer with only one, _AHB_ sink.
-timer0: timer@80088000 {
-       compatible = "alphascale,asm9260-timer";
-       reg = <0x80088000 0x4000>;
-       clocks = <&acc CLKID_AHB_TIMER0>;
-       interrupts = <29>;
-};
-
diff --git a/Bindings/clock/alphascale,asm9260-clock-controller.yaml b/Bindings/clock/alphascale,asm9260-clock-controller.yaml
new file mode 100644 (file)
index 0000000..1caad41
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/alphascale,asm9260-clock-controller.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Alphascale Clock Controller
+
+maintainers:
+  - Oleksij Rempel <linux@rempel-privat.de>
+
+description: |
+  The ACC (Alphascale Clock Controller) is responsible for choosing proper
+  clock source, setting dividers and clock gates.
+
+  Simple one-cell clock specifier format is used, where the only cell is used
+  as an index of the clock inside the provider.
+  It is encouraged to use dt-binding for clock index definitions. SoC specific
+  dt-binding should be included to the device tree descriptor. For example
+  Alphascale ASM9260:
+
+  #include <dt-bindings/clock/alphascale,asm9260.h>
+
+  This binding contains two types of clock providers:
+
+    _AHB_ - AHB gate;
+    _SYS_ - adjustable clock source. Not all peripheral have _SYS_ clock provider.
+
+  All clock specific details can be found in the SoC documentation.
+
+properties:
+  compatible:
+    const: alphascale,asm9260-clock-controller
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+
+additionalProperties: false
diff --git a/Bindings/clock/apm,xgene-device-clock.yaml b/Bindings/clock/apm,xgene-device-clock.yaml
new file mode 100644 (file)
index 0000000..b27bcb2
--- /dev/null
@@ -0,0 +1,80 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/apm,xgene-device-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: APM X-Gene SoC device clocks
+
+maintainers:
+  - Khuong Dinh <khuong@os.amperecomputing.com>
+
+properties:
+  compatible:
+    const: apm,xgene-device-clock
+
+  reg:
+    minItems: 1
+    maxItems: 2
+
+  reg-names:
+    items:
+      - enum: [ csr-reg, div-reg ]
+      - const: div-reg
+    minItems: 1
+
+  clocks:
+    maxItems: 1
+
+  "#clock-cells":
+    const: 1
+
+  clock-output-names:
+    maxItems: 1
+
+  clock-names:
+    maxItems: 1
+
+  csr-offset:
+    description: Offset to the CSR reset register
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0
+
+  csr-mask:
+    description: CSR reset mask bit
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0xf
+
+  enable-offset:
+    description: Offset to the enable register
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 8
+
+  enable-mask:
+    description: CSR enable mask bit
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0xf
+
+  divider-offset:
+    description: Offset to the divider register
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0
+
+  divider-width:
+    description: Width of the divider register
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0
+
+  divider-shift:
+    description: Bit shift of the divider register
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - '#clock-cells'
+  - clock-output-names
+
+additionalProperties: false
diff --git a/Bindings/clock/apm,xgene-socpll-clock.yaml b/Bindings/clock/apm,xgene-socpll-clock.yaml
new file mode 100644 (file)
index 0000000..bdd4a6b
--- /dev/null
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/apm,xgene-socpll-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: APM X-Gene SoC PLL, PCPPLL, and PMD clocks
+
+maintainers:
+  - Khuong Dinh <khuong@os.amperecomputing.com>
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - apm,xgene-pcppll-clock
+          - apm,xgene-pcppll-v2-clock
+          - apm,xgene-pmd-clock
+          - apm,xgene-socpll-clock
+          - apm,xgene-socpll-v2-clock
+
+  reg:
+    maxItems: 1
+
+  reg-names:
+    items:
+      - enum: [ csr-reg, div-reg ]
+      - const: div-reg
+    minItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    enum: [ pcppll, socpll ]
+
+  "#clock-cells":
+    const: 1
+
+  clock-output-names:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - '#clock-cells'
+  - clock-output-names
+
+additionalProperties: false
diff --git a/Bindings/clock/armada3700-periph-clock.txt b/Bindings/clock/armada3700-periph-clock.txt
deleted file mode 100644 (file)
index fbf58c4..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-* Peripheral Clock bindings for Marvell Armada 37xx SoCs
-
-Marvell Armada 37xx SoCs provide peripheral clocks which are
-used as clock source for the peripheral of the SoC.
-
-There are two different blocks associated to north bridge and south
-bridge.
-
-The peripheral clock consumer should specify the desired clock by
-having the clock ID in its "clocks" phandle cell.
-
-The following is a list of provided IDs for Armada 3700 North bridge clocks:
-ID     Clock name      Description
------------------------------------
-0      mmc             MMC controller
-1      sata_host       Sata Host
-2      sec_at          Security AT
-3      sac_dap         Security DAP
-4      tsecm           Security Engine
-5      setm_tmx        Serial Embedded Trace Module
-6      avs             Adaptive Voltage Scaling
-7      sqf             SPI
-8      pwm             PWM
-9      i2c_2           I2C 2
-10     i2c_1           I2C 1
-11     ddr_phy         DDR PHY
-12     ddr_fclk        DDR F clock
-13     trace           Trace
-14     counter         Counter
-15     eip97           EIP 97
-16     cpu             CPU
-
-The following is a list of provided IDs for Armada 3700 South bridge clocks:
-ID     Clock name      Description
------------------------------------
-0      gbe-50          50 MHz parent clock for Gigabit Ethernet
-1      gbe-core        parent clock for Gigabit Ethernet core
-2      gbe-125         125 MHz parent clock for Gigabit Ethernet
-3      gbe1-50         50 MHz clock for Gigabit Ethernet port 1
-4      gbe0-50         50 MHz clock for Gigabit Ethernet port 0
-5      gbe1-125        125 MHz clock for Gigabit Ethernet port 1
-6      gbe0-125        125 MHz clock for Gigabit Ethernet port 0
-7      gbe1-core       Gigabit Ethernet core port 1
-8      gbe0-core       Gigabit Ethernet core port 0
-9      gbe-bm          Gigabit Ethernet Buffer Manager
-10     sdio            SDIO
-11     usb32-sub2-sys  USB 2 clock
-12     usb32-ss-sys    USB 3 clock
-13     pcie            PCIe controller
-
-Required properties:
-
-- compatible : shall be "marvell,armada-3700-periph-clock-nb" for the
-  north bridge block, or
-  "marvell,armada-3700-periph-clock-sb" for the south bridge block
-- reg : must be the register address of North/South Bridge Clock register
-- #clock-cells : from common clock binding; shall be set to 1
-
-- clocks : list of the parent clock phandle in the following order:
-  TBG-A P, TBG-B P, TBG-A S, TBG-B S and finally the xtal clock.
-
-
-Example:
-
-nb_perih_clk: nb-periph-clk@13000{
-       compatible = "marvell,armada-3700-periph-clock-nb";
-       reg = <0x13000 0x1000>;
-       clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>,
-       <&tbg 3>, <&xtalclk>;
-       #clock-cells = <1>;
-};
diff --git a/Bindings/clock/armada3700-tbg-clock.txt b/Bindings/clock/armada3700-tbg-clock.txt
deleted file mode 100644 (file)
index ed1df32..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-* Time Base Generator Clock bindings for Marvell Armada 37xx SoCs
-
-Marvell Armada 37xx SoCs provide Time Base Generator clocks which are
-used as parent clocks for the peripheral clocks.
-
-The TBG clock consumer should specify the desired clock by having the
-clock ID in its "clocks" phandle cell.
-
-The following is a list of provided IDs and clock names on Armada 3700:
- 0 = TBG A P
- 1 = TBG B P
- 2 = TBG A S
- 3 = TBG B S
-
-Required properties:
-- compatible : shall be "marvell,armada-3700-tbg-clock"
-- reg : must be the register address of North Bridge PLL register
-- #clock-cells : from common clock binding; shall be set to 1
-
-Example:
-
-tbg: tbg@13200 {
-       compatible = "marvell,armada-3700-tbg-clock";
-       reg = <0x13200 0x1000>;
-       clocks = <&xtalclk>;
-       #clock-cells = <1>;
-};
diff --git a/Bindings/clock/artpec6.txt b/Bindings/clock/artpec6.txt
deleted file mode 100644 (file)
index dff9cdf..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-* Clock bindings for Axis ARTPEC-6 chip
-
-The bindings are based on the clock provider binding in
-Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-External clocks:
-----------------
-
-There are two external inputs to the main clock controller which should be
-provided using the common clock bindings.
-- "sys_refclk": External 50 Mhz oscillator (required)
-- "i2s_refclk": Alternate audio reference clock (optional).
-
-Main clock controller
----------------------
-
-Required properties:
-- #clock-cells: Should be <1>
-  See dt-bindings/clock/axis,artpec6-clkctrl.h for the list of valid identifiers.
-- compatible: Should be "axis,artpec6-clkctrl"
-- reg: Must contain the base address and length of the system controller
-- clocks:  Must contain a phandle entry for each clock in clock-names
-- clock-names: Must include the external oscillator ("sys_refclk"). Optional
-  ones are the audio reference clock ("i2s_refclk") and the audio fractional
-  dividers ("frac_clk0" and "frac_clk1").
-
-Examples:
-
-ext_clk: ext_clk {
-       #clock-cells = <0>;
-       compatible = "fixed-clock";
-       clock-frequency = <50000000>;
-};
-
-clkctrl: clkctrl@f8000000 {
-       #clock-cells = <1>;
-       compatible = "axis,artpec6-clkctrl";
-       reg = <0xf8000000 0x48>;
-       clocks = <&ext_clk>;
-       clock-names = "sys_refclk";
-};
diff --git a/Bindings/clock/axis,artpec6-clkctrl.yaml b/Bindings/clock/axis,artpec6-clkctrl.yaml
new file mode 100644 (file)
index 0000000..a782693
--- /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/axis,artpec6-clkctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Axis ARTPEC-6 clock controller
+
+maintainers:
+  - Lars Persson <lars.persson@axis.com>
+
+properties:
+  compatible:
+    const: axis,artpec6-clkctrl
+
+  reg:
+    maxItems: 1
+
+  "#clock-cells":
+    const: 1
+
+  clocks:
+    minItems: 1
+    items:
+      - description: external 50 MHz oscillator.
+      - description: optional audio reference clock.
+      - description: fractional audio clock divider 0.
+      - description: fractional audio clock divider 1.
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: sys_refclk
+      - const: i2s_refclk
+      - const: frac_clk0
+      - const: frac_clk1
+
+required:
+  - compatible
+  - reg
+  - "#clock-cells"
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@f8000000 {
+        compatible = "axis,artpec6-clkctrl";
+        reg = <0xf8000000 0x48>;
+        #clock-cells = <1>;
+        clocks = <&ext_clk>;
+        clock-names = "sys_refclk";
+    };
diff --git a/Bindings/clock/brcm,bcm2835-cprman.txt b/Bindings/clock/brcm,bcm2835-cprman.txt
deleted file mode 100644 (file)
index 9e0b03a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-Broadcom BCM2835 CPRMAN clocks
-
-This binding uses the common clock binding:
-    Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-The CPRMAN clock controller generates clocks in the audio power domain
-of the BCM2835.  There is a level of PLLs deriving from an external
-oscillator, a level of PLL dividers that produce channels off of the
-few PLLs, and a level of mostly-generic clock generators sourcing from
-the PLL channels.  Most other hardware components source from the
-clock generators, but a few (like the ARM or HDMI) will source from
-the PLL dividers directly.
-
-Required properties:
-- compatible:  should be one of the following,
-       "brcm,bcm2711-cprman"
-       "brcm,bcm2835-cprman"
-- #clock-cells:        Should be <1>. The permitted clock-specifier values can be
-                 found in include/dt-bindings/clock/bcm2835.h
-- reg:         Specifies base physical address and size of the registers
-- clocks:      phandles to the parent clocks used as input to the module, in
-                 the following order:
-
-                 - External oscillator
-                 - DSI0 byte clock
-                 - DSI0 DDR2 clock
-                 - DSI0 DDR clock
-                 - DSI1 byte clock
-                 - DSI1 DDR2 clock
-                 - DSI1 DDR clock
-
-                 Only external oscillator is required.  The DSI clocks may
-                 not be present, in which case their children will be
-                 unusable.
-
-Example:
-
-       clk_osc: clock@3 {
-               compatible = "fixed-clock";
-               reg = <3>;
-               #clock-cells = <0>;
-               clock-output-names = "osc";
-               clock-frequency = <19200000>;
-       };
-
-       clocks: cprman@7e101000 {
-               compatible = "brcm,bcm2835-cprman";
-               #clock-cells = <1>;
-               reg = <0x7e101000 0x2000>;
-               clocks = <&clk_osc>;
-       };
-
-       i2c0: i2c@7e205000 {
-               compatible = "brcm,bcm2835-i2c";
-               reg = <0x7e205000 0x1000>;
-               interrupts = <2 21>;
-               clocks = <&clocks BCM2835_CLOCK_VPU>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-       };
diff --git a/Bindings/clock/brcm,bcm2835-cprman.yaml b/Bindings/clock/brcm,bcm2835-cprman.yaml
new file mode 100644 (file)
index 0000000..b0cf76c
--- /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/clock/brcm,bcm2835-cprman.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM2835 CPRMAN clocks
+
+maintainers:
+  - Stefan Wahren <wahrenst@gmx.net>
+  - Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
+
+description:
+  The CPRMAN clock controller generates clocks in the audio power domain of the
+  BCM2835.  There is a level of PLLs deriving from an external oscillator, a
+  level of PLL dividers that produce channels off of the few PLLs, and a level
+  of mostly-generic clock generators sourcing from the PLL channels.  Most other
+  hardware components source from the clock generators, but a few (like the ARM
+  or HDMI) will source from the PLL dividers directly.
+
+properties:
+  compatible:
+    enum:
+      - brcm,bcm2711-cprman
+      - brcm,bcm2835-cprman
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+  clocks:
+    minItems: 1
+    items:
+      - description: External oscillator clock.
+      - description: DSI0 byte clock.
+      - description: DSI0 DDR2 clock.
+      - description: DSI0 DDR clock.
+      - description: DSI1 byte clock.
+      - description: DSI1 DDR2 clock.
+      - description: DSI1 DDR clock.
+
+additionalProperties: false
+
+required:
+  - compatible
+  - '#clock-cells'
+  - reg
+  - clocks
+
+examples:
+  - |
+    clock-controller@7e101000 {
+        compatible = "brcm,bcm2835-cprman";
+        reg = <0x7e101000 0x2000>;
+        #clock-cells = <1>;
+        clocks = <&clk_osc>;
+    };
diff --git a/Bindings/clock/brcm,bcm53573-ilp.txt b/Bindings/clock/brcm,bcm53573-ilp.txt
deleted file mode 100644 (file)
index 2ebb107..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-Broadcom BCM53573 ILP clock
-===========================
-
-This binding uses the common clock binding:
-    Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-This binding is used for ILP clock (sometimes referred as "slow clock")
-on Broadcom BCM53573 devices using Cortex-A7 CPU.
-
-ILP's rate has to be calculated on runtime and it depends on ALP clock
-which has to be referenced.
-
-This clock is part of PMU (Power Management Unit), a Broadcom's device
-handing power-related aspects. Its node must be sub-node of the PMU
-device.
-
-Required properties:
-- compatible: "brcm,bcm53573-ilp"
-- clocks: has to reference an ALP clock
-- #clock-cells: should be <0>
-- clock-output-names: from common clock bindings, should contain clock
-                     name
-
-Example:
-
-pmu@18012000 {
-       compatible = "simple-mfd", "syscon";
-       reg = <0x18012000 0x00001000>;
-
-       ilp {
-               compatible = "brcm,bcm53573-ilp";
-               clocks = <&alp>;
-               #clock-cells = <0>;
-               clock-output-names = "ilp";
-       };
-};
diff --git a/Bindings/clock/brcm,bcm53573-ilp.yaml b/Bindings/clock/brcm,bcm53573-ilp.yaml
new file mode 100644 (file)
index 0000000..cd291f4
--- /dev/null
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/brcm,bcm53573-ilp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM53573 ILP clock
+
+maintainers:
+  - Rafał Miłecki <rafal@milecki.pl>
+
+description: >
+  ILP clock (sometimes referred as "slow clock") on Broadcom BCM53573 devices
+  using Cortex-A7 CPU.
+
+  ILP's rate has to be calculated on runtime and it depends on ALP clock which
+  has to be referenced.
+
+  This clock is part of PMU (Power Management Unit), a Broadcom device handling
+  power-related aspects. Its node must be sub-node of the PMU device.
+
+properties:
+  compatible:
+    items:
+      - const: brcm,bcm53573-ilp
+
+  clocks:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 0
+
+  clock-output-names:
+    items:
+      - const: ilp
+
+additionalProperties: false
+
+examples:
+  - |
+    ilp {
+        compatible = "brcm,bcm53573-ilp";
+        clocks = <&alp>;
+        #clock-cells = <0>;
+        clock-output-names = "ilp";
+    };
diff --git a/Bindings/clock/brcm,bcm63xx-clocks.txt b/Bindings/clock/brcm,bcm63xx-clocks.txt
deleted file mode 100644 (file)
index 3e7ca55..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-Gated Clock Controller Bindings for MIPS based BCM63XX SoCs
-
-Required properties:
-- compatible: must be one of:
-        "brcm,bcm3368-clocks"
-        "brcm,bcm6318-clocks"
-        "brcm,bcm6318-ubus-clocks"
-        "brcm,bcm6328-clocks"
-        "brcm,bcm6358-clocks"
-        "brcm,bcm6362-clocks"
-        "brcm,bcm6368-clocks"
-        "brcm,bcm63268-clocks"
-
-- reg: Address and length of the register set
-- #clock-cells: must be <1>
-
-
-Example:
-
-clkctl: clock-controller@10000004 {
-       compatible = "brcm,bcm6328-clocks";
-       reg = <0x10000004 0x4>;
-       #clock-cells = <1>;
-};
diff --git a/Bindings/clock/brcm,bcm63xx-clocks.yaml b/Bindings/clock/brcm,bcm63xx-clocks.yaml
new file mode 100644 (file)
index 0000000..56909ea
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/brcm,bcm63xx-clocks.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MIPS based BCM63XX SoCs Gated Clock Controller
+
+maintainers:
+  - Álvaro Fernández Rojas <noltari@gmail.com>
+  - Jonas Gorski <jonas.gorski@gmail.com>
+
+properties:
+  compatible:
+    enum:
+      - brcm,bcm3368-clocks
+      - brcm,bcm6318-clocks
+      - brcm,bcm6318-ubus-clocks
+      - brcm,bcm6328-clocks
+      - brcm,bcm6358-clocks
+      - brcm,bcm6362-clocks
+      - brcm,bcm6368-clocks
+      - brcm,bcm63268-clocks
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@10000004 {
+        compatible = "brcm,bcm6328-clocks";
+        reg = <0x10000004 0x4>;
+        #clock-cells = <1>;
+    };
diff --git a/Bindings/clock/cirrus,ep7209-clk.yaml b/Bindings/clock/cirrus,ep7209-clk.yaml
new file mode 100644 (file)
index 0000000..fbd0d50
--- /dev/null
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/cirrus,ep7209-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cirrus Logic CLPS711X Clock Controller
+
+maintainers:
+  - Alexander Shiyan <shc_work@mail.ru>
+
+description:
+  See include/dt-bindings/clock/clps711x-clock.h for the full list of CLPS711X
+  clock IDs.
+
+properties:
+  compatible:
+    items:
+      - const: cirrus,ep7312-clk
+      - const: cirrus,ep7209-clk
+
+  reg:
+    maxItems: 1
+
+  startup-frequency:
+    description: Factory set CPU startup frequency in HZ.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  "#clock-cells":
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - startup-frequency
+  - "#clock-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@80000000 {
+        compatible = "cirrus,ep7312-clk", "cirrus,ep7209-clk";
+        reg = <0x80000000 0xc000>;
+        #clock-cells = <1>;
+        startup-frequency = <73728000>;
+    };
diff --git a/Bindings/clock/clps711x-clock.txt b/Bindings/clock/clps711x-clock.txt
deleted file mode 100644 (file)
index f1bd53f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-* Clock bindings for the Cirrus Logic CLPS711X CPUs
-
-Required properties:
-- compatible       : Shall contain "cirrus,ep7209-clk".
-- reg              : Address of the internal register set.
-- startup-frequency: Factory set CPU startup frequency in HZ.
-- #clock-cells     : Should be <1>.
-
-The clock consumer should specify the desired clock by having the clock
-ID in its "clocks" phandle cell. See include/dt-bindings/clock/clps711x-clock.h
-for the full list of CLPS711X clock IDs.
-
-Example:
-       clks: clks@80000000 {
-               #clock-cells = <1>;
-               compatible = "cirrus,ep7312-clk", "cirrus,ep7209-clk";
-               reg = <0x80000000 0xc000>;
-               startup-frequency = <73728000>;
-       };
diff --git a/Bindings/clock/dove-divider-clock.txt b/Bindings/clock/dove-divider-clock.txt
deleted file mode 100644 (file)
index 217871f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-PLL divider based Dove clocks
-
-Marvell Dove has a 2GHz PLL, which feeds into a set of dividers to provide
-high speed clocks for a number of peripherals.  These dividers are part of
-the PMU, and thus this node should be a child of the PMU node.
-
-The following clocks are provided:
-
-ID     Clock
--------------
-0      AXI bus clock
-1      GPU clock
-2      VMeta clock
-3      LCD clock
-
-Required properties:
-- compatible : shall be "marvell,dove-divider-clock"
-- reg : shall be the register address of the Core PLL and Clock Divider
-   Control 0 register.  This will cover that register, as well as the
-   Core PLL and Clock Divider Control 1 register.  Thus, it will have
-   a size of 8.
-- #clock-cells : from common clock binding; shall be set to 1
-
-divider_clk: core-clock@64 {
-       compatible = "marvell,dove-divider-clock";
-       reg = <0x0064 0x8>;
-       #clock-cells = <1>;
-};
diff --git a/Bindings/clock/img,pistachio-clk.yaml b/Bindings/clock/img,pistachio-clk.yaml
new file mode 100644 (file)
index 0000000..e70feee
--- /dev/null
@@ -0,0 +1,136 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/img,pistachio-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Imagination Technologies Pistachio SoC clock controllers
+
+maintainers:
+  - Andrew Bresticker <abrestic@chromium.org>
+
+description: |
+  Pistachio has four clock controllers (core clock, peripheral clock, peripheral
+  general control, and top general control) which are instantiated individually
+  from the device-tree.
+
+  Core clock controller:
+
+  The core clock controller generates clocks for the CPU, RPU (WiFi + BT
+  co-processor), audio, and several peripherals.
+
+  Peripheral clock controller:
+
+  The peripheral clock controller generates clocks for the DDR, ROM, and other
+  peripherals. The peripheral system clock ("periph_sys") generated by the core
+  clock controller is the input clock to the peripheral clock controller.
+
+  Peripheral general control:
+
+  The peripheral general control block generates system interface clocks and
+  resets for various peripherals. It also contains miscellaneous peripheral
+  control registers.
+
+  Top-level general control:
+
+  The top-level general control block contains miscellaneous control registers
+  and gates for the external clocks "audio_clk_in" and "enet_clk_in".
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - img,pistachio-clk
+          - img,pistachio-clk-periph
+          - img,pistachio-cr-periph
+          - img,pistachio-cr-top
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+  clocks:
+    minItems: 1
+    maxItems: 3
+
+  clock-names:
+    minItems: 1
+    maxItems: 3
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+  - clocks
+  - clock-names
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: img,pistachio-clk
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External 52Mhz oscillator
+            - description: Alternate audio reference clock
+            - description: Alternate ethernet PHY clock
+
+        clock-names:
+          items:
+            - const: xtal
+            - const: audio_refclk_ext_gate
+            - const: ext_enet_in_gate
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: img,pistachio-clk-periph
+    then:
+      properties:
+        clocks:
+          items:
+            - description: Peripheral system clock
+
+        clock-names:
+          items:
+            - const: periph_sys_core
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: img,pistachio-cr-periph
+    then:
+      properties:
+        clocks:
+          items:
+            - description: System interface clock
+
+        clock-names:
+          items:
+            - const: sys
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: img,pistachio-cr-top
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External audio reference clock
+            - description: External ethernet PHY clock
+
+        clock-names:
+          items:
+            - const: audio_clk_in
+            - const: enet_clk_in
+
+additionalProperties: false
diff --git a/Bindings/clock/lpc1850-ccu.txt b/Bindings/clock/lpc1850-ccu.txt
deleted file mode 100644 (file)
index 8cf8f0e..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-* NXP LPC1850 Clock Control Unit (CCU)
-
-Each CGU base clock has several clock branches which can be turned on
-or off independently by the Clock Control Units CCU1 or CCU2. The
-branch clocks are distributed between CCU1 and CCU2.
-
- - Above text taken from NXP LPC1850 User Manual.
-
-This binding uses the common clock binding:
-    Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-Required properties:
-- compatible:
-       Should be "nxp,lpc1850-ccu"
-- reg:
-       Shall define the base and range of the address space
-       containing clock control registers
-- #clock-cells:
-       Shall have value <1>.  The permitted clock-specifier values
-       are the branch clock names defined in table below.
-- clocks:
-       Shall contain a list of phandles for the base clocks routed
-       from the CGU to the specific CCU. See mapping of base clocks
-       and CCU in table below.
-- clock-names:
-       Shall contain a list of names for the base clock routed
-       from the CGU to the specific CCU. Valid CCU clock names:
-       "base_usb0_clk",  "base_periph_clk", "base_usb1_clk",
-       "base_cpu_clk",   "base_spifi_clk",  "base_spi_clk",
-       "base_apb1_clk",  "base_apb3_clk",   "base_adchs_clk",
-       "base_sdio_clk",  "base_ssp0_clk",   "base_ssp1_clk",
-       "base_uart0_clk", "base_uart1_clk",  "base_uart2_clk",
-       "base_uart3_clk", "base_audio_clk"
-
-Which branch clocks that are available on the CCU depends on the
-specific LPC part. Check the user manual for your specific part.
-
-A list of CCU clocks can be found in dt-bindings/clock/lpc18xx-ccu.h.
-
-Example board file:
-
-soc {
-       ccu1: clock-controller@40051000 {
-               compatible = "nxp,lpc1850-ccu";
-               reg = <0x40051000 0x1000>;
-               #clock-cells = <1>;
-               clocks = <&cgu BASE_APB3_CLK>,   <&cgu BASE_APB1_CLK>,
-                        <&cgu BASE_SPIFI_CLK>,  <&cgu BASE_CPU_CLK>,
-                        <&cgu BASE_PERIPH_CLK>, <&cgu BASE_USB0_CLK>,
-                        <&cgu BASE_USB1_CLK>,   <&cgu BASE_SPI_CLK>;
-               clock-names = "base_apb3_clk",   "base_apb1_clk",
-                             "base_spifi_clk",  "base_cpu_clk",
-                             "base_periph_clk", "base_usb0_clk",
-                             "base_usb1_clk",   "base_spi_clk";
-       };
-
-       ccu2: clock-controller@40052000 {
-               compatible = "nxp,lpc1850-ccu";
-               reg = <0x40052000 0x1000>;
-               #clock-cells = <1>;
-               clocks = <&cgu BASE_AUDIO_CLK>, <&cgu BASE_UART3_CLK>,
-                        <&cgu BASE_UART2_CLK>, <&cgu BASE_UART1_CLK>,
-                        <&cgu BASE_UART0_CLK>, <&cgu BASE_SSP1_CLK>,
-                        <&cgu BASE_SSP0_CLK>,  <&cgu BASE_SDIO_CLK>;
-               clock-names = "base_audio_clk", "base_uart3_clk",
-                             "base_uart2_clk", "base_uart1_clk",
-                             "base_uart0_clk", "base_ssp1_clk",
-                             "base_ssp0_clk",  "base_sdio_clk";
-       };
-
-       /* A user of CCU branch clocks */
-       uart1: serial@40082000 {
-               ...
-               clocks = <&ccu2 CLK_APB0_UART1>, <&ccu1 CLK_CPU_UART1>;
-               ...
-       };
-};
diff --git a/Bindings/clock/lpc1850-cgu.txt b/Bindings/clock/lpc1850-cgu.txt
deleted file mode 100644 (file)
index 2cc32a9..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-* NXP LPC1850 Clock Generation Unit (CGU)
-
-The CGU generates multiple independent clocks for the core and the
-peripheral blocks of the LPC18xx. Each independent clock is called
-a base clock and itself is one of the inputs to the two Clock
-Control Units (CCUs) which control the branch clocks to the
-individual peripherals.
-
-The CGU selects the inputs to the clock generators from multiple
-clock sources, controls the clock generation, and routes the outputs
-of the clock generators through the clock source bus to the output
-stages. Each output stage provides an independent clock source and
-corresponds to one of the base clocks for the LPC18xx.
-
- - Above text taken from NXP LPC1850 User Manual.
-
-
-This binding uses the common clock binding:
-    Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-Required properties:
-- compatible:
-       Should be "nxp,lpc1850-cgu"
-- reg:
-       Shall define the base and range of the address space
-       containing clock control registers
-- #clock-cells:
-       Shall have value <1>.  The permitted clock-specifier values
-       are the base clock numbers defined below.
-- clocks:
-       Shall contain a list of phandles for the external input
-       sources to the CGU. The list shall be in the following
-       order: xtal, 32khz, enet_rx_clk, enet_tx_clk, gp_clkin.
-- clock-indices:
-       Shall be an ordered list of numbers defining the base clock
-       number provided by the CGU.
-- clock-output-names:
-       Shall be an ordered list of strings defining the names of
-       the clocks provided by the CGU.
-
-Which base clocks that are available on the CGU depends on the
-specific LPC part. Base clocks are numbered from 0 to 27.
-
-Number:                Name:                   Description:
- 0             BASE_SAFE_CLK           Base safe clock (always on) for WWDT
- 1             BASE_USB0_CLK           Base clock for USB0
- 2             BASE_PERIPH_CLK         Base clock for Cortex-M0SUB subsystem,
-                                       SPI, and SGPIO
- 3             BASE_USB1_CLK           Base clock for USB1
- 4             BASE_CPU_CLK            System base clock for ARM Cortex-M core
-                                       and APB peripheral blocks #0 and #2
- 5             BASE_SPIFI_CLK          Base clock for SPIFI
- 6             BASE_SPI_CLK            Base clock for SPI
- 7             BASE_PHY_RX_CLK         Base clock for Ethernet PHY Receive clock
- 8             BASE_PHY_TX_CLK         Base clock for Ethernet PHY Transmit clock
- 9             BASE_APB1_CLK           Base clock for APB peripheral block # 1
-10             BASE_APB3_CLK           Base clock for APB peripheral block # 3
-11             BASE_LCD_CLK            Base clock for LCD
-12             BASE_ADCHS_CLK          Base clock for ADCHS
-13             BASE_SDIO_CLK           Base clock for SD/MMC
-14             BASE_SSP0_CLK           Base clock for SSP0
-15             BASE_SSP1_CLK           Base clock for SSP1
-16             BASE_UART0_CLK          Base clock for UART0
-17             BASE_UART1_CLK          Base clock for UART1
-18             BASE_UART2_CLK          Base clock for UART2
-19             BASE_UART3_CLK          Base clock for UART3
-20             BASE_OUT_CLK            Base clock for CLKOUT pin
-24-21          -                       Reserved
-25             BASE_AUDIO_CLK          Base clock for audio system (I2S)
-26             BASE_CGU_OUT0_CLK       Base clock for CGU_OUT0 clock output
-27             BASE_CGU_OUT1_CLK       Base clock for CGU_OUT1 clock output
-
-BASE_PERIPH_CLK and BASE_SPI_CLK is only available on LPC43xx.
-BASE_ADCHS_CLK is only available on LPC4370.
-
-
-Example board file:
-
-/ {
-       clocks {
-               xtal: xtal {
-                       compatible = "fixed-clock";
-                       #clock-cells = <0>;
-                       clock-frequency = <12000000>;
-               };
-
-               xtal32: xtal32 {
-                       compatible = "fixed-clock";
-                       #clock-cells = <0>;
-                       clock-frequency = <32768>;
-               };
-
-               enet_rx_clk: enet_rx_clk {
-                       compatible = "fixed-clock";
-                       #clock-cells = <0>;
-                       clock-frequency = <0>;
-                       clock-output-names = "enet_rx_clk";
-               };
-
-               enet_tx_clk: enet_tx_clk {
-                       compatible = "fixed-clock";
-                       #clock-cells = <0>;
-                       clock-frequency = <0>;
-                       clock-output-names = "enet_tx_clk";
-               };
-
-               gp_clkin: gp_clkin {
-                       compatible = "fixed-clock";
-                       #clock-cells = <0>;
-                       clock-frequency = <0>;
-                       clock-output-names = "gp_clkin";
-               };
-       };
-
-       soc {
-               cgu: clock-controller@40050000 {
-                       compatible = "nxp,lpc1850-cgu";
-                       reg = <0x40050000 0x1000>;
-                       #clock-cells = <1>;
-                       clocks = <&xtal>, <&creg_clk 1>, <&enet_rx_clk>, <&enet_tx_clk>, <&gp_clkin>;
-               };
-
-               /* A CGU and CCU clock consumer */
-               lcdc: lcdc@40008000 {
-                       ...
-                       clocks = <&cgu BASE_LCD_CLK>, <&ccu1 CLK_CPU_LCD>;
-                       clock-names = "clcdclk", "apb_pclk";
-                       ...
-               };
-       };
-};
diff --git a/Bindings/clock/lpc1850-creg-clk.txt b/Bindings/clock/lpc1850-creg-clk.txt
deleted file mode 100644 (file)
index b6b2547..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-* NXP LPC1850 CREG clocks
-
-The NXP LPC18xx/43xx CREG (Configuration Registers) block contains
-control registers for two low speed clocks. One of the clocks is a
-32 kHz oscillator driver with power up/down and clock gating. Next
-is a fixed divider that creates a 1 kHz clock from the 32 kHz osc.
-
-These clocks are used by the RTC and the Event Router peripherals.
-The 32 kHz can also be routed to other peripherals to enable low
-power modes.
-
-This binding uses the common clock binding:
-    Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-Required properties:
-- compatible:
-       Should be "nxp,lpc1850-creg-clk"
-- #clock-cells:
-       Shall have value <1>.
-- clocks:
-       Shall contain a phandle to the fixed 32 kHz crystal.
-
-The creg-clk node must be a child of the creg syscon node.
-
-The following clocks are available from the clock node.
-
-Clock ID       Name
-   0            1 kHz clock
-   1           32 kHz Oscillator
-
-Example:
-soc {
-       creg: syscon@40043000 {
-               compatible = "nxp,lpc1850-creg", "syscon", "simple-mfd";
-               reg = <0x40043000 0x1000>;
-
-               creg_clk: clock-controller {
-                       compatible = "nxp,lpc1850-creg-clk";
-                       clocks = <&xtal32>;
-                       #clock-cells = <1>;
-               };
-
-               ...
-       };
-
-       rtc: rtc@40046000 {
-               ...
-               clocks = <&creg_clk 0>, <&ccu1 CLK_CPU_BUS>;
-               clock-names = "rtc", "reg";
-               ...
-       };
-};
diff --git a/Bindings/clock/lsi,axm5516-clks.txt b/Bindings/clock/lsi,axm5516-clks.txt
deleted file mode 100644 (file)
index 3ce97cf..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-AXM5516 clock driver bindings
------------------------------
-
-Required properties :
-- compatible : shall contain "lsi,axm5516-clks"
-- reg : shall contain base register location and length
-- #clock-cells : shall contain 1
-
-The consumer specifies the desired clock by having the clock ID in its "clocks"
-phandle cell. See <dt-bindings/clock/lsi,axxia-clock.h> for the list of
-supported clock IDs.
-
-Example:
-
-       clks: clock-controller@2010020000 {
-               compatible = "lsi,axm5516-clks";
-               #clock-cells = <1>;
-               reg = <0x20 0x10020000 0 0x20000>;
-       };
-
-       serial0: uart@2010080000 {
-               compatible = "arm,pl011", "arm,primecell";
-               reg = <0x20 0x10080000 0 0x1000>;
-               interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&clks AXXIA_CLK_PER>;
-               clock-names = "apb_pclk";
-       };
-                                                                                                                                                                                                                                                               };
-
diff --git a/Bindings/clock/lsi,axm5516-clks.yaml b/Bindings/clock/lsi,axm5516-clks.yaml
new file mode 100644 (file)
index 0000000..7a792db
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2025 LSI
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/lsi,axm5516-clks.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: LSI AXM5516 Clock Controller
+
+maintainers:
+  - Anders Berg <anders.berg@lsi.com>
+
+description:
+  See <dt-bindings/clock/lsi,axxia-clock.h> for the list of supported clock IDs.
+
+properties:
+  compatible:
+    const: lsi,axm5516-clks
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    bus {
+        #address-cells = <2>;
+        #size-cells = <1>;
+        clock-controller@2010020000 {
+            compatible = "lsi,axm5516-clks";
+            #clock-cells = <1>;
+            reg = <0x20 0x10020000 0x20000>;
+        };
+    };
diff --git a/Bindings/clock/lsi,nspire-cx-clock.yaml b/Bindings/clock/lsi,nspire-cx-clock.yaml
new file mode 100644 (file)
index 0000000..52c217d
--- /dev/null
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/lsi,nspire-cx-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI-NSPIRE Clocks
+
+maintainers:
+  - Daniel Tang <dt.tangr@gmail.com>
+
+properties:
+  compatible:
+    enum:
+      - lsi,nspire-cx-ahb-divider
+      - lsi,nspire-classic-ahb-divider
+      - lsi,nspire-cx-clock
+      - lsi,nspire-classic-clock
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 0
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
diff --git a/Bindings/clock/marvell,armada-370-corediv-clock.yaml b/Bindings/clock/marvell,armada-370-corediv-clock.yaml
new file mode 100644 (file)
index 0000000..9d76655
--- /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/marvell,armada-370-corediv-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell MVEBU Core Divider Clock
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - marvell,armada-370-corediv-clock
+          - marvell,armada-375-corediv-clock
+          - marvell,armada-380-corediv-clock
+          - marvell,mv98dx3236-corediv-clock
+      - items:
+          - const: marvell,armada-390-corediv-clock
+          - const: marvell,armada-380-corediv-clock
+
+  reg:
+    maxItems: 1
+
+  "#clock-cells":
+    const: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-output-names:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - "#clock-cells"
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@18740 {
+        compatible = "marvell,armada-370-corediv-clock";
+        reg = <0x18740 0xc>;
+        #clock-cells = <1>;
+        clocks = <&pll>;
+    };
diff --git a/Bindings/clock/marvell,armada-3700-periph-clock.yaml b/Bindings/clock/marvell,armada-3700-periph-clock.yaml
new file mode 100644 (file)
index 0000000..87e8e4c
--- /dev/null
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/marvell,armada-3700-periph-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada 37xx SoCs Peripheral Clocks
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+description: >
+  Marvell Armada 37xx SoCs provide peripheral clocks which are used as clock
+  source for the peripheral of the SoC.
+
+  There are two different blocks associated to north bridge and south bridge.
+
+  The following is a list of provided IDs for Armada 3700 North bridge clocks:
+
+    ID Clock name      Description
+    -----------------------------------
+    0  mmc             MMC controller
+    1  sata_host       Sata Host
+    2  sec_at          Security AT
+    3  sac_dap         Security DAP
+    4  tsecm           Security Engine
+    5  setm_tmx        Serial Embedded Trace Module
+    6  avs             Adaptive Voltage Scaling
+    7  sqf             SPI
+    8  pwm             PWM
+    9  i2c_2           I2C 2
+    10 i2c_1           I2C 1
+    11 ddr_phy         DDR PHY
+    12 ddr_fclk        DDR F clock
+    13 trace           Trace
+    14 counter         Counter
+    15 eip97           EIP 97
+    16 cpu             CPU
+
+  The following is a list of provided IDs for Armada 3700 South bridge clocks:
+
+    ID Clock name      Description
+    -----------------------------------
+    0  gbe-50          50 MHz parent clock for Gigabit Ethernet
+    1  gbe-core        parent clock for Gigabit Ethernet core
+    2  gbe-125         125 MHz parent clock for Gigabit Ethernet
+    3  gbe1-50         50 MHz clock for Gigabit Ethernet port 1
+    4  gbe0-50         50 MHz clock for Gigabit Ethernet port 0
+    5  gbe1-125        125 MHz clock for Gigabit Ethernet port 1
+    6  gbe0-125        125 MHz clock for Gigabit Ethernet port 0
+    7  gbe1-core       Gigabit Ethernet core port 1
+    8  gbe0-core       Gigabit Ethernet core port 0
+    9  gbe-bm          Gigabit Ethernet Buffer Manager
+    10 sdio            SDIO
+    11 usb32-sub2-sys  USB 2 clock
+    12 usb32-ss-sys    USB 3 clock
+    13 pcie            PCIe controller
+
+properties:
+  compatible:
+    oneOf:
+      - const: marvell,armada-3700-periph-clock-sb
+      - items:
+          - const: marvell,armada-3700-periph-clock-nb
+          - const: syscon
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: TBG-A P clock and specifier
+      - description: TBG-B P clock and specifier
+      - description: TBG-A S clock and specifier
+      - description: TBG-B S clock and specifier
+      - description: Xtal clock and specifier
+
+  '#clock-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@13000{
+        compatible = "marvell,armada-3700-periph-clock-sb";
+        reg = <0x13000 0x1000>;
+        clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>, <&tbg 3>, <&xtalclk>;
+        #clock-cells = <1>;
+    };
diff --git a/Bindings/clock/marvell,armada-3700-tbg-clock.yaml b/Bindings/clock/marvell,armada-3700-tbg-clock.yaml
new file mode 100644 (file)
index 0000000..7fd1d75
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/marvell,armada-3700-tbg-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada 3700 Time Base Generator Clock
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+description: >
+  Marvell Armada 37xx SoCs provide Time Base Generator clocks which are used as
+  parent clocks for the peripheral clocks.
+
+  The TBG clock consumer should specify the desired clock by having the clock ID
+  in its "clocks" phandle cell.
+
+  The following is a list of provided IDs and clock names on Armada 3700:
+
+    0 = TBG A P
+    1 = TBG B P
+    2 = TBG A S
+    3 = TBG B S
+
+properties:
+  compatible:
+    const: marvell,armada-3700-tbg-clock
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@13200 {
+        compatible = "marvell,armada-3700-tbg-clock";
+        reg = <0x13200 0x1000>;
+        clocks = <&xtalclk>;
+        #clock-cells = <1>;
+    };
diff --git a/Bindings/clock/marvell,armada-xp-cpu-clock.yaml b/Bindings/clock/marvell,armada-xp-cpu-clock.yaml
new file mode 100644 (file)
index 0000000..f2ac674
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+---
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+$id: http://devicetree.org/schemas/clock/marvell,armada-xp-cpu-clock.yaml#
+
+title: Marvell EBU CPU Clock
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+properties:
+  compatible:
+    enum:
+      - marvell,armada-xp-cpu-clock
+      - marvell,mv98dx3236-cpu-clock
+
+  reg:
+    items:
+      - description: Clock complex registers
+      - description: PMU DFS registers
+
+  '#clock-cells':
+    const: 1
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@d0018700 {
+        #clock-cells = <1>;
+        compatible = "marvell,armada-xp-cpu-clock";
+        reg = <0xd0018700 0xa0>, <0x1c054 0x10>;
+        clocks = <&coreclk 1>;
+    };
diff --git a/Bindings/clock/marvell,berlin.txt b/Bindings/clock/marvell,berlin.txt
deleted file mode 100644 (file)
index c611c49..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-Device Tree Clock bindings for Marvell Berlin
-
-This binding uses the common clock binding[1].
-
-[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-Clock related registers are spread among the chip control registers. Berlin
-clock node should be a sub-node of the chip controller node. Marvell Berlin2
-(BG2, BG2CD, BG2Q) SoCs share the same IP for PLLs and clocks, with some
-minor differences in features and register layout.
-
-Required properties:
-- compatible: must be "marvell,berlin2-clk" or "marvell,berlin2q-clk"
-- #clock-cells: must be 1
-- clocks: must be the input parent clock phandle
-- clock-names: name of the input parent clock
-       Allowed clock-names for the reference clocks are
-       "refclk" for the SoCs oscillator input on all SoCs,
-       and SoC-specific input clocks for
-       BG2/BG2CD: "video_ext0" for the external video clock input
-
-
-Example:
-
-chip_clk: clock {
-       compatible = "marvell,berlin2q-clk";
-
-       #clock-cells = <1>;
-       clocks = <&refclk>;
-       clock-names = "refclk";
-};
diff --git a/Bindings/clock/marvell,berlin2-clk.yaml b/Bindings/clock/marvell,berlin2-clk.yaml
new file mode 100644 (file)
index 0000000..8d48a2c
--- /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/clock/marvell,berlin2-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Berlin Clock Controller
+
+maintainers:
+  - Jisheng Zhang <jszhang@kernel.org>
+
+description:
+  Clock related registers are spread among the chip control registers. Berlin
+  clock node should be a sub-node of the chip controller node. Marvell Berlin2
+  (BG2, BG2CD, BG2Q) SoCs share the same IP for PLLs and clocks, with some minor
+  differences in features and register layout.
+
+properties:
+  compatible:
+    enum:
+      - marvell,berlin2-clk
+      - marvell,berlin2q-clk
+
+  '#clock-cells':
+    const: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - enum:
+          - refclk
+          - video_ext0
+
+required:
+  - compatible
+  - '#clock-cells'
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller {
+        compatible = "marvell,berlin2q-clk";
+        #clock-cells = <1>;
+        clocks = <&refclk>;
+        clock-names = "refclk";
+    };
diff --git a/Bindings/clock/marvell,dove-divider-clock.yaml b/Bindings/clock/marvell,dove-divider-clock.yaml
new file mode 100644 (file)
index 0000000..7a8e0e2
--- /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/marvell,dove-divider-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Dove PLL Divider Clock
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+description: >
+  Marvell Dove has a 2GHz PLL, which feeds into a set of dividers to provide
+  high speed clocks for a number of peripherals.  These dividers are part of the
+  PMU, and thus this node should be a child of the PMU node.
+
+  The following clocks are provided:
+
+    ID Clock
+    -------------
+    0  AXI bus clock
+    1  GPU clock
+    2  VMeta clock
+    3  LCD clock
+
+properties:
+  compatible:
+    const: marvell,dove-divider-clock
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@64 {
+        compatible = "marvell,dove-divider-clock";
+        reg = <0x0064 0x8>;
+        #clock-cells = <1>;
+    };
diff --git a/Bindings/clock/marvell,mvebu-core-clock.yaml b/Bindings/clock/marvell,mvebu-core-clock.yaml
new file mode 100644 (file)
index 0000000..215bcd9
--- /dev/null
@@ -0,0 +1,94 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/marvell,mvebu-core-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell MVEBU SoC core clock
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+description: >
+  Marvell MVEBU SoCs usually allow to determine core clock frequencies by
+  reading the Sample-At-Reset (SAR) register. The core clock consumer should
+  specify the desired clock by having the clock ID in its "clocks" phandle cell.
+
+  The following is a list of provided IDs and clock names on Armada 370/XP:
+   0 = tclk    (Internal Bus clock)
+   1 = cpuclk  (CPU clock)
+   2 = nbclk   (L2 Cache clock)
+   3 = hclk    (DRAM control clock)
+   4 = dramclk (DDR clock)
+
+  The following is a list of provided IDs and clock names on Armada 375:
+   0 = tclk    (Internal Bus clock)
+   1 = cpuclk  (CPU clock)
+   2 = l2clk   (L2 Cache clock)
+   3 = ddrclk  (DDR clock)
+
+  The following is a list of provided IDs and clock names on Armada 380/385:
+   0 = tclk    (Internal Bus clock)
+   1 = cpuclk  (CPU clock)
+   2 = l2clk   (L2 Cache clock)
+   3 = ddrclk  (DDR clock)
+
+  The following is a list of provided IDs and clock names on Armada 39x:
+   0 = tclk    (Internal Bus clock)
+   1 = cpuclk  (CPU clock)
+   2 = nbclk   (Coherent Fabric clock)
+   3 = hclk    (SDRAM Controller Internal Clock)
+   4 = dclk    (SDRAM Interface Clock)
+   5 = refclk  (Reference Clock)
+
+  The following is a list of provided IDs and clock names on 98dx3236:
+   0 = tclk    (Internal Bus clock)
+   1 = cpuclk  (CPU clock)
+   2 = ddrclk  (DDR clock)
+   3 = mpll    (MPLL Clock)
+
+  The following is a list of provided IDs and clock names on Kirkwood and Dove:
+   0 = tclk   (Internal Bus clock)
+   1 = cpuclk (CPU0 clock)
+   2 = l2clk  (L2 Cache clock derived from CPU0 clock)
+   3 = ddrclk (DDR controller clock derived from CPU0 clock)
+
+  The following is a list of provided IDs and clock names on Orion5x:
+   0 = tclk   (Internal Bus clock)
+   1 = cpuclk (CPU0 clock)
+   2 = ddrclk (DDR controller clock derived from CPU0 clock)
+
+properties:
+  compatible:
+    enum:
+      - marvell,armada-370-core-clock
+      - marvell,armada-375-core-clock
+      - marvell,armada-380-core-clock
+      - marvell,armada-390-core-clock
+      - marvell,armada-xp-core-clock
+      - marvell,dove-core-clock
+      - marvell,kirkwood-core-clock
+      - marvell,mv88f5181-core-clock
+      - marvell,mv88f5182-core-clock
+      - marvell,mv88f5281-core-clock
+      - marvell,mv88f6180-core-clock
+      - marvell,mv88f6183-core-clock
+      - marvell,mv98dx1135-core-clock
+      - marvell,mv98dx3236-core-clock
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+  clock-output-names:
+    description: Overwrite default clock output names.
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+
+additionalProperties: false
diff --git a/Bindings/clock/marvell-armada-370-gating-clock.yaml b/Bindings/clock/marvell-armada-370-gating-clock.yaml
new file mode 100644 (file)
index 0000000..0475360
--- /dev/null
@@ -0,0 +1,227 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+---
+$id: http://devicetree.org/schemas/clock/marvell-armada-370-gating-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell EBU SoC gating-clock
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+description: >
+  Marvell Armada 370/375/380/385/39x/XP, Dove and Kirkwood allow some peripheral
+  clocks to be gated to save some power. The clock ID is directly mapped to the
+  corresponding clock gating control bit in HW to ease manual clock lookup in
+  datasheet.
+
+  The following is a list of provided IDs for Armada 370:
+
+    ID    Clock    Peripheral
+    -----------------------------------
+    0     Audio    AC97 Cntrl
+    1     pex0_en  PCIe 0 Clock out
+    2     pex1_en  PCIe 1 Clock out
+    3     ge1      Gigabit Ethernet 1
+    4     ge0      Gigabit Ethernet 0
+    5     pex0     PCIe Cntrl 0
+    9     pex1     PCIe Cntrl 1
+    15    sata0    SATA Host 0
+    17    sdio     SDHCI Host
+    23    crypto   CESA (crypto engine)
+    25    tdm      Time Division Mplx
+    28    ddr      DDR Cntrl
+    30    sata1   SATA Host 0
+
+  The following is a list of provided IDs for Armada 375:
+
+    ID    Clock           Peripheral
+    -----------------------------------
+    2     mu              Management Unit
+    3     pp              Packet Processor
+    4     ptp             PTP
+    5     pex0            PCIe 0 Clock out
+    6     pex1            PCIe 1 Clock out
+    8     audio           Audio Cntrl
+    11    nd_clk          Nand Flash Cntrl
+    14    sata0_link      SATA 0 Link
+    15    sata0_core      SATA 0 Core
+    16    usb3            USB3 Host
+    17    sdio            SDHCI Host
+    18    usb             USB Host
+    19    gop             Gigabit Ethernet MAC
+    20    sata1_link      SATA 1 Link
+    21    sata1_core      SATA 1 Core
+    22    xor0            XOR DMA 0
+    23    xor1            XOR DMA 0
+    24    copro           Coprocessor
+    25    tdm             Time Division Mplx
+    28    crypto0_enc     Cryptographic Unit Port 0 Encryption
+    29    crypto0_core    Cryptographic Unit Port 0 Core
+    30    crypto1_enc     Cryptographic Unit Port 1 Encryption
+    31    crypto1_core    Cryptographic Unit Port 1 Core
+
+  The following is a list of provided IDs for Armada 380/385:
+
+    ID    Clock           Peripheral
+    -----------------------------------
+    0     audio           Audio
+    2     ge2             Gigabit Ethernet 2
+    3     ge1             Gigabit Ethernet 1
+    4     ge0             Gigabit Ethernet 0
+    5     pex1            PCIe 1
+    6     pex2            PCIe 2
+    7     pex3            PCIe 3
+    8     pex0            PCIe 0
+    9     usb3h0          USB3 Host 0
+    10    usb3h1          USB3 Host 1
+    11    usb3d           USB3 Device
+    13    bm              Buffer Management
+    14    crypto0z        Cryptographic 0 Z
+    15    sata0           SATA 0
+    16    crypto1z        Cryptographic 1 Z
+    17    sdio            SDIO
+    18    usb2            USB 2
+    21    crypto1         Cryptographic 1
+    22    xor0            XOR 0
+    23    crypto0         Cryptographic 0
+    25    tdm             Time Division Multiplexing
+    28    xor1            XOR 1
+    30    sata1           SATA 1
+
+  The following is a list of provided IDs for Armada 39x:
+
+    ID    Clock           Peripheral
+    -----------------------------------
+    5     pex1            PCIe 1
+    6     pex2            PCIe 2
+    7     pex3            PCIe 3
+    8     pex0            PCIe 0
+    9     usb3h0          USB3 Host 0
+    10    usb3h1          USB3 Host 1
+    15    sata0           SATA 0
+    17    sdio            SDIO
+    22    xor0            XOR 0
+    28    xor1            XOR 1
+
+  The following is a list of provided IDs for Armada XP:
+
+    ID    Clock           Peripheral
+    -----------------------------------
+    0     audio           Audio Cntrl
+    1     ge3             Gigabit Ethernet 3
+    2     ge2             Gigabit Ethernet 2
+    3     ge1             Gigabit Ethernet 1
+    4     ge0             Gigabit Ethernet 0
+    5     pex0            PCIe Cntrl 0
+    6     pex1            PCIe Cntrl 1
+    7     pex2            PCIe Cntrl 2
+    8     pex3            PCIe Cntrl 3
+    13    bp
+    14    sata0lnk
+    15    sata0           SATA Host 0
+    16    lcd             LCD Cntrl
+    17    sdio            SDHCI Host
+    18    usb0            USB Host 0
+    19    usb1            USB Host 1
+    20    usb2            USB Host 2
+    22    xor0            XOR DMA 0
+    23    crypto          CESA engine
+    25    tdm             Time Division Mplx
+    28    xor1            XOR DMA 1
+    29    sata1lnk
+    30    sata1           SATA Host 1
+
+  The following is a list of provided IDs for 98dx3236:
+
+    ID    Clock           Peripheral
+    -----------------------------------
+    3     ge1             Gigabit Ethernet 1
+    4     ge0             Gigabit Ethernet 0
+    5     pex0            PCIe Cntrl 0
+    17    sdio            SDHCI Host
+    18    usb0            USB Host 0
+    22    xor0            XOR DMA 0
+
+  The following is a list of provided IDs for Dove:
+
+  ID    Clock           Peripheral
+  -----------------------------------
+    0     usb0            USB Host 0
+    1     usb1            USB Host 1
+    2     ge              Gigabit Ethernet
+    3     sata            SATA Host
+    4     pex0            PCIe Cntrl 0
+    5     pex1            PCIe Cntrl 1
+    8     sdio0           SDHCI Host 0
+    9     sdio1           SDHCI Host 1
+    10    nand            NAND Cntrl
+    11    camera          Camera Cntrl
+    12    i2s0            I2S Cntrl 0
+    13    i2s1            I2S Cntrl 1
+    15    crypto          CESA engine
+    21    ac97            AC97 Cntrl
+    22    pdma            Peripheral DMA
+    23    xor0            XOR DMA 0
+    24    xor1            XOR DMA 1
+    30    gephy           Gigabit Ethernet PHY
+    Note: gephy(30) is implemented as a parent clock of ge(2)
+
+  The following is a list of provided IDs for Kirkwood:
+
+    ID    Clock           Peripheral
+    -----------------------------------
+    0     ge0             Gigabit Ethernet 0
+    2     pex0            PCIe Cntrl 0
+    3     usb0            USB Host 0
+    4     sdio            SDIO Cntrl
+    5     tsu             Transp. Stream Unit
+    6     dunit           SDRAM Cntrl
+    7     runit           Runit
+    8     xor0            XOR DMA 0
+    9     audio           I2S Cntrl 0
+    14    sata0           SATA Host 0
+    15    sata1           SATA Host 1
+    16    xor1            XOR DMA 1
+    17    crypto          CESA engine
+    18    pex1            PCIe Cntrl 1
+    19    ge1             Gigabit Ethernet 1
+    20    tdm             Time Division Mplx
+
+properties:
+  compatible:
+    enum:
+      - marvell,armada-370-gating-clock
+      - marvell,armada-375-gating-clock
+      - marvell,armada-380-gating-clock
+      - marvell,armada-390-gating-clock
+      - marvell,armada-xp-gating-clock
+      - marvell,mv98dx3236-gating-clock
+      - marvell,dove-gating-clock
+      - marvell,kirkwood-gating-clock
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@d0038 {
+        compatible = "marvell,dove-gating-clock";
+        reg = <0xd0038 0x4>;
+        /* default parent clock is tclk */
+        clocks = <&core_clk 0>;
+        #clock-cells = <1>;
+    };
diff --git a/Bindings/clock/maxim,max9485.txt b/Bindings/clock/maxim,max9485.txt
deleted file mode 100644 (file)
index b8f5c3b..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-Devicetree bindings for Maxim MAX9485 Programmable Audio Clock Generator
-
-This device exposes 4 clocks in total:
-
-- MAX9485_MCLKOUT:     A gated, buffered output of the input clock of 27 MHz
-- MAX9485_CLKOUT:      A PLL that can be configured to 16 different discrete
-                       frequencies
-- MAX9485_CLKOUT[1,2]: Two gated outputs for MAX9485_CLKOUT
-
-MAX9485_CLKOUT[1,2] are children of MAX9485_CLKOUT which upchain all rate set
-requests.
-
-Required properties:
-- compatible:  "maxim,max9485"
-- clocks:      Input clock, must provide 27.000 MHz
-- clock-names: Must be set to "xclk"
-- #clock-cells: From common clock binding; shall be set to 1
-
-Optional properties:
-- reset-gpios:         GPIO descriptor connected to the #RESET input pin
-- vdd-supply:          A regulator node for Vdd
-- clock-output-names:  Name of output clocks, as defined in common clock
-                       bindings
-
-If not explicitly set, the output names are "mclkout", "clkout", "clkout1"
-and "clkout2".
-
-Clocks are defined as preprocessor macros in the dt-binding header.
-
-Example:
-
-       #include <dt-bindings/clock/maxim,max9485.h>
-
-       xo-27mhz: xo-27mhz {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <27000000>;
-       };
-
-       &i2c0 {
-               max9485: audio-clock@63 {
-                       reg = <0x63>;
-                       compatible = "maxim,max9485";
-                       clock-names = "xclk";
-                       clocks = <&xo-27mhz>;
-                       reset-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
-                       vdd-supply = <&3v3-reg>;
-                       #clock-cells = <1>;
-               };
-       };
-
-       // Clock consumer node
-
-       foo@0 {
-               compatible = "bar,foo";
-               /* ... */
-               clock-names = "foo-input-clk";
-               clocks = <&max9485 MAX9485_CLKOUT1>;
-       };
diff --git a/Bindings/clock/maxim,max9485.yaml b/Bindings/clock/maxim,max9485.yaml
new file mode 100644 (file)
index 0000000..f9d8941
--- /dev/null
@@ -0,0 +1,82 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/maxim,max9485.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Maxim MAX9485 Programmable Audio Clock Generator
+
+maintainers:
+  - Daniel Mack <daniel@zonque.org>
+
+description: >
+  Maxim MAX9485 Programmable Audio Clock Generator exposes 4 clocks in total:
+
+    - MAX9485_MCLKOUT:  A gated, buffered output of the input clock of 27 MHz
+    - MAX9485_CLKOUT:   A PLL that can be configured to 16 different discrete
+                        frequencies
+    - MAX9485_CLKOUT[1,2]:  Two gated outputs for MAX9485_CLKOUT
+
+  MAX9485_CLKOUT[1,2] are children of MAX9485_CLKOUT which upchain all rate set
+  requests.
+
+properties:
+  compatible:
+    const: maxim,max9485
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    description: Input clock. Must provide 27 MHz
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: xclk
+
+  '#clock-cells':
+    const: 1
+
+  reset-gpios:
+    description: >
+      GPIO descriptor connected to the #RESET input pin
+
+  vdd-supply:
+    description: A regulator node for Vdd
+
+  clock-output-names:
+    description: Name of output clocks, as defined in common clock bindings
+    items:
+      - const: mclkout
+      - const: clkout
+      - const: clkout1
+      - const: clkout2
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        clock-controller@63 {
+            compatible = "maxim,max9485";
+            reg = <0x63>;
+            #clock-cells = <1>;
+            clock-names = "xclk";
+            clocks = <&xo_27mhz>;
+            reset-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
+            vdd-supply = <&reg_3v3>;
+        };
+    };
index 83c1803ffd161e7a715f9151853596df4fe89e5f..56bbd69b16d90e3b110305613f9cd1bd64a240c8 100644 (file)
@@ -26,18 +26,22 @@ description: |
 
 properties:
   compatible:
-    items:
-      - enum:
-          - ralink,mt7620-sysc
-          - ralink,mt7628-sysc
-          - ralink,mt7688-sysc
-          - ralink,rt2880-sysc
-          - ralink,rt3050-sysc
-          - ralink,rt3052-sysc
-          - ralink,rt3352-sysc
-          - ralink,rt3883-sysc
-          - ralink,rt5350-sysc
-      - const: syscon
+    oneOf:
+      - items:
+          - enum:
+              - ralink,mt7620-sysc
+              - ralink,mt7688-sysc
+              - ralink,rt2880-sysc
+              - ralink,rt3050-sysc
+              - ralink,rt3052-sysc
+              - ralink,rt3352-sysc
+              - ralink,rt3883-sysc
+              - ralink,rt5350-sysc
+          - const: syscon
+      - items:
+          - const: ralink,mt7628-sysc
+          - const: ralink,mt7688-sysc
+          - const: syscon
 
   reg:
     maxItems: 1
diff --git a/Bindings/clock/microchip,pic32.txt b/Bindings/clock/microchip,pic32.txt
deleted file mode 100644 (file)
index c93d88f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-Microchip PIC32 Clock Controller Binding
-----------------------------------------
-Microchip clock controller is consists of few oscillators, PLL, multiplexer
-and few divider modules.
-
-This binding uses common clock bindings.
-[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-Required properties:
-- compatible: shall be "microchip,pic32mzda-clk".
-- reg: shall contain base address and length of clock registers.
-- #clock-cells: shall be 1.
-
-Optional properties:
-- microchip,pic32mzda-sosc: shall be added only if platform has
-  secondary oscillator connected.
-
-Example:
-       rootclk: clock-controller@1f801200 {
-               compatible = "microchip,pic32mzda-clk";
-               reg = <0x1f801200 0x200>;
-               #clock-cells = <1>;
-               /* optional */
-               microchip,pic32mzda-sosc;
-       };
-
-
-The clock consumer shall specify the desired clock-output of the clock
-controller (as defined in [2]) by specifying output-id in its "clock"
-phandle cell.
-[2] include/dt-bindings/clock/microchip,pic32-clock.h
-
-For example for UART2:
-uart2: serial@2 {
-       compatible = "microchip,pic32mzda-uart";
-       reg = <>;
-       interrupts = <>;
-       clocks = <&rootclk PB2CLK>;
-};
diff --git a/Bindings/clock/microchip,pic32mzda-clk.yaml b/Bindings/clock/microchip,pic32mzda-clk.yaml
new file mode 100644 (file)
index 0000000..a14a838
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/microchip,pic32mzda-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip PIC32MZDA Clock Controller
+
+maintainers:
+  - Purna Chandra Mandal <purna.mandal@microchip.com>
+
+description:
+  Microchip clock controller consists of a few oscillators, PLL, multiplexer
+  and divider modules.
+
+properties:
+  compatible:
+    const: microchip,pic32mzda-clk
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+  microchip,pic32mzda-sosc:
+    description: Presence of secondary oscillator.
+    type: boolean
+
+required:
+  - compatible
+  - reg
+  - "#clock-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@1f801200 {
+        compatible = "microchip,pic32mzda-clk";
+        reg = <0x1f801200 0x200>;
+        #clock-cells = <1>;
+        /* optional */
+        microchip,pic32mzda-sosc;
+    };
diff --git a/Bindings/clock/moxa,moxart-clock.txt b/Bindings/clock/moxa,moxart-clock.txt
deleted file mode 100644 (file)
index fedea84..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-Device Tree Clock bindings for arch-moxart
-
-This binding uses the common clock binding[1].
-
-[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-MOXA ART SoCs allow to determine PLL output and APB frequencies
-by reading registers holding multiplier and divisor information.
-
-
-PLL:
-
-Required properties:
-- compatible : Must be "moxa,moxart-pll-clock"
-- #clock-cells : Should be 0
-- reg : Should contain registers location and length
-- clocks : Should contain phandle + clock-specifier for the parent clock
-
-Optional properties:
-- clock-output-names : Should contain clock name
-
-
-APB:
-
-Required properties:
-- compatible : Must be "moxa,moxart-apb-clock"
-- #clock-cells : Should be 0
-- reg : Should contain registers location and length
-- clocks : Should contain phandle + clock-specifier for the parent clock
-
-Optional properties:
-- clock-output-names : Should contain clock name
-
-
-For example:
-
-       clk_pll: clk_pll@98100000 {
-               compatible = "moxa,moxart-pll-clock";
-               #clock-cells = <0>;
-               reg = <0x98100000 0x34>;
-       };
-
-       clk_apb: clk_apb@98100000 {
-               compatible = "moxa,moxart-apb-clock";
-               #clock-cells = <0>;
-               reg = <0x98100000 0x34>;
-               clocks = <&clk_pll>;
-       };
diff --git a/Bindings/clock/moxa,moxart-clock.yaml b/Bindings/clock/moxa,moxart-clock.yaml
new file mode 100644 (file)
index 0000000..bcf7cc2
--- /dev/null
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/moxa,moxart-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MOXA ART Clock Controllers
+
+maintainers:
+  - Krzysztof Kozlowski <krzk@kernel.org>
+
+description:
+  MOXA ART SoCs allow to determine PLL output and APB frequencies by reading
+  registers holding multiplier and divisor information.
+
+properties:
+  compatible:
+    enum:
+      - moxa,moxart-apb-clock
+      - moxa,moxart-pll-clock
+
+  "#clock-cells":
+    const: 0
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-output-names: true
+
+additionalProperties: false
+
+required:
+  - compatible
+  - "#clock-cells"
+  - reg
diff --git a/Bindings/clock/mvebu-core-clock.txt b/Bindings/clock/mvebu-core-clock.txt
deleted file mode 100644 (file)
index d8f5c49..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-* Core Clock bindings for Marvell MVEBU SoCs
-
-Marvell MVEBU SoCs usually allow to determine core clock frequencies by
-reading the Sample-At-Reset (SAR) register. The core clock consumer should
-specify the desired clock by having the clock ID in its "clocks" phandle cell.
-
-The following is a list of provided IDs and clock names on Armada 370/XP:
- 0 = tclk    (Internal Bus clock)
- 1 = cpuclk  (CPU clock)
- 2 = nbclk   (L2 Cache clock)
- 3 = hclk    (DRAM control clock)
- 4 = dramclk (DDR clock)
-
-The following is a list of provided IDs and clock names on Armada 375:
- 0 = tclk    (Internal Bus clock)
- 1 = cpuclk  (CPU clock)
- 2 = l2clk   (L2 Cache clock)
- 3 = ddrclk  (DDR clock)
-
-The following is a list of provided IDs and clock names on Armada 380/385:
- 0 = tclk    (Internal Bus clock)
- 1 = cpuclk  (CPU clock)
- 2 = l2clk   (L2 Cache clock)
- 3 = ddrclk  (DDR clock)
-
-The following is a list of provided IDs and clock names on Armada 39x:
- 0 = tclk    (Internal Bus clock)
- 1 = cpuclk  (CPU clock)
- 2 = nbclk   (Coherent Fabric clock)
- 3 = hclk    (SDRAM Controller Internal Clock)
- 4 = dclk    (SDRAM Interface Clock)
- 5 = refclk  (Reference Clock)
-
-The following is a list of provided IDs and clock names on 98dx3236:
- 0 = tclk    (Internal Bus clock)
- 1 = cpuclk  (CPU clock)
- 2 = ddrclk   (DDR clock)
- 3 = mpll    (MPLL Clock)
-
-The following is a list of provided IDs and clock names on Kirkwood and Dove:
- 0 = tclk   (Internal Bus clock)
- 1 = cpuclk (CPU0 clock)
- 2 = l2clk  (L2 Cache clock derived from CPU0 clock)
- 3 = ddrclk (DDR controller clock derived from CPU0 clock)
-
-The following is a list of provided IDs and clock names on Orion5x:
- 0 = tclk   (Internal Bus clock)
- 1 = cpuclk (CPU0 clock)
- 2 = ddrclk (DDR controller clock derived from CPU0 clock)
-
-Required properties:
-- compatible : shall be one of the following:
-       "marvell,armada-370-core-clock" - For Armada 370 SoC core clocks
-       "marvell,armada-375-core-clock" - For Armada 375 SoC core clocks
-       "marvell,armada-380-core-clock" - For Armada 380/385 SoC core clocks
-       "marvell,armada-390-core-clock" - For Armada 39x SoC core clocks
-       "marvell,armada-xp-core-clock" - For Armada XP SoC core clocks
-       "marvell,mv98dx3236-core-clock" - For 98dx3236 family SoC core clocks
-       "marvell,dove-core-clock" - for Dove SoC core clocks
-       "marvell,kirkwood-core-clock" - for Kirkwood SoC (except mv88f6180)
-       "marvell,mv88f6180-core-clock" - for Kirkwood MV88f6180 SoC
-       "marvell,mv98dx1135-core-clock" - for Kirkwood 98dx1135 SoC
-       "marvell,mv88f5181-core-clock" - for Orion MV88F5181 SoC
-       "marvell,mv88f5182-core-clock" - for Orion MV88F5182 SoC
-       "marvell,mv88f5281-core-clock" - for Orion MV88F5281 SoC
-       "marvell,mv88f6183-core-clock" - for Orion MV88F6183 SoC
-- reg : shall be the register address of the Sample-At-Reset (SAR) register
-- #clock-cells : from common clock binding; shall be set to 1
-
-Optional properties:
-- clock-output-names : from common clock binding; allows overwrite default clock
-       output names ("tclk", "cpuclk", "l2clk", "ddrclk")
-
-Example:
-
-core_clk: core-clocks@d0214 {
-       compatible = "marvell,dove-core-clock";
-       reg = <0xd0214 0x4>;
-       #clock-cells = <1>;
-};
-
-spi0: spi@10600 {
-       compatible = "marvell,orion-spi";
-       /* ... */
-       /* get tclk from core clock provider */
-       clocks = <&core_clk 0>;
-};
diff --git a/Bindings/clock/mvebu-corediv-clock.txt b/Bindings/clock/mvebu-corediv-clock.txt
deleted file mode 100644 (file)
index c7b4e3a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-* Core Divider Clock bindings for Marvell MVEBU SoCs
-
-The following is a list of provided IDs and clock names on Armada 370/XP:
- 0 = nand (NAND clock)
-
-Required properties:
-- compatible : must be "marvell,armada-370-corediv-clock",
-                      "marvell,armada-375-corediv-clock",
-                      "marvell,armada-380-corediv-clock",
-                       "marvell,mv98dx3236-corediv-clock",
-
-- reg : must be the register address of Core Divider control register
-- #clock-cells : from common clock binding; shall be set to 1
-- clocks : must be set to the parent's phandle
-
-Example:
-
-corediv_clk: corediv-clocks@18740 {
-       compatible = "marvell,armada-370-corediv-clock";
-       reg = <0x18740 0xc>;
-       #clock-cells = <1>;
-       clocks = <&pll>;
-};
diff --git a/Bindings/clock/mvebu-cpu-clock.txt b/Bindings/clock/mvebu-cpu-clock.txt
deleted file mode 100644 (file)
index 7f28506..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-Device Tree Clock bindings for cpu clock of Marvell EBU platforms
-
-Required properties:
-- compatible : shall be one of the following:
-       "marvell,armada-xp-cpu-clock" - cpu clocks for Armada XP
-       "marvell,mv98dx3236-cpu-clock" - cpu clocks for 98DX3236 SoC
-- reg : Address and length of the clock complex register set, followed
-        by address and length of the PMU DFS registers
-- #clock-cells : should be set to 1.
-- clocks : shall be the input parent clock phandle for the clock.
-
-cpuclk: clock-complex@d0018700 {
-       #clock-cells = <1>;
-       compatible = "marvell,armada-xp-cpu-clock";
-       reg = <0xd0018700 0xA0>, <0x1c054 0x10>;
-       clocks = <&coreclk 1>;
-}
-
-cpu@0 {
-       compatible = "marvell,sheeva-v7";
-       reg = <0>;
-       clocks = <&cpuclk 0>;
-};
diff --git a/Bindings/clock/mvebu-gated-clock.txt b/Bindings/clock/mvebu-gated-clock.txt
deleted file mode 100644 (file)
index de562da..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-* Gated Clock bindings for Marvell EBU SoCs
-
-Marvell Armada 370/375/380/385/39x/XP, Dove and Kirkwood allow some
-peripheral clocks to be gated to save some power. The clock consumer
-should specify the desired clock by having the clock ID in its
-"clocks" phandle cell. The clock ID is directly mapped to the
-corresponding clock gating control bit in HW to ease manual clock
-lookup in datasheet.
-
-The following is a list of provided IDs for Armada 370:
-ID     Clock   Peripheral
------------------------------------
-0      Audio   AC97 Cntrl
-1      pex0_en PCIe 0 Clock out
-2      pex1_en PCIe 1 Clock out
-3      ge1     Gigabit Ethernet 1
-4      ge0     Gigabit Ethernet 0
-5      pex0    PCIe Cntrl 0
-9      pex1    PCIe Cntrl 1
-15     sata0   SATA Host 0
-17     sdio    SDHCI Host
-23     crypto  CESA (crypto engine)
-25     tdm     Time Division Mplx
-28     ddr     DDR Cntrl
-30     sata1   SATA Host 0
-
-The following is a list of provided IDs for Armada 375:
-ID     Clock           Peripheral
------------------------------------
-2      mu              Management Unit
-3      pp              Packet Processor
-4      ptp             PTP
-5      pex0            PCIe 0 Clock out
-6      pex1            PCIe 1 Clock out
-8      audio           Audio Cntrl
-11     nd_clk          Nand Flash Cntrl
-14     sata0_link      SATA 0 Link
-15     sata0_core      SATA 0 Core
-16     usb3            USB3 Host
-17     sdio            SDHCI Host
-18     usb             USB Host
-19     gop             Gigabit Ethernet MAC
-20     sata1_link      SATA 1 Link
-21     sata1_core      SATA 1 Core
-22     xor0            XOR DMA 0
-23     xor1            XOR DMA 0
-24     copro           Coprocessor
-25     tdm             Time Division Mplx
-28     crypto0_enc     Cryptographic Unit Port 0 Encryption
-29     crypto0_core    Cryptographic Unit Port 0 Core
-30     crypto1_enc     Cryptographic Unit Port 1 Encryption
-31     crypto1_core    Cryptographic Unit Port 1 Core
-
-The following is a list of provided IDs for Armada 380/385:
-ID     Clock           Peripheral
------------------------------------
-0      audio           Audio
-2      ge2             Gigabit Ethernet 2
-3      ge1             Gigabit Ethernet 1
-4      ge0             Gigabit Ethernet 0
-5      pex1            PCIe 1
-6      pex2            PCIe 2
-7      pex3            PCIe 3
-8      pex0            PCIe 0
-9      usb3h0          USB3 Host 0
-10     usb3h1          USB3 Host 1
-11     usb3d           USB3 Device
-13     bm              Buffer Management
-14     crypto0z        Cryptographic 0 Z
-15     sata0           SATA 0
-16     crypto1z        Cryptographic 1 Z
-17     sdio            SDIO
-18     usb2            USB 2
-21     crypto1         Cryptographic 1
-22     xor0            XOR 0
-23     crypto0         Cryptographic 0
-25     tdm             Time Division Multiplexing
-28     xor1            XOR 1
-30     sata1           SATA 1
-
-The following is a list of provided IDs for Armada 39x:
-ID     Clock           Peripheral
------------------------------------
-5      pex1            PCIe 1
-6      pex2            PCIe 2
-7      pex3            PCIe 3
-8      pex0            PCIe 0
-9      usb3h0          USB3 Host 0
-10     usb3h1          USB3 Host 1
-15     sata0           SATA 0
-17     sdio            SDIO
-22     xor0            XOR 0
-28     xor1            XOR 1
-
-The following is a list of provided IDs for Armada XP:
-ID     Clock   Peripheral
------------------------------------
-0      audio   Audio Cntrl
-1      ge3     Gigabit Ethernet 3
-2      ge2     Gigabit Ethernet 2
-3      ge1     Gigabit Ethernet 1
-4      ge0     Gigabit Ethernet 0
-5      pex0    PCIe Cntrl 0
-6      pex1    PCIe Cntrl 1
-7      pex2    PCIe Cntrl 2
-8      pex3    PCIe Cntrl 3
-13     bp
-14     sata0lnk
-15     sata0   SATA Host 0
-16     lcd     LCD Cntrl
-17     sdio    SDHCI Host
-18     usb0    USB Host 0
-19     usb1    USB Host 1
-20     usb2    USB Host 2
-22     xor0    XOR DMA 0
-23     crypto  CESA engine
-25     tdm     Time Division Mplx
-28     xor1    XOR DMA 1
-29     sata1lnk
-30     sata1   SATA Host 1
-
-The following is a list of provided IDs for 98dx3236:
-ID     Clock   Peripheral
------------------------------------
-3      ge1     Gigabit Ethernet 1
-4      ge0     Gigabit Ethernet 0
-5      pex0    PCIe Cntrl 0
-17     sdio    SDHCI Host
-18     usb0    USB Host 0
-22     xor0    XOR DMA 0
-
-The following is a list of provided IDs for Dove:
-ID     Clock   Peripheral
------------------------------------
-0      usb0    USB Host 0
-1      usb1    USB Host 1
-2      ge      Gigabit Ethernet
-3      sata    SATA Host
-4      pex0    PCIe Cntrl 0
-5      pex1    PCIe Cntrl 1
-8      sdio0   SDHCI Host 0
-9      sdio1   SDHCI Host 1
-10     nand    NAND Cntrl
-11     camera  Camera Cntrl
-12     i2s0    I2S Cntrl 0
-13     i2s1    I2S Cntrl 1
-15     crypto  CESA engine
-21     ac97    AC97 Cntrl
-22     pdma    Peripheral DMA
-23     xor0    XOR DMA 0
-24     xor1    XOR DMA 1
-30     gephy   Gigabit Ethernel PHY
-Note: gephy(30) is implemented as a parent clock of ge(2)
-
-The following is a list of provided IDs for Kirkwood:
-ID     Clock   Peripheral
------------------------------------
-0      ge0     Gigabit Ethernet 0
-2      pex0    PCIe Cntrl 0
-3      usb0    USB Host 0
-4      sdio    SDIO Cntrl
-5      tsu     Transp. Stream Unit
-6      dunit   SDRAM Cntrl
-7      runit   Runit
-8      xor0    XOR DMA 0
-9      audio   I2S Cntrl 0
-14     sata0   SATA Host 0
-15     sata1   SATA Host 1
-16     xor1    XOR DMA 1
-17     crypto  CESA engine
-18     pex1    PCIe Cntrl 1
-19     ge1     Gigabit Ethernet 1
-20     tdm     Time Division Mplx
-
-Required properties:
-- compatible : shall be one of the following:
-       "marvell,armada-370-gating-clock" - for Armada 370 SoC clock gating
-       "marvell,armada-375-gating-clock" - for Armada 375 SoC clock gating
-       "marvell,armada-380-gating-clock" - for Armada 380/385 SoC clock gating
-       "marvell,armada-390-gating-clock" - for Armada 39x SoC clock gating
-       "marvell,armada-xp-gating-clock" - for Armada XP SoC clock gating
-       "marvell,mv98dx3236-gating-clock" - for 98dx3236 SoC clock gating
-       "marvell,dove-gating-clock" - for Dove SoC clock gating
-       "marvell,kirkwood-gating-clock" - for Kirkwood SoC clock gating
-- reg : shall be the register address of the Clock Gating Control register
-- #clock-cells : from common clock binding; shall be set to 1
-
-Optional properties:
-- clocks : default parent clock phandle (e.g. tclk)
-
-Example:
-
-gate_clk: clock-gating-control@d0038 {
-       compatible = "marvell,dove-gating-clock";
-       reg = <0xd0038 0x4>;
-       /* default parent clock is tclk */
-       clocks = <&core_clk 0>;
-       #clock-cells = <1>;
-};
-
-sdio0: sdio@92000 {
-       compatible = "marvell,dove-sdhci";
-       /* get clk gate bit 8 (sdio0) */
-       clocks = <&gate_clk 8>;
-};
diff --git a/Bindings/clock/nspire-clock.txt b/Bindings/clock/nspire-clock.txt
deleted file mode 100644 (file)
index 7c3bc8b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-TI-NSPIRE Clocks
-
-Required properties:
-- compatible: Valid compatible properties include:
-       "lsi,nspire-cx-ahb-divider" for the AHB divider in the CX model
-       "lsi,nspire-classic-ahb-divider" for the AHB divider in the older model
-       "lsi,nspire-cx-clock" for the base clock in the CX model
-       "lsi,nspire-classic-clock" for the base clock in the older model
-
-- reg: Physical base address of the controller and length of memory mapped
-       region.
-
-Optional:
-- clocks: For the "nspire-*-ahb-divider" compatible clocks, this is the parent
-       clock where it divides the rate from.
-
-Example:
-
-ahb_clk {
-       #clock-cells = <0>;
-       compatible = "lsi,nspire-cx-clock";
-       reg = <0x900B0000 0x4>;
-       clocks = <&base_clk>;
-};
diff --git a/Bindings/clock/nuvoton,npcm750-clk.txt b/Bindings/clock/nuvoton,npcm750-clk.txt
deleted file mode 100644 (file)
index f820645..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-* Nuvoton NPCM7XX Clock Controller
-
-Nuvoton Poleg BMC NPCM7XX contains an integrated clock controller, which
-generates and supplies clocks to all modules within the BMC.
-
-External clocks:
-
-There are six fixed clocks that are generated outside the BMC. All clocks are of
-a known fixed value that cannot be changed. clk_refclk, clk_mcbypck and
-clk_sysbypck are inputs to the clock controller.
-clk_rg1refck, clk_rg2refck and clk_xin are external clocks suppling the
-network. They are set on the device tree, but not used by the clock module. The
-network devices use them directly.
-Example can be found below.
-
-All available clocks are defined as preprocessor macros in:
-dt-bindings/clock/nuvoton,npcm7xx-clock.h
-and can be reused as DT sources.
-
-Required Properties of clock controller:
-
-       - compatible: "nuvoton,npcm750-clk" : for clock controller of Nuvoton
-                 Poleg BMC NPCM750
-
-       - reg: physical base address of the clock controller and length of
-               memory mapped region.
-
-       - #clock-cells: should be 1.
-
-Example: Clock controller node:
-
-       clk: clock-controller@f0801000 {
-               compatible = "nuvoton,npcm750-clk";
-               #clock-cells = <1>;
-               reg = <0xf0801000 0x1000>;
-               clock-names = "refclk", "sysbypck", "mcbypck";
-               clocks = <&clk_refclk>, <&clk_sysbypck>, <&clk_mcbypck>;
-       };
-
-Example: Required external clocks for network:
-
-       /* external reference clock */
-       clk_refclk: clk-refclk {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <25000000>;
-               clock-output-names = "refclk";
-       };
-
-       /* external reference clock for cpu. float in normal operation */
-       clk_sysbypck: clk-sysbypck {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <800000000>;
-               clock-output-names = "sysbypck";
-       };
-
-       /* external reference clock for MC. float in normal operation */
-       clk_mcbypck: clk-mcbypck {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <800000000>;
-               clock-output-names = "mcbypck";
-       };
-
-        /* external clock signal rg1refck, supplied by the phy */
-       clk_rg1refck: clk-rg1refck {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <125000000>;
-               clock-output-names = "clk_rg1refck";
-       };
-
-        /* external clock signal rg2refck, supplied by the phy */
-       clk_rg2refck: clk-rg2refck {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <125000000>;
-               clock-output-names = "clk_rg2refck";
-       };
-
-       clk_xin: clk-xin {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <50000000>;
-               clock-output-names = "clk_xin";
-       };
-
-
-Example: GMAC controller node that consumes two clocks: a generated clk by the
-clock controller and a fixed clock from DT (clk_rg1refck).
-
-       ethernet0: ethernet@f0802000 {
-               compatible = "snps,dwmac";
-               reg = <0xf0802000 0x2000>;
-               interrupts = <0 14 4>;
-               interrupt-names = "macirq";
-               clocks  = <&clk_rg1refck>, <&clk NPCM7XX_CLK_AHB>;
-               clock-names = "stmmaceth", "clk_gmac";
-       };
diff --git a/Bindings/clock/nuvoton,npcm750-clk.yaml b/Bindings/clock/nuvoton,npcm750-clk.yaml
new file mode 100644 (file)
index 0000000..694dac6
--- /dev/null
@@ -0,0 +1,66 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/nuvoton,npcm750-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nuvoton NPCM7XX Clock Controller
+
+maintainers:
+  - Tali Perry <tali.perry1@gmail.com>
+
+description: >
+  Nuvoton Poleg BMC NPCM7XX contains an integrated clock controller, which
+  generates and supplies clocks to all modules within the BMC.
+
+  External clocks:
+
+  There are six fixed clocks that are generated outside the BMC. All clocks are of
+  a known fixed value that cannot be changed. clk_refclk, clk_mcbypck and
+  clk_sysbypck are inputs to the clock controller.
+  clk_rg1refck, clk_rg2refck and clk_xin are external clocks suppling the
+  network. They are set on the device tree, but not used by the clock module. The
+  network devices use them directly.
+
+  All available clocks are defined as preprocessor macros in:
+  dt-bindings/clock/nuvoton,npcm7xx-clock.h
+  and can be reused as DT sources.
+
+properties:
+  compatible:
+    const: nuvoton,npcm750-clk
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+  clock-names:
+    items:
+      - const: refclk
+      - const: sysbypck
+      - const: mcbypck
+
+  clocks:
+    items:
+      - description: refclk
+      - description: sysbypck
+      - description: mcbypck
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@f0801000 {
+        compatible = "nuvoton,npcm750-clk";
+        #clock-cells = <1>;
+        reg = <0xf0801000 0x1000>;
+        clock-names = "refclk", "sysbypck", "mcbypck";
+        clocks = <&clk_refclk>, <&clk_sysbypck>, <&clk_mcbypck>;
+    };
index d0291bfff23a27cb55683880fe3a1f8b3e2ada5a..27403b4c52d6219d31649d75539af93edae0f17d 100644 (file)
@@ -13,6 +13,8 @@ properties:
   compatible:
     items:
       - enum:
+          - nxp,imx94-display-csr
+          - nxp,imx94-lvds-csr
           - nxp,imx95-camera-csr
           - nxp,imx95-display-csr
           - nxp,imx95-hsio-blk-ctl
diff --git a/Bindings/clock/nxp,lpc1850-ccu.yaml b/Bindings/clock/nxp,lpc1850-ccu.yaml
new file mode 100644 (file)
index 0000000..5459038
--- /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/clock/nxp,lpc1850-ccu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC1850 Clock Control Unit (CCU)
+
+description:
+  Each CGU base clock has several clock branches which can be turned on
+  or off independently by the Clock Control Units CCU1 or CCU2. The
+  branch clocks are distributed between CCU1 and CCU2.
+
+  Above text taken from NXP LPC1850 User Manual
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc1850-ccu
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+  clocks:
+    minItems: 1
+    maxItems: 8
+
+  clock-names:
+    minItems: 1
+    maxItems: 8
+    items:
+      enum:
+        - base_usb0_clk
+        - base_periph_clk
+        - base_usb1_clk
+        - base_cpu_clk
+        - base_spifi_clk
+        - base_spi_clk
+        - base_apb1_clk
+        - base_apb3_clk
+        - base_adchs_clk
+        - base_sdio_clk
+        - base_ssp0_clk
+        - base_ssp1_clk
+        - base_uart0_clk
+        - base_uart1_clk
+        - base_uart2_clk
+        - base_uart3_clk
+        - base_audio_clk
+    description:
+      Which branch clocks that are available on the CCU depends on the
+      specific LPC part. Check the user manual for your specific part.
+
+      A list of CCU clocks can be found in dt-bindings/clock/lpc18xx-ccu.h.
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc18xx-cgu.h>
+
+    clock-controller@40051000 {
+        compatible = "nxp,lpc1850-ccu";
+        reg = <0x40051000 0x1000>;
+        #clock-cells = <1>;
+        clocks = <&cgu BASE_APB3_CLK>, <&cgu BASE_APB1_CLK>,
+                 <&cgu BASE_SPIFI_CLK>, <&cgu BASE_CPU_CLK>,
+                 <&cgu BASE_PERIPH_CLK>, <&cgu BASE_USB0_CLK>,
+                 <&cgu BASE_USB1_CLK>, <&cgu BASE_SPI_CLK>;
+        clock-names = "base_apb3_clk",   "base_apb1_clk",
+                      "base_spifi_clk",  "base_cpu_clk",
+                      "base_periph_clk", "base_usb0_clk",
+                      "base_usb1_clk",   "base_spi_clk";
+    };
+
+  - |
+    #include <dt-bindings/clock/lpc18xx-cgu.h>
+
+    clock-controller@40052000 {
+        compatible = "nxp,lpc1850-ccu";
+        reg = <0x40052000 0x1000>;
+        #clock-cells = <1>;
+        clocks = <&cgu BASE_AUDIO_CLK>, <&cgu BASE_UART3_CLK>,
+                 <&cgu BASE_UART2_CLK>, <&cgu BASE_UART1_CLK>,
+                 <&cgu BASE_UART0_CLK>, <&cgu BASE_SSP1_CLK>,
+                 <&cgu BASE_SSP0_CLK>,  <&cgu BASE_SDIO_CLK>;
+        clock-names = "base_audio_clk", "base_uart3_clk",
+                      "base_uart2_clk", "base_uart1_clk",
+                      "base_uart0_clk", "base_ssp1_clk",
+                      "base_ssp0_clk",  "base_sdio_clk";
+    };
+
diff --git a/Bindings/clock/nxp,lpc1850-cgu.yaml b/Bindings/clock/nxp,lpc1850-cgu.yaml
new file mode 100644 (file)
index 0000000..ed178c7
--- /dev/null
@@ -0,0 +1,99 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/nxp,lpc1850-cgu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC1850 Clock Generation Unit (CGU)
+
+description: >
+  The CGU generates multiple independent clocks for the core and the
+  peripheral blocks of the LPC18xx. Each independent clock is called
+  a base clock and itself is one of the inputs to the two Clock
+  Control Units (CCUs) which control the branch clocks to the
+  individual peripherals.
+
+  The CGU selects the inputs to the clock generators from multiple
+  clock sources, controls the clock generation, and routes the outputs
+  of the clock generators through the clock source bus to the output
+  stages. Each output stage provides an independent clock source and
+  corresponds to one of the base clocks for the LPC18xx.
+
+  Above text taken from NXP LPC1850 User Manual.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc1850-cgu
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+    description: |
+      Which base clocks that are available on the CGU depends on the
+      specific LPC part. Base clocks are numbered from 0 to 27.
+
+      Number:         Name:                   Description:
+       0              BASE_SAFE_CLK           Base safe clock (always on) for WWDT
+       1              BASE_USB0_CLK           Base clock for USB0
+       2              BASE_PERIPH_CLK         Base clock for Cortex-M0SUB subsystem,
+                                        SPI, and SGPIO
+       3              BASE_USB1_CLK           Base clock for USB1
+       4              BASE_CPU_CLK            System base clock for ARM Cortex-M core
+                                        and APB peripheral blocks #0 and #2
+       5              BASE_SPIFI_CLK          Base clock for SPIFI
+       6              BASE_SPI_CLK            Base clock for SPI
+       7              BASE_PHY_RX_CLK         Base clock for Ethernet PHY Receive clock
+       8              BASE_PHY_TX_CLK         Base clock for Ethernet PHY Transmit clock
+       9              BASE_APB1_CLK           Base clock for APB peripheral block # 1
+      10              BASE_APB3_CLK           Base clock for APB peripheral block # 3
+      11              BASE_LCD_CLK            Base clock for LCD
+      12              BASE_ADCHS_CLK          Base clock for ADCHS
+      13              BASE_SDIO_CLK           Base clock for SD/MMC
+      14              BASE_SSP0_CLK           Base clock for SSP0
+      15              BASE_SSP1_CLK           Base clock for SSP1
+      16              BASE_UART0_CLK          Base clock for UART0
+      17              BASE_UART1_CLK          Base clock for UART1
+      18              BASE_UART2_CLK          Base clock for UART2
+      19              BASE_UART3_CLK          Base clock for UART3
+      20              BASE_OUT_CLK            Base clock for CLKOUT pin
+      24-21           -                       Reserved
+      25              BASE_AUDIO_CLK          Base clock for audio system (I2S)
+      26              BASE_CGU_OUT0_CLK       Base clock for CGU_OUT0 clock output
+      27              BASE_CGU_OUT1_CLK       Base clock for CGU_OUT1 clock output
+
+      BASE_PERIPH_CLK and BASE_SPI_CLK is only available on LPC43xx.
+      BASE_ADCHS_CLK is only available on LPC4370.
+
+  clocks:
+    maxItems: 5
+
+  clock-indices:
+    minItems: 1
+    maxItems: 28
+
+  clock-output-names:
+    minItems: 1
+    maxItems: 28
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@40050000 {
+        compatible = "nxp,lpc1850-cgu";
+        reg = <0x40050000 0x1000>;
+        #clock-cells = <1>;
+        clocks = <&xtal>, <&creg_clk 1>, <&enet_rx_clk>, <&enet_tx_clk>, <&gp_clkin>;
+    };
+
diff --git a/Bindings/clock/pistachio-clock.txt b/Bindings/clock/pistachio-clock.txt
deleted file mode 100644 (file)
index 868db49..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-Imagination Technologies Pistachio SoC clock controllers
-========================================================
-
-Pistachio has four clock controllers (core clock, peripheral clock, peripheral
-general control, and top general control) which are instantiated individually
-from the device-tree.
-
-External clocks:
-----------------
-
-There are three external inputs to the clock controllers which should be
-defined with the following clock-output-names:
-- "xtal": External 52Mhz oscillator (required)
-- "audio_clk_in": Alternate audio reference clock (optional)
-- "enet_clk_in": Alternate ethernet PHY clock (optional)
-
-Core clock controller:
-----------------------
-
-The core clock controller generates clocks for the CPU, RPU (WiFi + BT
-co-processor), audio, and several peripherals.
-
-Required properties:
-- compatible: Must be "img,pistachio-clk".
-- reg: Must contain the base address and length of the core clock controller.
-- #clock-cells: Must be 1.  The single cell is the clock identifier.
-  See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
-- clocks: Must contain an entry for each clock in clock-names.
-- clock-names: Must include "xtal" (see "External clocks") and
-  "audio_clk_in_gate", "enet_clk_in_gate" which are generated by the
-  top-level general control.
-
-Example:
-       clk_core: clock-controller@18144000 {
-               compatible = "img,pistachio-clk";
-               reg = <0x18144000 0x800>;
-               clocks = <&xtal>, <&cr_top EXT_CLK_AUDIO_IN>,
-                        <&cr_top EXT_CLK_ENET_IN>;
-               clock-names = "xtal", "audio_clk_in_gate", "enet_clk_in_gate";
-
-               #clock-cells = <1>;
-       };
-
-Peripheral clock controller:
-----------------------------
-
-The peripheral clock controller generates clocks for the DDR, ROM, and other
-peripherals.  The peripheral system clock ("periph_sys") generated by the core
-clock controller is the input clock to the peripheral clock controller.
-
-Required properties:
-- compatible: Must be "img,pistachio-periph-clk".
-- reg: Must contain the base address and length of the peripheral clock
-  controller.
-- #clock-cells: Must be 1.  The single cell is the clock identifier.
-  See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
-- clocks: Must contain an entry for each clock in clock-names.
-- clock-names: Must include "periph_sys", the peripheral system clock generated
-  by the core clock controller.
-
-Example:
-       clk_periph: clock-controller@18144800 {
-               compatible = "img,pistachio-clk-periph";
-               reg = <0x18144800 0x800>;
-               clocks = <&clk_core CLK_PERIPH_SYS>;
-               clock-names = "periph_sys";
-
-               #clock-cells = <1>;
-       };
-
-Peripheral general control:
----------------------------
-
-The peripheral general control block generates system interface clocks and
-resets for various peripherals.  It also contains miscellaneous peripheral
-control registers.  The system clock ("sys") generated by the peripheral clock
-controller is the input clock to the system clock controller.
-
-Required properties:
-- compatible: Must include "img,pistachio-periph-cr" and "syscon".
-- reg: Must contain the base address and length of the peripheral general
-  control registers.
-- #clock-cells: Must be 1.  The single cell is the clock identifier.
-  See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
-- clocks: Must contain an entry for each clock in clock-names.
-- clock-names: Must include "sys", the system clock generated by the peripheral
-  clock controller.
-
-Example:
-       cr_periph: syscon@18144800 {
-               compatible = "img,pistachio-cr-periph", "syscon";
-               reg = <0x18148000 0x1000>;
-               clocks = <&clock_periph PERIPH_CLK_PERIPH_SYS>;
-               clock-names = "sys";
-
-               #clock-cells = <1>;
-       };
-
-Top-level general control:
---------------------------
-
-The top-level general control block contains miscellaneous control registers and
-gates for the external clocks "audio_clk_in" and "enet_clk_in".
-
-Required properties:
-- compatible: Must include "img,pistachio-cr-top" and "syscon".
-- reg: Must contain the base address and length of the top-level
-  control registers.
-- clocks: Must contain an entry for each clock in clock-names.
-- clock-names: Two optional clocks, "audio_clk_in" and "enet_clk_in" (see
-  "External clocks").
-- #clock-cells: Must be 1.  The single cell is the clock identifier.
-  See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
-
-Example:
-       cr_top: syscon@18144800 {
-               compatible = "img,pistachio-cr-top", "syscon";
-               reg = <0x18149000 0x200>;
-               clocks = <&audio_refclk>, <&ext_enet_in>;
-               clock-names = "audio_clk_in", "enet_clk_in";
-
-               #clock-cells = <1>;
-       };
diff --git a/Bindings/clock/qca,ath79-pll.txt b/Bindings/clock/qca,ath79-pll.txt
deleted file mode 100644 (file)
index 241fb05..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-Binding for Qualcomm Atheros AR7xxx/AR9XXX PLL controller
-
-The PPL controller provides the 3 main clocks of the SoC: CPU, DDR and AHB.
-
-Required Properties:
-- compatible: has to be "qca,<soctype>-pll" and one of the following
-  fallbacks:
-  - "qca,ar7100-pll"
-  - "qca,ar7240-pll"
-  - "qca,ar9130-pll"
-  - "qca,ar9330-pll"
-  - "qca,ar9340-pll"
-  - "qca,qca9550-pll"
-- reg: Base address and size of the controllers memory area
-- clock-names: Name of the input clock, has to be "ref"
-- clocks: phandle of the external reference clock
-- #clock-cells: has to be one
-
-Optional properties:
-- clock-output-names: should be "cpu", "ddr", "ahb"
-
-Example:
-
-       pll-controller@18050000 {
-               compatible = "qca,ar9132-pll", "qca,ar9130-pll";
-               reg = <0x18050000 0x20>;
-
-               clock-names = "ref";
-               clocks = <&extosc>;
-
-               #clock-cells = <1>;
-               clock-output-names = "cpu", "ddr", "ahb";
-       };
diff --git a/Bindings/clock/qca,ath79-pll.yaml b/Bindings/clock/qca,ath79-pll.yaml
new file mode 100644 (file)
index 0000000..69863e8
--- /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/clock/qca,ath79-pll.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Atheros ATH79 PLL controller
+
+maintainers:
+  - Alban Bedel <albeu@free.fr>
+  - Antony Pavlov <antonynpavlov@gmail.com>
+
+description: >
+  The PLL controller provides the 3 main clocks of the SoC: CPU, DDR and AHB.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: qca,ar9132-pll
+          - const: qca,ar9130-pll
+      - items:
+          - enum:
+              - qca,ar7100-pll
+              - qca,ar7240-pll
+              - qca,ar9130-pll
+              - qca,ar9330-pll
+              - qca,ar9340-pll
+              - qca,qca9530-pll
+              - qca,qca9550-pll
+              - qca,qca9560-pll
+
+  reg:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: ref
+
+  clocks:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+  clock-output-names:
+    items:
+      - const: cpu
+      - const: ddr
+      - const: ahb
+
+required:
+  - compatible
+  - reg
+  - clock-names
+  - clocks
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@18050000 {
+        compatible = "qca,ar9132-pll", "qca,ar9130-pll";
+        reg = <0x18050000 0x20>;
+        clock-names = "ref";
+        clocks = <&extosc>;
+        #clock-cells = <1>;
+        clock-output-names = "cpu", "ddr", "ahb";
+    };
index 3fd3dc1069fb170532fdb37a3cacc0fee057f565..5c3ff37ec0d75b3dc8947b62d376bb6bd28df2dd 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm camera clock control module provides the clocks, resets and
   power domains on SM8250.
 
-  See also:: include/dt-bindings/clock/qcom,camcc-sm8250.h
+  See also: include/dt-bindings/clock/qcom,camcc-sm8250.h
 
 allOf:
   - $ref: qcom,gcc.yaml#
index 0a3ef7fd03fa40cdbb1ff11d2d2cdf6ecec81bc8..ef2b1e2044309ad00d95ae03f3f372296e7d53d4 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm display clock control module provides the clocks and power domains
   on SM6125.
 
-  See also:: include/dt-bindings/clock/qcom,dispcc-sm6125.h
+  See also: include/dt-bindings/clock/qcom,dispcc-sm6125.h
 
 properties:
   compatible:
index 46403b98411f81d6d136d8c9e5602095b72e0e33..a602e882e964e39d2e9b1d012e5d803b6568690a 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm display clock control module provides the clocks, resets and power
   domains on SM6350.
 
-  See also:: include/dt-bindings/clock/qcom,dispcc-sm6350.h
+  See also: include/dt-bindings/clock/qcom,dispcc-sm6350.h
 
 properties:
   compatible:
index 012048921f92e43a78a2606fe63594a36932a947..c91039dc100e19a7c105ea7d210cbc38864e37aa 100644 (file)
@@ -15,7 +15,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on IPQ4019.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-ipq4019.h
+  See also: include/dt-bindings/clock/qcom,gcc-ipq4019.h
 
 allOf:
   - $ref: qcom,gcc.yaml#
index 38b9e42839004158deed1f8eacba4ddf660edfb9..00d7df75b3d6af58fafca9158b7b0ac53502e330 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on IPQ8074.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-ipq8074.h
+  See also: include/dt-bindings/clock/qcom,gcc-ipq8074.h
 
 allOf:
   - $ref: qcom,gcc.yaml#
index cd49704dcb95a99a91eab2018465fccc571d77ee..92195091a91962941ebf24450610d6b72c24628a 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on MSM8976.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-msm8976.h
+  See also: include/dt-bindings/clock/qcom,gcc-msm8976.h
 
 properties:
   compatible:
index 10afe984e2fbc1fd190b6cb901b0f1f5df43157f..93bcd61461e7b45f1710efb0fce70224405df36a 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on MSM8994 and MSM8992.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-msm8994.h
+  See also: include/dt-bindings/clock/qcom,gcc-msm8994.h
 
 properties:
   compatible:
index 013fd074a8d56f384561a885569253ea134a9c9d..64796f45f2948d08f1224b4a53715f4a0d90c252 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module which provides the clocks, resets and
   power domains on MSM8996.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-msm8996.h
+  See also: include/dt-bindings/clock/qcom,gcc-msm8996.h
 
 properties:
   compatible:
index abae658c0ed959bf05c752967da76446d8562de4..d882f2b6620ee4f89ce27173480ea47ab3e70cd7 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on MSM8998.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-msm8998.h
+  See also: include/dt-bindings/clock/qcom,gcc-msm8998.h
 
 properties:
   compatible:
index 38c4c8c61b3af6478960c79128421930fa51c9c1..b9194fa11e47526b65f62096bc0483ef5a8d3830 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on QCM2290.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-qcm2290.h
+  See also: include/dt-bindings/clock/qcom,gcc-qcm2290.h
 
 properties:
   compatible:
index 94755465c1fb42a472e0cc80221b4fe7318b70e1..6b35a3c080a2625c32538bf5e1cb22af8c5cd897 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on QCS404.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-qcs404.h
+  See also: include/dt-bindings/clock/qcom,gcc-qcs404.h
 
 properties:
   compatible:
index 1847bbeaa9d1852379bb9ff8168121e70ef50ea7..e30d1df3eeb50bb3829af3a8176cc08f0335283d 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SC7180.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sc7180.h
+  See also: include/dt-bindings/clock/qcom,gcc-sc7180.h
 
 properties:
   compatible:
index 4e4f68b9f6d2802774030d652a26ce14e053aa4d..5ddaf27bb1f4b1d3c2a3e1b27a5c88e1d91967de 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SC7280.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sc7280.h
+  See also: include/dt-bindings/clock/qcom,gcc-sc7280.h
 
 properties:
   compatible:
index b4784ecaf58d2f1c360c2e94cef681b26c308b2c..82c2ef39934d1ab373d9e4119c3aade544c873c4 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SC8180x.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sc8180x.h
+  See also: include/dt-bindings/clock/qcom,gcc-sc8180x.h
 
 properties:
   compatible:
index 5cfde8a4de4e9a1275d53a0bc7aa0f01f47f304e..c1eeccef66b4528834ef12984a4d19822e8133db 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and
   power domains on SC8280xp.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sc8280xp.h
+  See also: include/dt-bindings/clock/qcom,gcc-sc8280xp.h
 
 properties:
   compatible:
index ef0a20456e8a5a8a9a9dcb6af29766d99a283656..a7523a4143419fe19148e6a1ba9c5a8651935d13 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SDM670 and SDM845
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sdm845.h
+  See also: include/dt-bindings/clock/qcom,gcc-sdm845.h
 
 properties:
   compatible:
index 30819f3d85c621ac8326b706d76cd888fb907d2d..320e4f5b2b1806a4e218515de20826f255f2ecdd 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and
   power domains on SDX55
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sdx55.h
+  See also: include/dt-bindings/clock/qcom,gcc-sdx55.h
 
 properties:
   compatible:
index 9154492286685f9b9ec7a6cb1ab1577888809adb..9242e6e191399c223c3cdad1100a6fb878a2c247 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SDX65
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sdx65.h
+  See also: include/dt-bindings/clock/qcom,gcc-sdx65.h
 
 properties:
   compatible:
index ecb69c707f09b858a3e0c5936d34581077fe478c..c926630907c51ec971b2648a0430dea4a36a5f28 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM4250/6115.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sm6115.h
+  See also: include/dt-bindings/clock/qcom,gcc-sm6115.h
 
 properties:
   compatible:
index 1fe68e07a2b208b7caffe181328ddc26e09cd20e..5bd422e94a384994e165ab1725f63130a3f2dbfb 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM6125.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sm6125.h
+  See also: include/dt-bindings/clock/qcom,gcc-sm6125.h
 
 properties:
   compatible:
index 78e232fa95dc603b58848b45ffd2fc79b32577c0..819e855eaf9af04ca86361c6b73e7a561b6b52f1 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM6350.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sm6350.h
+  See also: include/dt-bindings/clock/qcom,gcc-sm6350.h
 
 properties:
   compatible:
index 1dcf97c0c064ed56cb249846a0d6f7b032cb3d2f..5f3f69fe9ddbed545a84c86f4e2429611c253a6d 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM8150.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sm8150.h
+  See also: include/dt-bindings/clock/qcom,gcc-sm8150.h
 
 properties:
   compatible:
index 979ff0a8bf6868068c11dd15db764c6708489d86..f4cd5a509c6053eaca45a8e1009921f663d81571 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM8250.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sm8250.h
+  See also: include/dt-bindings/clock/qcom,gcc-sm8250.h
 
 properties:
   compatible:
index 594e87f5ba092af66ca029fdb399db48fe14875d..97ffae3b55227d1b0d2523f03e3ccc0bfd1a40c9 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM8350.
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sm8350.h
+  See also: include/dt-bindings/clock/qcom,gcc-sm8350.h
 
 properties:
   compatible:
index 77273aee5d52d63996b19490bb5ed15ecf96d013..3169ac05e1d8ac704566d36943e9cf35b4674ebf 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM8450
 
-  See also:: include/dt-bindings/clock/qcom,gcc-sm8450.h
+  See also: include/dt-bindings/clock/qcom,gcc-sm8450.h
 
 properties:
   compatible:
index f869b3739be859de90ff93a470e55fe7e596d185..817d51135fbfdf0f518af1007ec7d6b120a91818 100644 (file)
@@ -24,6 +24,8 @@ description:
 properties:
   compatible:
     enum:
+      - qcom,ipq5018-cmn-pll
+      - qcom,ipq5424-cmn-pll
       - qcom,ipq9574-cmn-pll
 
   reg:
diff --git a/Bindings/clock/qcom,krait-cc.txt b/Bindings/clock/qcom,krait-cc.txt
deleted file mode 100644 (file)
index 030ba60..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-Krait Clock Controller
-
-PROPERTIES
-
-- compatible:
-       Usage: required
-       Value type: <string>
-       Definition: must be one of:
-                       "qcom,krait-cc-v1"
-                       "qcom,krait-cc-v2"
-
-- #clock-cells:
-       Usage: required
-       Value type: <u32>
-       Definition: must be 1
-
-- clocks:
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: reference to the clock parents of hfpll, secondary muxes.
-
-- clock-names:
-       Usage: required
-       Value type: <stringlist>
-       Definition: must be "hfpll0", "hfpll1", "acpu0_aux", "acpu1_aux", "qsb".
-
-Example:
-
-       kraitcc: clock-controller {
-               compatible = "qcom,krait-cc-v1";
-               clocks = <&hfpll0>, <&hfpll1>, <&acpu0_aux>, <&acpu1_aux>, <qsb>;
-               clock-names = "hfpll0", "hfpll1", "acpu0_aux", "acpu1_aux", "qsb";
-               #clock-cells = <1>;
-       };
diff --git a/Bindings/clock/qcom,krait-cc.yaml b/Bindings/clock/qcom,krait-cc.yaml
new file mode 100644 (file)
index 0000000..d6a0193
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/qcom,krait-cc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Krait Clock Controller
+
+maintainers:
+  - Stephen Boyd <sboyd@kernel.org>
+
+properties:
+  compatible:
+    enum:
+      - qcom,krait-cc-v1
+      - qcom,krait-cc-v2
+
+  '#clock-cells':
+    const: 1
+
+  clocks:
+    items:
+      - description: Parent clock phandle for hfpll0
+      - description: Parent clock phandle for hfpll1
+      - description: Parent clock phandle for acpu0_aux
+      - description: Parent clock phandle for acpu1_aux
+      - description: Parent clock phandle for qsb
+
+  clock-names:
+    items:
+      - const: hfpll0
+      - const: hfpll1
+      - const: acpu0_aux
+      - const: acpu1_aux
+      - const: qsb
+
+required:
+  - compatible
+  - '#clock-cells'
+  - clocks
+  - clock-names
+
+additionalProperties: false
diff --git a/Bindings/clock/qcom,milos-camcc.yaml b/Bindings/clock/qcom,milos-camcc.yaml
new file mode 100644 (file)
index 0000000..f63149e
--- /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/clock/qcom,milos-camcc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Camera Clock & Reset Controller on Milos
+
+maintainers:
+  - Luca Weiss <luca.weiss@fairphone.com>
+
+description: |
+  Qualcomm camera clock control module provides the clocks, resets and power
+  domains on Milos.
+
+  See also: include/dt-bindings/clock/qcom,milos-camcc.h
+
+properties:
+  compatible:
+    const: qcom,milos-camcc
+
+  clocks:
+    items:
+      - description: Board XO source
+      - description: Sleep clock source
+      - description: Camera AHB clock from GCC
+
+required:
+  - compatible
+  - clocks
+
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,milos-gcc.h>
+    clock-controller@adb0000 {
+        compatible = "qcom,milos-camcc";
+        reg = <0x0adb0000 0x40000>;
+        clocks = <&bi_tcxo_div2>,
+                 <&sleep_clk>,
+                 <&gcc GCC_CAMERA_AHB_CLK>;
+        #clock-cells = <1>;
+        #reset-cells = <1>;
+        #power-domain-cells = <1>;
+    };
+
+...
diff --git a/Bindings/clock/qcom,milos-dispcc.yaml b/Bindings/clock/qcom,milos-dispcc.yaml
new file mode 100644 (file)
index 0000000..9490880
--- /dev/null
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/qcom,milos-dispcc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Display Clock & Reset Controller on Milos
+
+maintainers:
+  - Luca Weiss <luca.weiss@fairphone.com>
+
+description: |
+  Qualcomm display clock control module provides the clocks, resets and power
+  domains on Milos.
+
+  See also: include/dt-bindings/clock/qcom,milos-dispcc.h
+
+properties:
+  compatible:
+    const: qcom,milos-dispcc
+
+  clocks:
+    items:
+      - description: Board XO source
+      - description: Sleep clock source
+      - description: Display's AHB clock
+      - description: GPLL0 source from GCC
+      - description: Byte clock from DSI PHY0
+      - description: Pixel clock from DSI PHY0
+      - description: Link clock from DP PHY0
+      - description: VCO DIV clock from DP PHY0
+
+required:
+  - compatible
+  - clocks
+  - '#power-domain-cells'
+
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,milos-gcc.h>
+    #include <dt-bindings/phy/phy-qcom-qmp.h>
+    clock-controller@af00000 {
+        compatible = "qcom,milos-dispcc";
+        reg = <0x0af00000 0x20000>;
+        clocks = <&bi_tcxo_div2>,
+                 <&sleep_clk>,
+                 <&gcc GCC_DISP_AHB_CLK>,
+                 <&gcc GCC_DISP_GPLL0_DIV_CLK_SRC>,
+                 <&mdss_dsi0_phy 0>,
+                 <&mdss_dsi0_phy 1>,
+                 <&usb_dp_qmpphy QMP_USB43DP_DP_LINK_CLK>,
+                 <&usb_dp_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
+        #clock-cells = <1>;
+        #reset-cells = <1>;
+        #power-domain-cells = <1>;
+    };
+
+...
diff --git a/Bindings/clock/qcom,milos-gcc.yaml b/Bindings/clock/qcom,milos-gcc.yaml
new file mode 100644 (file)
index 0000000..cf244c1
--- /dev/null
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/qcom,milos-gcc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Global Clock & Reset Controller on Milos
+
+maintainers:
+  - Luca Weiss <luca.weiss@fairphone.com>
+
+description: |
+  Qualcomm global clock control module provides the clocks, resets and power
+  domains on Milos.
+
+  See also: include/dt-bindings/clock/qcom,milos-gcc.h
+
+properties:
+  compatible:
+    const: qcom,milos-gcc
+
+  clocks:
+    items:
+      - description: Board XO source
+      - description: Sleep clock source
+      - description: PCIE 0 Pipe clock source
+      - description: PCIE 1 Pipe clock source
+      - description: UFS Phy Rx symbol 0 clock source
+      - description: UFS Phy Rx symbol 1 clock source
+      - description: UFS Phy Tx symbol 0 clock source
+      - description: USB3 Phy wrapper pipe clock source
+
+required:
+  - compatible
+  - clocks
+  - '#power-domain-cells'
+
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,rpmh.h>
+    clock-controller@100000 {
+        compatible = "qcom,milos-gcc";
+        reg = <0x00100000 0x1f4200>;
+        clocks = <&rpmhcc RPMH_CXO_CLK>,
+                 <&sleep_clk>,
+                 <&pcie0_phy>,
+                 <&pcie1_phy>,
+                 <&ufs_mem_phy 0>,
+                 <&ufs_mem_phy 1>,
+                 <&ufs_mem_phy 2>,
+                 <&usb_1_qmpphy>;
+        #clock-cells = <1>;
+        #reset-cells = <1>;
+        #power-domain-cells = <1>;
+    };
+
+...
diff --git a/Bindings/clock/qcom,milos-videocc.yaml b/Bindings/clock/qcom,milos-videocc.yaml
new file mode 100644 (file)
index 0000000..14c31ef
--- /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/clock/qcom,milos-videocc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Video Clock & Reset Controller on Milos
+
+maintainers:
+  - Luca Weiss <luca.weiss@fairphone.com>
+
+description: |
+  Qualcomm video clock control module provides the clocks, resets and power
+  domains on Milos.
+
+  See also: include/dt-bindings/clock/qcom,milos-videocc.h
+
+properties:
+  compatible:
+    const: qcom,milos-videocc
+
+  clocks:
+    items:
+      - description: Board XO source
+      - description: Board active XO source
+      - description: Sleep clock source
+      - description: Video AHB clock from GCC
+
+required:
+  - compatible
+  - clocks
+
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,milos-gcc.h>
+    clock-controller@aaf0000 {
+        compatible = "qcom,milos-videocc";
+        reg = <0x0aaf0000 0x10000>;
+        clocks = <&bi_tcxo_div2>,
+                 <&bi_tcxo_ao_div2>,
+                 <&sleep_clk>,
+                 <&gcc GCC_VIDEO_AHB_CLK>;
+        #clock-cells = <1>;
+        #reset-cells = <1>;
+        #power-domain-cells = <1>;
+    };
+
+...
index 59ac288ca5f12de4f14fac3ce0d783d1ee1ebb4f..53ceec9673a810c2230548a47e045959e8159806 100644 (file)
@@ -38,36 +38,16 @@ properties:
     minItems: 7
     maxItems: 13
 
-  '#clock-cells':
-    const: 1
-
-  '#reset-cells':
-    const: 1
-
-  '#power-domain-cells':
-    const: 1
-
-  reg:
-    maxItems: 1
-
-  protected-clocks:
-    description:
-      Protected clock specifier list as per common clock binding
-
   vdd-gfx-supply:
     description:
       Regulator supply for the GPU_GX GDSC
 
 required:
   - compatible
-  - reg
-  - '#clock-cells'
-  - '#reset-cells'
   - '#power-domain-cells'
 
-additionalProperties: false
-
 allOf:
+  - $ref: qcom,gcc.yaml#
   - if:
       properties:
         compatible:
@@ -351,6 +331,8 @@ allOf:
             - const: dp_link_2x_clk_divsel_five
             - const: dp_vco_divided_clk_src_mux
 
+unevaluatedProperties: false
+
 examples:
   # Example for MMCC for MSM8960:
   - |
index b9b218ef9b68d21ebc7c55a731c9911bb57c9e46..374de7a6f8d9f56f3619b2704309686fdace2beb 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm graphics clock control module provides the clocks, resets and power
   domains on MSM8998.
 
-  See also:: include/dt-bindings/clock/qcom,gpucc-msm8998.h
+  See also: include/dt-bindings/clock/qcom,gpucc-msm8998.h
 
 properties:
   compatible:
index 243be4f76db3b69b522408ad56bde877ace9e728..4a533b45eec2d8e7b866c3436bfe6f80fcd714fb 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm display clock control module provides the clocks, resets and power
   domains on qcm2290.
 
-  See also:: include/dt-bindings/clock/qcom,dispcc-qcm2290.h
+  See also: include/dt-bindings/clock/qcom,dispcc-qcm2290.h
 
 properties:
   compatible:
diff --git a/Bindings/clock/qcom,qcs615-dispcc.yaml b/Bindings/clock/qcom,qcs615-dispcc.yaml
new file mode 100644 (file)
index 0000000..d566f19
--- /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/qcom,qcs615-dispcc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Display Clock & Reset Controller on QCS615
+
+maintainers:
+  - Taniya Das <quic_tdas@quicinc.com>
+
+description: |
+  Qualcomm display clock control module provides the clocks, resets and power
+  domains on QCS615.
+
+  See also: include/dt-bindings/clock/qcom,qcs615-dispcc.h
+
+properties:
+  compatible:
+    const: qcom,qcs615-dispcc
+
+  clocks:
+    items:
+      - description: Board XO source
+      - description: GPLL0 clock source from GCC
+      - description: Byte clock from DSI PHY0
+      - description: Pixel clock from DSI PHY0
+      - description: Pixel clock from DSI PHY1
+      - description: Display port PLL link clock
+      - description: Display port PLL VCO DIV clock
+
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,rpmh.h>
+    #include <dt-bindings/clock/qcom,qcs615-gcc.h>
+    clock-controller@af00000 {
+      compatible = "qcom,qcs615-dispcc";
+      reg = <0x0af00000 0x20000>;
+      clocks = <&rpmhcc RPMH_CXO_CLK>,
+               <&gcc GCC_DISP_GPLL0_DIV_CLK_SRC>,
+               <&mdss_dsi0_phy 0>,
+               <&mdss_dsi0_phy 1>,
+               <&mdss_dsi1_phy 0>,
+               <&mdss_dp_phy 0>,
+               <&mdss_dp_vco 0>;
+      #clock-cells = <1>;
+      #reset-cells = <1>;
+      #power-domain-cells = <1>;
+    };
+...
diff --git a/Bindings/clock/qcom,qcs615-gpucc.yaml b/Bindings/clock/qcom,qcs615-gpucc.yaml
new file mode 100644 (file)
index 0000000..5f7d83d
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/qcom,qcs615-gpucc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Graphics Clock & Reset Controller on QCS615
+
+maintainers:
+  - Taniya Das <quic_tdas@quicinc.com>
+
+description: |
+  Qualcomm graphics clock control module provides clocks, resets and power
+  domains on QCS615 Qualcomm SoCs.
+
+  See also: include/dt-bindings/clock/qcom,qcs615-gpucc.h
+
+properties:
+  compatible:
+    const: qcom,qcs615-gpucc
+
+  clocks:
+    items:
+      - description: Board XO source
+      - description: GPLL0 main branch source
+      - description: GPLL0 GPUCC div branch source
+
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,rpmh.h>
+    #include <dt-bindings/clock/qcom,qcs615-gcc.h>
+
+    clock-controller@5090000 {
+      compatible = "qcom,qcs615-gpucc";
+      reg = <0x5090000 0x9000>;
+      clocks = <&rpmhcc RPMH_CXO_CLK>,
+               <&gcc GPLL0>,
+               <&gcc GCC_GPU_GPLL0_DIV_CLK_SRC>;
+
+      #clock-cells = <1>;
+      #reset-cells = <1>;
+      #power-domain-cells = <1>;
+    };
+...
diff --git a/Bindings/clock/qcom,qcs615-videocc.yaml b/Bindings/clock/qcom,qcs615-videocc.yaml
new file mode 100644 (file)
index 0000000..f51b69d
--- /dev/null
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/qcom,qcs615-videocc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Video Clock & Reset Controller on QCS615
+
+maintainers:
+  - Taniya Das <quic_tdas@quicinc.com>
+
+description: |
+  Qualcomm video clock control module provides clocks, resets and power
+  domains on QCS615 Qualcomm SoCs.
+
+  See also: include/dt-bindings/clock/qcom,qcs615-videocc.h
+
+properties:
+  compatible:
+    const: qcom,qcs615-videocc
+
+  clocks:
+    items:
+      - description: Board XO source
+      - description: Sleep clock source
+
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,rpmh.h>
+    #include <dt-bindings/clock/qcom,qcs615-gcc.h>
+
+    clock-controller@ab00000 {
+      compatible = "qcom,qcs615-videocc";
+      reg = <0xab00000 0x10000>;
+      clocks = <&rpmhcc RPMH_CXO_CLK>,
+               <&sleep_clk>;
+
+      #clock-cells = <1>;
+      #reset-cells = <1>;
+      #power-domain-cells = <1>;
+    };
+...
index fd21df0e76976e6fecd32db5ee4a5eeec2757083..3038307ff2c5c4baf2c72f1a1c471bae63693eac 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm ECPRI Specification V2.0 Common Public Radio Interface clock control
   module which supports the clocks, resets on QDU1000 and QRU1000
 
-  See also:: include/dt-bindings/clock/qcom,qdu1000-ecpricc.h
+  See also: include/dt-bindings/clock/qcom,qdu1000-ecpricc.h
 
 properties:
   compatible:
index 86befef0265061b849f6633ccf82b0f438b324b2..2c5a9ef4fe4d3b620cd845615a392000c0269dfc 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module which supports the clocks, resets and
   power domains on QDU1000 and QRU1000
 
-  See also:: include/dt-bindings/clock/qcom,qdu1000-gcc.h
+  See also: include/dt-bindings/clock/qcom,qdu1000-gcc.h
 
 properties:
   compatible:
index dcb872b9cf3e01f87d4fc546311eb758ee63af9a..a4414ba0b287b23e69a913d10befa5d7368ff08b 100644 (file)
@@ -17,6 +17,7 @@ description: |
 properties:
   compatible:
     enum:
+      - qcom,milos-rpmh-clk
       - qcom,qcs615-rpmh-clk
       - qcom,qdu1000-rpmh-clk
       - qcom,sa8775p-rpmh-clk
index 81623f59d11d73839e5c551411a52427e2f28415..f42ccb6627a387ee0d0238ebd1fcd1cdf64c5676 100644 (file)
@@ -17,12 +17,14 @@ description: |
   See also:
     include/dt-bindings/clock/qcom,qcs8300-camcc.h
     include/dt-bindings/clock/qcom,sa8775p-camcc.h
+    include/dt-bindings/clock/qcom,sc8280xp-camcc.h
 
 properties:
   compatible:
     enum:
       - qcom,qcs8300-camcc
       - qcom,sa8775p-camcc
+      - qcom,sc8280xp-camcc
 
   clocks:
     items:
@@ -35,6 +37,11 @@ properties:
     maxItems: 1
     description: MMCX power domain
 
+  required-opps:
+    description:
+      OPP node describing required MMCX performance point.
+    maxItems: 1
+
 required:
   - compatible
   - clocks
@@ -43,6 +50,14 @@ required:
 
 allOf:
   - $ref: qcom,gcc.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: qcom,sc8280xp-camcc
+    then:
+      required:
+        - required-opps
 
 unevaluatedProperties: false
 
index addbd323fa6d7650f57866650bda655f3077bd8d..c641aac8c451e4ab69d3d6933636498421690eab 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and
   power domains on sa8775p.
 
-  See also:: include/dt-bindings/clock/qcom,sa8775p-gcc.h
+  See also: include/dt-bindings/clock/qcom,sa8775p-gcc.h
 
 properties:
   compatible:
index c7fe6400ea13b1bd53cac591e0da06b0715d0ddc..98ee9be84794a35f773a4aa92a9a028e4762ef70 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm camera clock control module provides the clocks, resets and power
   domains on SC7180.
 
-  See also:: include/dt-bindings/clock/qcom,camcc-sc7180.h
+  See also: include/dt-bindings/clock/qcom,camcc-sc7180.h
 
 allOf:
   - $ref: qcom,gcc.yaml#
index 0d8ea44d8141a61bf2e7fe6da06f4b56aed794f7..f147d06ad2ef6fcc418d4d9efb6f37ab79526f17 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm display clock control module provides the clocks, resets and power
   domains on SC7180.
 
-  See also:: include/dt-bindings/clock/qcom,dispcc-sc7180.h
+  See also: include/dt-bindings/clock/qcom,dispcc-sc7180.h
 
 properties:
   compatible:
index fdfb389083c10cfa12ba97101356556ed838c82f..ad360debef7cd447f656be3b568fd851f785c243 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm LPASS core clock control module provides the clocks and power
   domains on SC7180.
 
-  See also:: include/dt-bindings/clock/qcom,lpasscorecc-sc7180.h
+  See also: include/dt-bindings/clock/qcom,lpasscorecc-sc7180.h
 
 properties:
   compatible:
index dcef8de3a905ad7d2668fb847dc3560c697d6ee0..2f28be58e82e09dcc631fa06d48aab6eb132ee17 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm camera clock control module provides the clocks, resets and
   power domains on SC7280.
 
-  See also:: include/dt-bindings/clock/qcom,camcc-sc7280.h
+  See also: include/dt-bindings/clock/qcom,camcc-sc7280.h
 
 allOf:
   - $ref: qcom,gcc.yaml#
index 23177661be4030b8f540e0476c4d7ff144aa104e..95b1e4f48c4f3eb41498264ee24940468ed4285b 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm display clock control module provides the clocks, resets and power
   domains on SC7280.
 
-  See also:: include/dt-bindings/clock/qcom,dispcc-sc7280.h
+  See also: include/dt-bindings/clock/qcom,dispcc-sc7280.h
 
 properties:
   compatible:
index f44c5c130d2d8a1704a01d1ca2d6d984fcc759a3..a90961d8656ce6bb7928d034a026d8b53c98b3d2 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm LPASS core clock control module provides the clocks and power
   domains on SC7280.
 
-  See also:: include/dt-bindings/clock/qcom,lpass-sc7280.h
+  See also: include/dt-bindings/clock/qcom,lpass-sc7280.h
 
 properties:
   compatible:
diff --git a/Bindings/clock/qcom,sc8180x-camcc.yaml b/Bindings/clock/qcom,sc8180x-camcc.yaml
new file mode 100644 (file)
index 0000000..477ee68
--- /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/clock/qcom,sc8180x-camcc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Camera Clock & Reset Controller on SC8180X
+
+maintainers:
+  - Satya Priya Kakitapalli <quic_skakitap@quicinc.com>
+
+description: |
+  Qualcomm camera clock control module provides the clocks, resets and
+  power domains on SC8180X.
+
+  See also: include/dt-bindings/clock/qcom,sc8180x-camcc.h
+
+properties:
+  compatible:
+    const: qcom,sc8180x-camcc
+
+  clocks:
+    items:
+      - description: Camera AHB clock from GCC
+      - description: Board XO source
+      - description: Sleep clock source
+
+  power-domains:
+    maxItems: 1
+    description:
+      A phandle and PM domain specifier for the MMCX power domain.
+
+  required-opps:
+    maxItems: 1
+    description:
+      A phandle to an OPP node describing required MMCX performance point.
+
+required:
+  - compatible
+  - clocks
+  - power-domains
+  - required-opps
+
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,gcc-sc8180x.h>
+    #include <dt-bindings/clock/qcom,rpmh.h>
+    #include <dt-bindings/power/qcom-rpmpd.h>
+    clock-controller@ad00000 {
+      compatible = "qcom,sc8180x-camcc";
+      reg = <0x0ad00000 0x20000>;
+      clocks = <&gcc GCC_CAMERA_AHB_CLK>,
+               <&rpmhcc RPMH_CXO_CLK>,
+               <&sleep_clk>;
+      power-domains = <&rpmhpd SC8180X_MMCX>;
+      required-opps = <&rpmhpd_opp_low_svs>;
+
+      #clock-cells = <1>;
+      #reset-cells = <1>;
+      #power-domain-cells = <1>;
+    };
+...
index fa95c3a1ba3aa31589658d99cf870e44db034d08..6214e41eec1fcc3d7eba3f04bad2cfcbd00d9511 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm camera clock control module provides the clocks, resets and power
   domains on SDM845.
 
-  See also:: include/dt-bindings/clock/qcom,camcc-sm845.h
+  See also: include/dt-bindings/clock/qcom,camcc-sm845.h
 
 allOf:
   - $ref: qcom,gcc.yaml#
index 220f4004f7fdcda4e3e14cf3f98b7e2b685a9f58..854c391c83076a9e7ab67bbf0bec6fd9797133be 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm display clock control module provides the clocks, resets and power
   domains on SDM845.
 
-  See also:: include/dt-bindings/clock/qcom,dispcc-sdm845.h
+  See also: include/dt-bindings/clock/qcom,dispcc-sdm845.h
 
 properties:
   compatible:
index a96fd837c70ae1b1c54fc7de7ad83be21cdb2101..f9feb7049b214ca83e3e81ac87a490948c753349 100644 (file)
@@ -12,7 +12,7 @@ maintainers:
 description: |
   Qualcomm SDM845 LPASS (Low Power Audio SubSystem) Clock Controller.
 
-  See also:: include/dt-bindings/clock/qcom,lpass-sdm845.h
+  See also: include/dt-bindings/clock/qcom,lpass-sdm845.h
 
 properties:
   compatible:
index 567182aba30060ed018d512a4b0ae0aca0ee4ed2..29a0b29bcb81616886330846da526db38437a254 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SDX75
 
-  See also:: include/dt-bindings/clock/qcom,sdx75-gcc.h
+  See also: include/dt-bindings/clock/qcom,sdx75-gcc.h
 
 properties:
   compatible:
index f54ce865880dedfb4bb7c38cbd39a6f5690cda31..70f025b26736bd34c0cef605bb0f9123856cf097 100644 (file)
@@ -14,38 +14,26 @@ description: |
   Qualcomm camera clock control module provides the clocks, resets and power
   domains on SM4450
 
-  See also:: include/dt-bindings/clock/qcom,sm4450-camcc.h
+  See also: include/dt-bindings/clock/qcom,sm4450-camcc.h
 
 properties:
   compatible:
     const: qcom,sm4450-camcc
 
-  reg:
-    maxItems: 1
-
   clocks:
     items:
       - description: Board XO source
       - description: Camera AHB clock source from GCC
 
-  '#clock-cells':
-    const: 1
-
-  '#reset-cells':
-    const: 1
-
-  '#power-domain-cells':
-    const: 1
-
 required:
   - compatible
-  - reg
   - clocks
-  - '#clock-cells'
-  - '#reset-cells'
   - '#power-domain-cells'
 
-additionalProperties: false
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
 
 examples:
   - |
index 2aa05353eff17326b9f4234ac1c99dcd82a6abdb..d977788bdc8a7539b9711bb71fc3dad0e06facc0 100644 (file)
@@ -14,15 +14,12 @@ description: |
   Qualcomm display clock control module provides the clocks, resets and power
   domains on SM4450
 
-  See also:: include/dt-bindings/clock/qcom,sm4450-dispcc.h
+  See also: include/dt-bindings/clock/qcom,sm4450-dispcc.h
 
 properties:
   compatible:
     const: qcom,sm4450-dispcc
 
-  reg:
-    maxItems: 1
-
   clocks:
     items:
       - description: Board XO source
@@ -32,24 +29,15 @@ properties:
       - description: Byte clock from DSI PHY0
       - description: Pixel clock from DSI PHY0
 
-  '#clock-cells':
-    const: 1
-
-  '#reset-cells':
-    const: 1
-
-  '#power-domain-cells':
-    const: 1
-
 required:
   - compatible
-  - reg
   - clocks
-  - '#clock-cells'
-  - '#reset-cells'
   - '#power-domain-cells'
 
-additionalProperties: false
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
 
 examples:
   - |
index 0ac92d7871e12b70115a3830ce9545f0fc6b287a..9cfe859bacc939d62104fa3bcb24b175ebf82601 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM4450
 
-  See also:: include/dt-bindings/clock/qcom,sm4450-gcc.h
+  See also: include/dt-bindings/clock/qcom,sm4450-gcc.h
 
 properties:
   compatible:
index 00be36683eb5d7a64380ea8f63209196651882f1..b31424306f494bbed15af6bf4e4c1b9db9907b8d 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm display clock control module provides the clocks and power domains
   on SM6115.
 
-  See also:: include/dt-bindings/clock/qcom,sm6115-dispcc.h
+  See also: include/dt-bindings/clock/qcom,sm6115-dispcc.h
 
 properties:
   compatible:
index 4ff17a91344badaf572b15f657f0c740ea1859b7..104ba10ca5737ee1ed94fcb2df5a38bda9c86d14 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm graphics clock control module provides clocks, resets and power
   domains on Qualcomm SoCs.
 
-  See also:: include/dt-bindings/clock/qcom,sm6115-gpucc.h
+  See also: include/dt-bindings/clock/qcom,sm6115-gpucc.h
 
 properties:
   compatible:
index 10a9c96a97b6a1390736f701488311670017d911..12d6f0cdbcd8d0acacd4d096affcf664cf1bb412 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm graphics clock control module provides clocks and power domains on
   Qualcomm SoCs.
 
-  See also:: include/dt-bindings/clock/qcom,sm6125-gpucc.h
+  See also: include/dt-bindings/clock/qcom,sm6125-gpucc.h
 
 properties:
   compatible:
index c03b30f64f359abd03e61a543522c81ce542e274..e31cd4300f7db7f5dd3d71fc4a10ad6cc6537fde 100644 (file)
@@ -8,16 +8,21 @@ title: Qualcomm Camera Clock & Reset Controller on SM6350
 
 maintainers:
   - Konrad Dybcio <konradybcio@kernel.org>
+  - Taniya Das <quic_tdas@quicinc.com>
 
 description: |
   Qualcomm camera clock control module provides the clocks, resets and  power
-  domains on SM6350.
+  domains on SM6350 and QCS615 SoC.
 
-  See also:: include/dt-bindings/clock/qcom,sm6350-camcc.h
+  See also:
+    include/dt-bindings/clock/qcom,qcs615-camcc.h
+    include/dt-bindings/clock/qcom,sm6350-camcc.h
 
 properties:
   compatible:
-    const: qcom,sm6350-camcc
+    enum:
+      - qcom,qcs615-camcc
+      - qcom,sm6350-camcc
 
   clocks:
     items:
index 3cd422a645fd876b9f834a6f8389160f5aab4bf2..519ea76cb0525feab977cf3aa1b8130f432c63a9 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm display clock control module provides the clocks, resets and power
   domains on SM6375.
 
-  See also:: include/dt-bindings/clock/qcom,dispcc-sm6375.h
+  See also: include/dt-bindings/clock/qcom,dispcc-sm6375.h
 
 allOf:
   - $ref: qcom,gcc.yaml#
index de4e9066eeb835fd8215c40fed58c4b2baa28504..66dfa72fa9751e7ee6b0ea2c9358f5b8efc82799 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM6375
 
-  See also:: include/dt-bindings/clock/qcom,sm6375-gcc.h
+  See also: include/dt-bindings/clock/qcom,sm6375-gcc.h
 
 allOf:
   - $ref: qcom,gcc.yaml#
index d9dd479c17bd63956a43055e007c3a612ef5b569..3aad6b5bb1c507f68decb14e61b613bbc80cf14b 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm graphics clock control module provides clocks, resets and power
   domains on Qualcomm SoCs.
 
-  See also:: include/dt-bindings/clock/qcom,sm6375-gpucc.h
+  See also: include/dt-bindings/clock/qcom,sm6375-gpucc.h
 
 properties:
   compatible:
index 7be4b10c430cdc8a162b2981fdc023ceeb02ca77..b96091c28c5a84c3ae6778db6e888ad7e0952022 100644 (file)
@@ -15,7 +15,7 @@ description: |
   Qualcomm camera clock control module provides the clocks, resets and power
   domains on SM7150.
 
-  See also:: include/dt-bindings/clock/qcom,sm7150-camcc.h
+  See also: include/dt-bindings/clock/qcom,sm7150-camcc.h
 
 properties:
   compatible:
index b8d6e1d05ce2fd2e15db597fcdfb34798aa77f7b..13ab3359b5927a484a1647c47290219ea631f343 100644 (file)
@@ -15,7 +15,7 @@ description: |
   Qualcomm display clock control module provides the clocks, resets and power
   domains on SM7150.
 
-  See also:: include/dt-bindings/clock/qcom,sm7150-dispcc.h
+  See also: include/dt-bindings/clock/qcom,sm7150-dispcc.h
 
 properties:
   compatible:
index 4d7bbbf4ce8affb29f3bc3c825162c644f701f35..3878808f811ee2bb9afa348198847fbd00d7c9cc 100644 (file)
@@ -15,7 +15,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM7150
 
-  See also:: include/dt-bindings/clock/qcom,sm7150-gcc.h
+  See also: include/dt-bindings/clock/qcom,sm7150-gcc.h
 
 properties:
   compatible:
index 037ffc71e70e08d8e14e64fa2ac526665471e397..9f7928730386168b4f892c7a69ff2770fd0bae7e 100644 (file)
@@ -15,7 +15,7 @@ description: |
   Qualcomm video clock control module provides the clocks, resets and power
   domains on SM7150.
 
-  See also:: include/dt-bindings/clock/qcom,videocc-sm7150.h
+  See also: include/dt-bindings/clock/qcom,videocc-sm7150.h
 
 properties:
   compatible:
index 5e9f62d7866cfc816845e5cd3fc132894bffe5fd..a55e30a4975ecc77295c3186a2ddc7550a91a195 100644 (file)
@@ -13,15 +13,12 @@ description: |
   Qualcomm camera clock control module provides the clocks, resets and
   power domains on SM8150.
 
-  See also:: include/dt-bindings/clock/qcom,sm8150-camcc.h
+  See also: include/dt-bindings/clock/qcom,sm8150-camcc.h
 
 properties:
   compatible:
     const: qcom,sm8150-camcc
 
-  reg:
-    maxItems: 1
-
   clocks:
     items:
       - description: Board XO source
@@ -37,26 +34,17 @@ properties:
     description:
       A phandle to an OPP node describing required MMCX performance point.
 
-  '#clock-cells':
-    const: 1
-
-  '#reset-cells':
-    const: 1
-
-  '#power-domain-cells':
-    const: 1
-
 required:
   - compatible
-  - reg
   - clocks
   - power-domains
   - required-opps
-  - '#clock-cells'
-  - '#reset-cells'
   - '#power-domain-cells'
 
-additionalProperties: false
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
 
 examples:
   - |
index 9e79f8fec437b9aecb5103092f6ff2ad1cd42626..c1e06f39431e68a3cd2f6c2dba84be2a3c143bb1 100644 (file)
@@ -15,7 +15,6 @@ description: |
   domains on SM8450.
 
   See also:
-    include/dt-bindings/clock/qcom,sc8280xp-camcc.h
     include/dt-bindings/clock/qcom,sm8450-camcc.h
     include/dt-bindings/clock/qcom,sm8550-camcc.h
     include/dt-bindings/clock/qcom,sm8650-camcc.h
@@ -23,7 +22,6 @@ description: |
 properties:
   compatible:
     enum:
-      - qcom,sc8280xp-camcc
       - qcom,sm8450-camcc
       - qcom,sm8475-camcc
       - qcom,sm8550-camcc
@@ -37,14 +35,18 @@ properties:
       - description: Sleep clock source
 
   power-domains:
-    maxItems: 1
     description:
-      A phandle and PM domain specifier for the MMCX power domain.
+      Power domains required for the clock controller to operate
+    items:
+      - description: MMCX power domain
+      - description: MXC power domain
 
   required-opps:
-    maxItems: 1
     description:
-      A phandle to an OPP node describing required MMCX performance point.
+      OPP nodes that describe required performance points on power domains
+    items:
+      - description: MMCX performance point
+      - description: MXC performance point
 
   reg:
     maxItems: 1
@@ -82,8 +84,10 @@ examples:
                <&rpmhcc RPMH_CXO_CLK>,
                <&rpmhcc RPMH_CXO_CLK_A>,
                <&sleep_clk>;
-      power-domains = <&rpmhpd RPMHPD_MMCX>;
-      required-opps = <&rpmhpd_opp_low_svs>;
+      power-domains = <&rpmhpd RPMHPD_MMCX>,
+                      <&rpmhpd RPMHPD_MXC>;
+      required-opps = <&rpmhpd_opp_low_svs>,
+                      <&rpmhpd_opp_low_svs>;
       #clock-cells = <1>;
       #reset-cells = <1>;
       #power-domain-cells = <1>;
index e9123bbfd49109ef7196f80b2146e1a32d89ad02..bd131a1ff16583ad75272fdc4c0ba051112b1a4f 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm display clock control module provides the clocks, resets and power
   domains on SM8450.
 
-  See also:: include/dt-bindings/clock/qcom,sm8450-dispcc.h
+  See also: include/dt-bindings/clock/qcom,sm8450-dispcc.h
 
 properties:
   compatible:
index 02968632fb3af34d6b3983a6a24aa742db1d59b1..44380f6f81368339c2b264bde4d8ad9a23baca72 100644 (file)
@@ -14,6 +14,7 @@ description: |
   domains on Qualcomm SoCs.
 
   See also::
+    include/dt-bindings/clock/qcom,milos-gpucc.h
     include/dt-bindings/clock/qcom,sar2130p-gpucc.h
     include/dt-bindings/clock/qcom,sm4450-gpucc.h
     include/dt-bindings/clock/qcom,sm8450-gpucc.h
@@ -25,6 +26,7 @@ description: |
 properties:
   compatible:
     enum:
+      - qcom,milos-gpucc
       - qcom,sar2130p-gpucc
       - qcom,sm4450-gpucc
       - qcom,sm8450-gpucc
index 62714fa54db82491a7a108f7f18a253d737f8d61..fcd2727dae46711650fc8fe71221a06630040026 100644 (file)
@@ -25,6 +25,7 @@ properties:
       - qcom,sm8475-videocc
       - qcom,sm8550-videocc
       - qcom,sm8650-videocc
+      - qcom,x1e80100-videocc
 
   clocks:
     items:
@@ -32,14 +33,18 @@ properties:
       - description: Video AHB clock from GCC
 
   power-domains:
-    maxItems: 1
     description:
-      MMCX power domain.
+      Power domains required for the clock controller to operate
+    items:
+      - description: MMCX power domain
+      - description: MXC power domain
 
   required-opps:
-    maxItems: 1
     description:
-      A phandle to an OPP node describing required MMCX performance point.
+      OPP nodes that describe required performance points on power domains
+    items:
+      - description: MMCX performance point
+      - description: MXC performance point
 
 required:
   - compatible
@@ -72,8 +77,10 @@ examples:
       reg = <0x0aaf0000 0x10000>;
       clocks = <&rpmhcc RPMH_CXO_CLK>,
                <&gcc GCC_VIDEO_AHB_CLK>;
-      power-domains = <&rpmhpd RPMHPD_MMCX>;
-      required-opps = <&rpmhpd_opp_low_svs>;
+      power-domains = <&rpmhpd RPMHPD_MMCX>,
+                      <&rpmhpd RPMHPD_MXC>;
+      required-opps = <&rpmhpd_opp_low_svs>,
+                      <&rpmhpd_opp_low_svs>;
       #clock-cells = <1>;
       #reset-cells = <1>;
       #power-domain-cells = <1>;
index d83b64dcce4faa91b0fabb2e7ed3e595e59ac2ed..c4e9b9bb63f51bf2b09cc88c6a0513e4d5f128d2 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM8550
 
-  See also:: include/dt-bindings/clock/qcom,sm8550-gcc.h
+  See also: include/dt-bindings/clock/qcom,sm8550-gcc.h
 
 properties:
   compatible:
index f3afbb25e8682de83fb16acaa35448545f77ce77..2ed7d59722fc7e1e8ccc3adbef16e26fc44bf156 100644 (file)
@@ -22,6 +22,7 @@ properties:
   compatible:
     items:
       - enum:
+          - qcom,milos-tcsr
           - qcom,sar2130p-tcsr
           - qcom,sm8550-tcsr
           - qcom,sm8650-tcsr
index 976f29cce809c4a42393b202090813e2e39cf010..c7143e2abc80c209ddb455ff7263b6505cac4444 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on SM8650
 
-  See also:: include/dt-bindings/clock/qcom,sm8650-gcc.h
+  See also: include/dt-bindings/clock/qcom,sm8650-gcc.h
 
 properties:
   compatible:
index 28797d0c5d8db3527db985f324d7288b5175bd53..68dde0720c711320aa0e7c74040cf3c4422dda72 100644 (file)
@@ -13,7 +13,7 @@ description: |
   Qualcomm global clock control module provides the clocks, resets and power
   domains on X1E80100
 
-  See also:: include/dt-bindings/clock/qcom,x1e80100-gcc.h
+  See also: include/dt-bindings/clock/qcom,x1e80100-gcc.h
 
 properties:
   compatible:
diff --git a/Bindings/clock/raspberrypi,rp1-clocks.yaml b/Bindings/clock/raspberrypi,rp1-clocks.yaml
new file mode 100644 (file)
index 0000000..cc4491f
--- /dev/null
@@ -0,0 +1,58 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/raspberrypi,rp1-clocks.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: RaspberryPi RP1 clock generator
+
+maintainers:
+  - A. della Porta <andrea.porta@suse.com>
+
+description: |
+  The RP1 contains a clock generator designed as three PLLs (CORE, AUDIO,
+  VIDEO), and each PLL output can be programmed through dividers to generate
+  the clocks to drive the sub-peripherals embedded inside the chipset.
+
+  Link to datasheet:
+  https://datasheets.raspberrypi.com/rp1/rp1-peripherals.pdf
+
+properties:
+  compatible:
+    const: raspberrypi,rp1-clocks
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+    description:
+      The available clocks are defined in
+      include/dt-bindings/clock/raspberrypi,rp1-clocks.h.
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/raspberrypi,rp1-clocks.h>
+
+    rp1 {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        clocks@c040018000 {
+            compatible = "raspberrypi,rp1-clocks";
+            reg = <0xc0 0x40018000 0x0 0x10038>;
+            #clock-cells = <1>;
+            clocks = <&clk_rp1_xosc>;
+        };
+    };
index 77ce3615c65ace67888c4ee5384ecc3f5088cb6a..bc2fd3761328c1dc4964d20d9925374e84cf0262 100644 (file)
@@ -52,9 +52,16 @@ properties:
       - renesas,r8a779f0-cpg-mssr # R-Car S4-8
       - renesas,r8a779g0-cpg-mssr # R-Car V4H
       - renesas,r8a779h0-cpg-mssr # R-Car V4M
+      - renesas,r9a09g077-cpg-mssr # RZ/T2H
+      - renesas,r9a09g087-cpg-mssr # RZ/N2H
 
   reg:
-    maxItems: 1
+    minItems: 1
+    items:
+      - description: base address of register block 0
+      - description: base address of register block 1
+    description: base addresses of clock controller. Some controllers
+      (like r9a09g077) use two blocks instead of a single one.
 
   clocks:
     minItems: 1
@@ -92,16 +99,6 @@ properties:
       the datasheet.
     const: 1
 
-if:
-  not:
-    properties:
-      compatible:
-        items:
-          enum:
-            - renesas,r7s9210-cpg-mssr
-then:
-  required:
-    - '#reset-cells'
 
 required:
   - compatible
@@ -111,6 +108,36 @@ required:
   - '#clock-cells'
   - '#power-domain-cells'
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,r9a09g077-cpg-mssr
+              - renesas,r9a09g087-cpg-mssr
+    then:
+      properties:
+        reg:
+          minItems: 2
+        clock-names:
+          items:
+            - const: extal
+    else:
+      properties:
+        reg:
+          maxItems: 1
+  - if:
+      not:
+        properties:
+          compatible:
+            items:
+              enum:
+                - renesas,r7s9210-cpg-mssr
+    then:
+      required:
+        - '#reset-cells'
+
 additionalProperties: false
 
 examples:
index 0440f23da0591d3e47b3d207e5664fcee8cac13a..8c18616e5c4d97280174cb1b7d86e46d1afc3979 100644 (file)
@@ -57,8 +57,7 @@ properties:
       can be power-managed through Module Standby should refer to the CPG device
       node in their "power-domains" property, as documented by the generic PM
       Domain bindings in Documentation/devicetree/bindings/power/power-domain.yaml.
-      The power domain specifiers defined in <dt-bindings/clock/r9a0*-cpg.h> could
-      be used to reference individual CPG power domains.
+    const: 0
 
   '#reset-cells':
     description:
@@ -77,21 +76,6 @@ required:
 
 additionalProperties: false
 
-allOf:
-  - if:
-      properties:
-        compatible:
-          contains:
-            const: renesas,r9a08g045-cpg
-    then:
-      properties:
-        '#power-domain-cells':
-          const: 1
-    else:
-      properties:
-        '#power-domain-cells':
-          const: 0
-
 examples:
   - |
     cpg: clock-controller@11010000 {
index 6961a68098f4309433c40b8442426bb341b1b785..72f59db73f76c70ddeb2ae263e57c36a6970ca1b 100644 (file)
@@ -32,23 +32,24 @@ description: |
 properties:
   compatible:
     enum:
-      - samsung,exynosautov920-cmu-top
       - samsung,exynosautov920-cmu-cpucl0
       - samsung,exynosautov920-cmu-cpucl1
       - samsung,exynosautov920-cmu-cpucl2
-      - samsung,exynosautov920-cmu-peric0
-      - samsung,exynosautov920-cmu-peric1
-      - samsung,exynosautov920-cmu-misc
       - samsung,exynosautov920-cmu-hsi0
       - samsung,exynosautov920-cmu-hsi1
+      - samsung,exynosautov920-cmu-hsi2
+      - samsung,exynosautov920-cmu-misc
+      - samsung,exynosautov920-cmu-peric0
+      - samsung,exynosautov920-cmu-peric1
+      - samsung,exynosautov920-cmu-top
 
   clocks:
     minItems: 1
-    maxItems: 4
+    maxItems: 5
 
   clock-names:
     minItems: 1
-    maxItems: 4
+    maxItems: 5
 
   "#clock-cells":
     const: 1
@@ -201,6 +202,30 @@ allOf:
             - const: usbdrd
             - const: mmc_card
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynosautov920-cmu-hsi2
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (38.4 MHz)
+            - description: CMU_HSI2 NOC clock (from CMU_TOP)
+            - description: CMU_HSI2 NOC UFS clock (from CMU_TOP)
+            - description: CMU_HSI2 UFS EMBD clock (from CMU_TOP)
+            - description: CMU_HSI2 ETHERNET clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: noc
+            - const: ufs
+            - const: embd
+            - const: ethernet
+
 required:
   - compatible
   - "#clock-cells"
diff --git a/Bindings/clock/ti/autoidle.txt b/Bindings/clock/ti/autoidle.txt
deleted file mode 100644 (file)
index 05645a1..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-Binding for Texas Instruments autoidle clock.
-
-This binding uses the common clock binding[1]. It assumes a register mapped
-clock which can be put to idle automatically by hardware based on the usage
-and a configuration bit setting. Autoidle clock is never an individual
-clock, it is always a derivative of some basic clock like a gate, divider,
-or fixed-factor.
-
-[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-Required properties:
-- reg : offset for the register controlling the autoidle
-- ti,autoidle-shift : bit shift of the autoidle enable bit
-- ti,invert-autoidle-bit : autoidle is enabled by setting the bit to 0
-
-Examples:
-       dpll_core_m4_ck: dpll_core_m4_ck {
-               #clock-cells = <0>;
-               compatible = "ti,divider-clock";
-               clocks = <&dpll_core_x2_ck>;
-               ti,max-div = <31>;
-               ti,autoidle-shift = <8>;
-               reg = <0x2d38>;
-               ti,index-starts-at-one;
-               ti,invert-autoidle-bit;
-       };
-
-       dpll_usb_clkdcoldo_ck: dpll_usb_clkdcoldo_ck {
-               #clock-cells = <0>;
-               compatible = "ti,fixed-factor-clock";
-               clocks = <&dpll_usb_ck>;
-               ti,clock-div = <1>;
-               ti,autoidle-shift = <8>;
-               reg = <0x01b4>;
-               ti,clock-mult = <1>;
-               ti,invert-autoidle-bit;
-       };
diff --git a/Bindings/clock/ti/fixed-factor-clock.txt b/Bindings/clock/ti/fixed-factor-clock.txt
deleted file mode 100644 (file)
index dc69477..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-Binding for TI fixed factor rate clock sources.
-
-This binding uses the common clock binding[1], and also uses the autoidle
-support from TI autoidle clock [2].
-
-[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
-[2] Documentation/devicetree/bindings/clock/ti/autoidle.txt
-
-Required properties:
-- compatible : shall be "ti,fixed-factor-clock".
-- #clock-cells : from common clock binding; shall be set to 0.
-- ti,clock-div: fixed divider.
-- ti,clock-mult: fixed multiplier.
-- clocks: parent clock.
-
-Optional properties:
-- clock-output-names : from common clock binding.
-- ti,autoidle-shift: bit shift of the autoidle enable bit for the clock,
-  see [2]
-- reg: offset for the autoidle register of this clock, see [2]
-- ti,invert-autoidle-bit: autoidle is enabled by setting the bit to 0, see [2]
-- ti,set-rate-parent: clk_set_rate is propagated to parent
-
-Example:
-       clock {
-               compatible = "ti,fixed-factor-clock";
-               clocks = <&parentclk>;
-               #clock-cells = <0>;
-               ti,clock-div = <2>;
-               ti,clock-mult = <1>;
-       };
-
-       dpll_usb_clkdcoldo_ck: dpll_usb_clkdcoldo_ck {
-               #clock-cells = <0>;
-               compatible = "ti,fixed-factor-clock";
-               clocks = <&dpll_usb_ck>;
-               ti,clock-div = <1>;
-               ti,autoidle-shift = <8>;
-               reg = <0x01b4>;
-               ti,clock-mult = <1>;
-               ti,invert-autoidle-bit;
-       };
diff --git a/Bindings/clock/ti/ti,autoidle.yaml b/Bindings/clock/ti/ti,autoidle.yaml
new file mode 100644 (file)
index 0000000..ed1bf18
--- /dev/null
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/ti/ti,autoidle.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI autoidle clock
+
+maintainers:
+  - Tero Kristo <kristo@kernel.org>
+  - Sukrut Bellary <sbellary@baylibre.com>
+
+description:
+  Some clocks in TI SoC support the autoidle feature. These properties are
+  applicable only if the clock supports autoidle feature. It assumes a register
+  mapped clock which can be put to idle automatically by hardware based on
+  usage and configuration bit setting. Autoidle clock is never an individual
+  clock, it is always a derivative of some basic clock like a gate, divider, or
+  fixed-factor.
+
+properties:
+  ti,autoidle-shift:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      bit shift of the autoidle enable bit for the clock
+    maximum: 31
+    default: 0
+
+  ti,invert-autoidle-bit:
+    type: boolean
+    description:
+      autoidle is enabled by setting the bit to 0
+
+additionalProperties: true
index 3fbe236eb565a83cc8c6df50424b9a6bfd5d1e46..6729fcb839d286536d836b7e86095b75b435a83c 100644 (file)
@@ -55,9 +55,10 @@ description: |
   is missing it is the same as supplying a zero shift.
 
   This binding can also optionally provide support to the hardware autoidle
-  feature, see [1].
+  feature.
 
-  [1] Documentation/devicetree/bindings/clock/ti/autoidle.txt
+allOf:
+  - $ref: ti,autoidle.yaml#
 
 properties:
   compatible:
@@ -97,7 +98,6 @@ properties:
     minimum: 1
     default: 1
 
-
   ti,max-div:
     $ref: /schemas/types.yaml#/definitions/uint32
     description:
@@ -116,20 +116,6 @@ properties:
       valid divisor programming must be a power of two,
       only valid if ti,dividers is not defined.
 
-  ti,autoidle-shift:
-    $ref: /schemas/types.yaml#/definitions/uint32
-    description:
-      bit shift of the autoidle enable bit for the clock,
-      see [1].
-    maximum: 31
-    default: 0
-
-  ti,invert-autoidle-bit:
-    type: boolean
-    description:
-      autoidle is enabled by setting the bit to 0,
-      see [1]
-
   ti,set-rate-parent:
     type: boolean
     description:
@@ -156,7 +142,7 @@ required:
   - clocks
   - reg
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
diff --git a/Bindings/clock/ti/ti,fixed-factor-clock.yaml b/Bindings/clock/ti/ti,fixed-factor-clock.yaml
new file mode 100644 (file)
index 0000000..7a63b09
--- /dev/null
@@ -0,0 +1,76 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/ti/ti,fixed-factor-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI fixed factor rate clock sources
+
+maintainers:
+  - Tero Kristo <kristo@kernel.org>
+  - Sukrut Bellary <sbellary@baylibre.com>
+
+description:
+  This consists of a divider and a multiplier used to generate a fixed rate
+  clock. This also uses the autoidle support from TI autoidle clock.
+
+allOf:
+  - $ref: ti,autoidle.yaml#
+
+properties:
+  compatible:
+    const: ti,fixed-factor-clock
+
+  "#clock-cells":
+    const: 0
+
+  reg:
+    maxItems: 1
+
+  ti,clock-div:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Fixed divider
+    minimum: 1
+
+  ti,clock-mult:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Fixed multiplier
+    minimum: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-output-names:
+    maxItems: 1
+
+  ti,set-rate-parent:
+    description:
+      Propagate to parent clock
+    type: boolean
+
+required:
+  - compatible
+  - clocks
+  - "#clock-cells"
+  - ti,clock-mult
+  - ti,clock-div
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    bus{
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        clock@1b4 {
+            compatible = "ti,fixed-factor-clock";
+            reg = <0x1b4>;
+            clocks = <&dpll_usb_ck>;
+            #clock-cells = <0>;
+            ti,clock-mult = <1>;
+            ti,clock-div = <1>;
+            ti,autoidle-shift = <8>;
+            ti,invert-autoidle-bit;
+        };
+    };
diff --git a/Bindings/clock/xgene.txt b/Bindings/clock/xgene.txt
deleted file mode 100644 (file)
index 8233e77..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-Device Tree Clock bindings for APM X-Gene
-
-This binding uses the common clock binding[1].
-
-[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-Required properties:
-- compatible : shall be one of the following:
-       "apm,xgene-socpll-clock" - for a X-Gene SoC PLL clock
-       "apm,xgene-pcppll-clock" - for a X-Gene PCP PLL clock
-       "apm,xgene-pmd-clock" - for a X-Gene PMD clock
-       "apm,xgene-device-clock" - for a X-Gene device clock
-       "apm,xgene-socpll-v2-clock" - for a X-Gene SoC PLL v2 clock
-       "apm,xgene-pcppll-v2-clock" - for a X-Gene PCP PLL v2 clock
-
-Required properties for SoC or PCP PLL clocks:
-- reg : shall be the physical PLL register address for the pll clock.
-- clocks : shall be the input parent clock phandle for the clock. This should
-       be the reference clock.
-- #clock-cells : shall be set to 1.
-- clock-output-names : shall be the name of the PLL referenced by derive
-  clock.
-Optional properties for PLL clocks:
-- clock-names : shall be the name of the PLL. If missing, use the device name.
-
-Required properties for PMD clocks:
-- reg : shall be the physical register address for the pmd clock.
-- clocks : shall be the input parent clock phandle for the clock.
-- #clock-cells : shall be set to 1.
-- clock-output-names : shall be the name of the clock referenced by derive
-  clock.
-Optional properties for PLL clocks:
-- clock-names : shall be the name of the clock. If missing, use the device name.
-
-Required properties for device clocks:
-- reg : shall be a list of address and length pairs describing the CSR
-         reset and/or the divider. Either may be omitted, but at least
-         one must be present.
- - reg-names : shall be a string list describing the reg resource. This
-               may include "csr-reg" and/or "div-reg". If this property
-               is not present, the reg property is assumed to describe
-               only "csr-reg".
-- clocks : shall be the input parent clock phandle for the clock.
-- #clock-cells : shall be set to 1.
-- clock-output-names : shall be the name of the device referenced.
-Optional properties for device clocks:
-- clock-names : shall be the name of the device clock. If missing, use the
-                device name.
-- csr-offset : Offset to the CSR reset register from the reset address base.
-               Default is 0.
-- csr-mask : CSR reset mask bit. Default is 0xF.
-- enable-offset : Offset to the enable register from the reset address base.
-                  Default is 0x8.
-- enable-mask : CSR enable mask bit. Default is 0xF.
-- divider-offset : Offset to the divider CSR register from the divider base.
-                   Default is 0x0.
-- divider-width : Width of the divider register. Default is 0.
-- divider-shift : Bit shift of the divider register. Default is 0.
-
-For example:
-
-       pcppll: pcppll@17000100 {
-               compatible = "apm,xgene-pcppll-clock";
-               #clock-cells = <1>;
-               clocks = <&refclk 0>;
-               clock-names = "pcppll";
-               reg = <0x0 0x17000100 0x0 0x1000>;
-               clock-output-names = "pcppll";
-               type = <0>;
-       };
-
-       pmd0clk: pmd0clk@7e200200 {
-               compatible = "apm,xgene-pmd-clock";
-               #clock-cells = <1>;
-               clocks = <&pmdpll 0>;
-               reg = <0x0 0x7e200200 0x0 0x10>;
-               clock-output-names = "pmd0clk";
-       };
-
-       socpll: socpll@17000120 {
-               compatible = "apm,xgene-socpll-clock";
-               #clock-cells = <1>;
-               clocks = <&refclk 0>;
-               clock-names = "socpll";
-               reg = <0x0 0x17000120 0x0 0x1000>;
-               clock-output-names = "socpll";
-               type = <1>;
-       };
-
-       qmlclk: qmlclk {
-               compatible = "apm,xgene-device-clock";
-               #clock-cells = <1>;
-               clocks = <&socplldiv2 0>;
-               clock-names = "qmlclk";
-               reg = <0x0 0x1703C000 0x0 0x1000>;
-               reg-name = "csr-reg";
-               clock-output-names = "qmlclk";
-       };
-
-       ethclk: ethclk {
-               compatible = "apm,xgene-device-clock";
-               #clock-cells = <1>;
-               clocks = <&socplldiv2 0>;
-               clock-names = "ethclk";
-               reg = <0x0 0x17000000 0x0 0x1000>;
-               reg-names = "div-reg";
-               divider-offset = <0x238>;
-               divider-width = <0x9>;
-               divider-shift = <0x0>;
-               clock-output-names = "ethclk";
-       };
-
-       apbclk: apbclk {
-               compatible = "apm,xgene-device-clock";
-               #clock-cells = <1>;
-               clocks = <&ahbclk 0>;
-               clock-names = "apbclk";
-               reg = <0x0 0x1F2AC000 0x0 0x1000
-                       0x0 0x1F2AC000 0x0 0x1000>;
-               reg-names = "csr-reg", "div-reg";
-               csr-offset = <0x0>;
-               csr-mask = <0x200>;
-               enable-offset = <0x8>;
-               enable-mask = <0x200>;
-               divider-offset = <0x10>;
-               divider-width = <0x2>;
-               divider-shift = <0x0>;
-               flags = <0x8>;
-               clock-output-names = "apbclk";
-       };
-
index 7dc0748444fde4767e2635802e0a1ff47c88f0a7..19010f90198a143de5951e1800db19bde5e36e09 100644 (file)
@@ -15,7 +15,9 @@ properties:
     oneOf:
       - const: atmel,at91sam9g46-aes
       - items:
-          - const: microchip,sam9x7-aes
+          - enum:
+              - microchip,sam9x7-aes
+              - microchip,sama7d65-aes
           - const: atmel,at91sam9g46-aes
 
   reg:
index d378c53314dd06d4d8f60c223452eae645f21d10..39e076b275b3942a0885ffbd161ed36794453eea 100644 (file)
@@ -15,7 +15,9 @@ properties:
     oneOf:
       - const: atmel,at91sam9g46-sha
       - items:
-          - const: microchip,sam9x7-sha
+          - enum:
+              - microchip,sam9x7-sha
+              - microchip,sama7d65-sha
           - const: atmel,at91sam9g46-sha
 
   reg:
index 6a441f79efea52be4d45bd5afd856039f01743d6..6f16008c4251c4bd1bc7bbf9d51e7deb14eb0f6f 100644 (file)
@@ -15,7 +15,9 @@ properties:
     oneOf:
       - const: atmel,at91sam9g46-tdes
       - items:
-          - const: microchip,sam9x7-tdes
+          - enum:
+              - microchip,sam9x7-tdes
+              - microchip,sama7d65-tdes
           - const: atmel,at91sam9g46-tdes
 
   reg:
index 75afa441e019e17a0ed8e76af208272f959e50ec..dcc755d2709a77cf56d05509a2a21aa5f3b447c8 100644 (file)
@@ -46,6 +46,8 @@ properties:
       - items:
           - enum:
               - fsl,imx6ul-caam
+              - fsl,imx8qm-caam
+              - fsl,imx8qxp-caam
               - fsl,sec-v5.0
           - const: fsl,sec-v4.0
       - const: fsl,sec-v4.0
@@ -77,6 +79,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  power-domains:
+    maxItems: 1
+
   fsl,sec-era:
     description: Defines the 'ERA' of the SEC device.
     $ref: /schemas/types.yaml#/definitions/uint32
@@ -106,7 +111,10 @@ patternProperties:
               - const: fsl,sec-v5.0-job-ring
               - const: fsl,sec-v4.0-job-ring
           - items:
-              - const: fsl,sec-v5.0-job-ring
+              - enum:
+                  - fsl,imx8qm-job-ring
+                  - fsl,imx8qxp-job-ring
+                  - fsl,sec-v5.0-job-ring
               - const: fsl,sec-v4.0-job-ring
           - const: fsl,sec-v4.0-job-ring
 
@@ -116,6 +124,9 @@ patternProperties:
       interrupts:
         maxItems: 1
 
+      power-domains:
+        maxItems: 1
+
       fsl,liodn:
         description:
           Specifies the LIODN to be used in conjunction with the ppid-to-liodn
@@ -125,6 +136,20 @@ patternProperties:
         $ref: /schemas/types.yaml#/definitions/uint32-array
         items:
           - maximum: 0xfff
+    allOf:
+      - if:
+          properties:
+            compatible:
+              contains:
+                enum:
+                  - fsl,imx8qm-job-ring
+                  - fsl,imx8qxp-job-ring
+        then:
+          required:
+            - power-domains
+        else:
+          properties:
+            power-domains: false
 
   '^rtic@[0-9a-f]+$':
     type: object
@@ -212,6 +237,20 @@ required:
   - reg
   - ranges
 
+if:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - fsl,imx8qm-caam
+          - fsl,imx8qxp-caam
+then:
+  required:
+    - power-domains
+else:
+  properties:
+    power-domains: false
+
 additionalProperties: false
 
 examples:
diff --git a/Bindings/crypto/omap-aes.txt b/Bindings/crypto/omap-aes.txt
deleted file mode 100644 (file)
index fd97176..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-OMAP SoC AES crypto Module
-
-Required properties:
-
-- compatible : Should contain entries for this and backward compatible
-  AES versions:
-  - "ti,omap2-aes" for OMAP2.
-  - "ti,omap3-aes" for OMAP3.
-  - "ti,omap4-aes" for OMAP4 and AM33XX.
-  Note that the OMAP2 and 3 versions are compatible (OMAP3 supports
-  more algorithms) but they are incompatible with OMAP4.
-- ti,hwmods: Name of the hwmod associated with the AES module
-- reg : Offset and length of the register set for the module
-- interrupts : the interrupt-specifier for the AES module.
-
-Optional properties:
-- dmas: DMA specifiers for tx and rx dma. See the DMA client binding,
-       Documentation/devicetree/bindings/dma/dma.txt
-- dma-names: DMA request names should include "tx" and "rx" if present.
-
-Example:
-       /* AM335x */
-       aes: aes@53500000 {
-               compatible = "ti,omap4-aes";
-               ti,hwmods = "aes";
-               reg = <0x53500000 0xa0>;
-               interrupts = <102>;
-               dmas = <&edma 6>,
-                      <&edma 5>;
-               dma-names = "tx", "rx";
-       };
diff --git a/Bindings/crypto/omap-des.txt b/Bindings/crypto/omap-des.txt
deleted file mode 100644 (file)
index e8c63bf..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-OMAP SoC DES crypto Module
-
-Required properties:
-
-- compatible : Should contain "ti,omap4-des"
-- ti,hwmods: Name of the hwmod associated with the DES module
-- reg : Offset and length of the register set for the module
-- interrupts : the interrupt-specifier for the DES module
-- clocks : A phandle to the functional clock node of the DES module
-           corresponding to each entry in clock-names
-- clock-names : Name of the functional clock, should be "fck"
-
-Optional properties:
-- dmas: DMA specifiers for tx and rx dma. See the DMA client binding,
-       Documentation/devicetree/bindings/dma/dma.txt
-       Each entry corresponds to an entry in dma-names
-- dma-names: DMA request names should include "tx" and "rx" if present
-
-Example:
-       /* DRA7xx SoC */
-       des: des@480a5000 {
-               compatible = "ti,omap4-des";
-               ti,hwmods = "des";
-               reg = <0x480a5000 0xa0>;
-               interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
-               dmas = <&sdma 117>, <&sdma 116>;
-               dma-names = "tx", "rx";
-               clocks = <&l3_iclk_div>;
-               clock-names = "fck";
-       };
diff --git a/Bindings/crypto/ti,omap2-aes.yaml b/Bindings/crypto/ti,omap2-aes.yaml
new file mode 100644 (file)
index 0000000..90e9205
--- /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/ti,omap2-aes.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: OMAP SoC AES crypto Module
+
+maintainers:
+  - Aaro Koskinen <aaro.koskinen@iki.fi>
+  - Andreas Kemnade <andreas@kemnade.info>
+  - Kevin Hilman <khilman@baylibre.com>
+  - Roger Quadros <rogerq@kernel.org>
+  - Tony Lindgren <tony@atomide.com>
+
+properties:
+  compatible:
+    enum:
+      - ti,omap2-aes
+      - ti,omap3-aes
+      - ti,omap4-aes
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  dmas:
+    maxItems: 2
+
+  dma-names:
+    items:
+      - const: tx
+      - const: rx
+
+  ti,hwmods:
+    description: Name of the hwmod associated with the AES module
+    const: aes
+    deprecated: true
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    aes@53500000 {
+        compatible = "ti,omap4-aes";
+        reg = <0x53500000 0xa0>;
+        interrupts = <102>;
+        dmas = <&edma 6>,
+               <&edma 5>;
+        dma-names = "tx", "rx";
+    };
diff --git a/Bindings/crypto/ti,omap4-des.yaml b/Bindings/crypto/ti,omap4-des.yaml
new file mode 100644 (file)
index 0000000..f02f1e1
--- /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/ti,omap4-des.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: OMAP4 DES crypto Module
+
+maintainers:
+  - Aaro Koskinen <aaro.koskinen@iki.fi>
+  - Andreas Kemnade <andreas@kemnade.info>
+  - Kevin Hilman <khilman@baylibre.com>
+  - Roger Quadros <rogerq@kernel.org>
+  - Tony Lindgren <tony@atomide.com>
+
+properties:
+  compatible:
+    const: ti,omap4-des
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  dmas:
+    maxItems: 2
+
+  dma-names:
+    items:
+      - const: tx
+      - const: rx
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: fck
+
+dependencies:
+  dmas: [ dma-names ]
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    des@480a5000 {
+        compatible = "ti,omap4-des";
+        reg = <0x480a5000 0xa0>;
+        interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&l3_iclk_div>;
+        clock-names = "fck";
+        dmas = <&sdma 117>, <&sdma 116>;
+        dma-names = "tx", "rx";
+    };
index b75c1ec686ad2b64791d2eff12980e392b1b559d..cbd18fd83e52739447613c83904f03621bb7a3f3 100644 (file)
@@ -24,9 +24,11 @@ properties:
       - allwinner,sun50i-a64-de2-mixer-0
       - allwinner,sun50i-a64-de2-mixer-1
       - allwinner,sun50i-h6-de3-mixer-0
+      - allwinner,sun50i-h616-de33-mixer-0
 
-  reg:
-    maxItems: 1
+  reg: true
+
+  reg-names: true
 
   clocks:
     items:
@@ -61,6 +63,34 @@ properties:
     required:
       - port@1
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - allwinner,sun50i-h616-de33-mixer-0
+    then:
+      properties:
+        reg:
+          description: |
+            Registers for controlling individual layers of the display
+            engine (layers), global control (top), and display blending
+            control (display). Names are from Allwinner BSP kernel.
+          maxItems: 3
+        reg-names:
+          items:
+            - const: layers
+            - const: top
+            - const: display
+      required:
+        - reg-names
+
+    else:
+      properties:
+        reg:
+          maxItems: 1
+
 required:
   - compatible
   - reg
index 6cc9045e5c6858c61d03d6918e6d292cb3a9baa2..a43c1c9d91131b63dc52f03bd95fb28603734777 100644 (file)
@@ -78,6 +78,9 @@ properties:
       If not present, the memory interface is fast enough to handle all
       possible video modes.
 
+  resets:
+    maxItems: 1
+
   port:
     $ref: /schemas/graph.yaml#/$defs/port-base
     additionalProperties: false
diff --git a/Bindings/display/fsl,dcu.txt b/Bindings/display/fsl,dcu.txt
deleted file mode 100644 (file)
index 63ec2a6..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-Device Tree bindings for Freescale DCU DRM Driver
-
-Required properties:
-- compatible:          Should be one of
-       * "fsl,ls1021a-dcu".
-       * "fsl,vf610-dcu".
-
-- reg:                 Address and length of the register set for dcu.
-- clocks:              Handle to "dcu" and "pix" clock (in the order below)
-                       This can be the same clock (e.g. LS1021a)
-                       See ../clocks/clock-bindings.txt for details.
-- clock-names:         Should be "dcu" and "pix"
-                       See ../clocks/clock-bindings.txt for details.
-- big-endian           Boolean property, LS1021A DCU registers are big-endian.
-- port                 Video port for the panel output
-
-Optional properties:
-- fsl,tcon:            The phandle to the timing controller node.
-
-Examples:
-dcu: dcu@2ce0000 {
-       compatible = "fsl,ls1021a-dcu";
-       reg = <0x0 0x2ce0000 0x0 0x10000>;
-       clocks = <&platform_clk 0>, <&platform_clk 0>;
-       clock-names = "dcu", "pix";
-       big-endian;
-       fsl,tcon = <&tcon>;
-
-       port {
-               dcu_out: endpoint {
-                       remote-endpoint = <&panel_out>;
-            };
-       };
-};
index 8e3a98aeec32dd7751658fe3659606af827571ea..2dd0411ec651612f690fd44a7b4dd09f8686a0b2 100644 (file)
@@ -71,12 +71,23 @@ properties:
     $ref: /schemas/graph.yaml#/properties/port
     description: The LCDIF output port
 
+  display:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: phandle to display panel
+    deprecated: true
+
+  display0:
+    $ref: panel/panel-common.yaml#
+    deprecated: true
+
+  lcd-supply:
+    deprecated: true
+
 required:
   - compatible
   - reg
   - clocks
   - interrupts
-  - port
 
 additionalProperties: false
 
@@ -175,6 +186,12 @@ allOf:
       properties:
         dmas: false
         dma-names: false
+        display: false
+        display0: false
+        lcd-supply: false
+
+      required:
+        - port
 
 examples:
   - |
diff --git a/Bindings/display/fsl,ls1021a-dcu.yaml b/Bindings/display/fsl,ls1021a-dcu.yaml
new file mode 100644 (file)
index 0000000..72d14ba
--- /dev/null
@@ -0,0 +1,71 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/fsl,ls1021a-dcu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale DCU DRM Driver
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - fsl,ls1021a-dcu
+      - fsl,vf610-dcu
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: dcu
+      - const: pix
+
+  big-endian: true
+
+  port:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
+    description: Video port for the panel output
+
+    properties:
+      endpoint:
+        $ref: /schemas/media/video-interfaces.yaml#
+        unevaluatedProperties: false
+
+  fsl,tcon:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: The phandle to the timing controller node.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    display-controller@2ce0000 {
+        compatible = "fsl,ls1021a-dcu";
+        reg = <0x2ce0000 0x10000>;
+        clocks = <&platform_clk 0>, <&platform_clk 0>;
+        clock-names = "dcu", "pix";
+        big-endian;
+        fsl,tcon = <&tcon>;
+
+        port {
+            endpoint {
+                remote-endpoint = <&panel_out>;
+            };
+        };
+    };
diff --git a/Bindings/display/himax,hx8357.yaml b/Bindings/display/himax,hx8357.yaml
new file mode 100644 (file)
index 0000000..34c3b89
--- /dev/null
@@ -0,0 +1,78 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/himax,hx8357.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Himax HX8357D display panel
+
+description:
+  Display panels using a Himax HX8357D controller in SPI
+  mode, such as the Adafruit 3.5" TFT for Raspberry Pi.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - adafruit,yx350hv15
+              - himax,hx8357b
+          - const: himax,hx8357
+      - items:
+          - enum:
+              - himax,hx8369a
+          - const: himax,hx8369
+
+  reg:
+    maxItems: 1
+
+  dc-gpios:
+    maxItems: 1
+    description: D/C pin
+
+  rotation:
+    enum: [0, 90, 180, 270]
+
+  backlight:
+    description:
+      phandle of the backlight device attached to the panel
+
+  im-gpios:
+    maxItems: 3
+
+  reset-gpios:
+    maxItems: 1
+
+  spi-cpha: true
+
+  spi-cpol: true
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        display@0 {
+            compatible = "adafruit,yx350hv15", "himax,hx8357";
+            reg = <0>;
+            spi-max-frequency = <32000000>;
+            dc-gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>;
+            rotation = <90>;
+            backlight = <&backlight>;
+       };
+    };
diff --git a/Bindings/display/himax,hx8357d.txt b/Bindings/display/himax,hx8357d.txt
deleted file mode 100644 (file)
index e641f66..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-Himax HX8357D display panels
-
-This binding is for display panels using a Himax HX8357D controller in SPI
-mode, such as the Adafruit 3.5" TFT for Raspberry Pi.
-
-Required properties:
-- compatible:  "adafruit,yx350hv15", "himax,hx8357d"
-- dc-gpios:    D/C pin
-- reg:         address of the panel on the SPI bus
-
-The node for this driver must be a child node of a SPI controller, hence
-all mandatory properties described in ../spi/spi-bus.txt must be specified.
-
-Optional properties:
-- rotation:    panel rotation in degrees counter clockwise (0,90,180,270)
-- backlight:   phandle of the backlight device attached to the panel
-
-Example:
-       display@0{
-               compatible = "adafruit,yx350hv15", "himax,hx8357d";
-               reg = <0>;
-               spi-max-frequency = <32000000>;
-               dc-gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>;
-               rotation = <90>;
-               backlight = <&backlight>;
-       };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-axi-performance-counter.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-axi-performance-counter.yaml
new file mode 100644 (file)
index 0000000..1d6501a
--- /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/display/imx/fsl,imx8qxp-dc-axi-performance-counter.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller AXI Performance Counter
+
+description: |
+  Performance counters are provided to allow measurement of average bandwidth
+  and latency during operation. The following features are supported:
+
+  * Manual and timer controlled measurement mode.
+
+  * Measurement counters:
+    - GLOBAL_COUNTER for overall measurement time
+    - BUSY_COUNTER for number of data bus busy cycles
+    - DATA_COUNTER for number of data transfer cycles
+    - TRANSFER_COUNTER for number of transfers
+    - ADDRBUSY_COUNTER for number of address bus busy cycles
+    - LATENCY_COUNTER for average latency
+
+  * Counter overflow detection.
+
+  * Outstanding Transfer Counters (OTC) which are used for latency measurement
+    have to run immediately after reset, but can be disabled by software when
+    there is no need for latency measurement.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-axi-performance-counter
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8-lpcg.h>
+
+    pmu@5618f000 {
+        compatible = "fsl,imx8qxp-dc-axi-performance-counter";
+        reg = <0x5618f000 0x90>;
+        clocks = <&dc0_lpcg IMX_LPCG_CLK_5>;
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-blit-engine.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-blit-engine.yaml
new file mode 100644 (file)
index 0000000..45db6da
--- /dev/null
@@ -0,0 +1,204 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-blit-engine.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Blit Engine
+
+description: |
+  A blit operation (block based image transfer) reads up to 3 source images
+  from memory and computes one destination image from it, which is written
+  back to memory. The following basic operations are supported:
+
+  * Buffer Fill
+    Fills a buffer with constant color
+
+  * Buffer Copy
+    Copies one source to a destination buffer.
+
+  * Image Blend
+    Combines two source images by a blending equation and writes result to
+    destination (which can be one of the sources).
+
+  * Image Rop2/3
+    Combines up to three source images by a logical equation (raster operation)
+    and writes result to destination (which can be one of the sources).
+
+  * Image Flip
+    Mirrors the source image in horizontal and/or vertical direction.
+
+  * Format Convert
+    Convert between the supported color and buffer formats.
+
+  * Color Transform
+    Modify colors by linear or non-linear transformations.
+
+  * Image Scale
+    Changes size of the source image.
+
+  * Image Rotate
+    Rotates the source image by any angle.
+
+  * Image Filter
+    Performs an FIR filter operation on the source image.
+
+  * Image Warp
+    Performs a re-sampling of the source image with any pattern. The sample
+    point positions are read from a compressed coordinate buffer.
+
+  * Buffer Pack
+    Writes an image with color components stored in up to three different
+    buffers (planar formats) into a single buffer (packed format).
+
+  * Chroma Resample
+    Converts between different YUV formats that differ in chroma sampling rate
+    (4:4:4, 4:2:2, 4:2:0).
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-blit-engine
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  ranges: true
+
+patternProperties:
+  "^blitblend@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-blitblend
+
+  "^clut@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-clut
+
+  "^fetchdecode@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-fetchdecode
+
+  "^fetcheco@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-fetcheco
+
+  "^fetchwarp@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-fetchwarp
+
+  "^filter@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-filter
+
+  "^hscaler@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-hscaler
+
+  "^matrix@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-matrix
+
+  "^rop@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-rop
+
+  "^store@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-store
+
+  "^vscaler@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-vscaler
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - "#address-cells"
+  - "#size-cells"
+  - ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    blit-engine@56180820 {
+        compatible = "fsl,imx8qxp-dc-blit-engine";
+        reg = <0x56180820 0x13c>, <0x56181000 0x3400>;
+        reg-names = "pec", "cfg";
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges;
+
+        fetchdecode@56180820 {
+            compatible = "fsl,imx8qxp-dc-fetchdecode";
+            reg = <0x56180820 0x10>, <0x56181000 0x404>;
+            reg-names = "pec", "cfg";
+        };
+
+        store@56180940 {
+            compatible = "fsl,imx8qxp-dc-store";
+            reg = <0x56180940 0x1c>, <0x56184000 0x5c>;
+            reg-names = "pec", "cfg";
+            interrupt-parent = <&dc0_intc>;
+            interrupts = <0>, <1>, <2>;
+            interrupt-names = "shdload", "framecomplete", "seqcomplete";
+        };
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-blitblend.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-blitblend.yaml
new file mode 100644 (file)
index 0000000..095e659
--- /dev/null
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-blitblend.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Blit Blend Unit
+
+description:
+  Combines two input frames to a single output frame, all frames having the
+  same dimension.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-blitblend
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+additionalProperties: false
+
+examples:
+  - |
+    blitblend@56180920 {
+        compatible = "fsl,imx8qxp-dc-blitblend";
+        reg = <0x56180920 0x10>, <0x56183c00 0x3c>;
+        reg-names = "pec", "cfg";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-clut.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-clut.yaml
new file mode 100644 (file)
index 0000000..21d42aa
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-clut.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Color Lookup Table
+
+description: |
+  The unit implements 3 look-up tables with 256 x 10 bit entries each. These
+  can be used for different kinds of applications. From 10-bit input values
+  only upper 8 bits are used.
+
+  The unit supports color lookup, index lookup, dithering and alpha masking.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-clut
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+additionalProperties: false
+
+examples:
+  - |
+    clut@56180880 {
+        compatible = "fsl,imx8qxp-dc-clut";
+        reg = <0x56180880 0x10>, <0x56182400 0x404>;
+        reg-names = "pec", "cfg";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-command-sequencer.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-command-sequencer.yaml
new file mode 100644 (file)
index 0000000..27118f4
--- /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/display/imx/fsl,imx8qxp-dc-command-sequencer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Command Sequencer
+
+description: |
+  The Command Sequencer is designed to autonomously process command lists.
+  By that it can load setups into the DC configuration and synchronize to
+  hardware events.  This releases a system's CPU from workload, because it
+  does not need to wait for certain events.  Also it simplifies SW architecture,
+  because no interrupt handlers are required.  Setups are read via AXI bus,
+  while write access to configuration registers occurs directly via an internal
+  bus.  This saves bandwidth for the AXI interconnect and improves the system
+  architecture in terms of safety aspects.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-command-sequencer
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 5
+
+  interrupt-names:
+    items:
+      - const: error
+      - const: sw0
+      - const: sw1
+      - const: sw2
+      - const: sw3
+
+  sram:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: phandle pointing to the mmio-sram device node
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+  - interrupt-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8-lpcg.h>
+
+    command-sequencer@56180400 {
+        compatible = "fsl,imx8qxp-dc-command-sequencer";
+        reg = <0x56180400 0x1a4>;
+        clocks = <&dc0_lpcg IMX_LPCG_CLK_5>;
+        interrupt-parent = <&dc0_intc>;
+        interrupts = <36>, <37>, <38>, <39>, <40>;
+        interrupt-names = "error", "sw0", "sw1", "sw2", "sw3";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-constframe.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-constframe.yaml
new file mode 100644 (file)
index 0000000..94f6785
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-constframe.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Constant Frame
+
+description: |
+  The Constant Frame unit is used instead of a Fetch unit where generation of
+  constant color frames only is sufficient. This is the case for the background
+  planes of content and safety streams in a Display Controller.
+
+  The color can be setup to any RGBA value.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-constframe
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+additionalProperties: false
+
+examples:
+  - |
+    constframe@56180960 {
+        compatible = "fsl,imx8qxp-dc-constframe";
+        reg = <0x56180960 0xc>, <0x56184400 0x20>;
+        reg-names = "pec", "cfg";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-display-engine.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-display-engine.yaml
new file mode 100644 (file)
index 0000000..91f3bb7
--- /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/display/imx/fsl,imx8qxp-dc-display-engine.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Display Engine
+
+description:
+  All Processing Units that operate in a display clock domain. Pixel pipeline
+  is driven by a video timing and cannot be stalled. Implements all display
+  specific processing.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-display-engine
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: top
+      - const: cfg
+
+  resets:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 3
+
+  interrupt-names:
+    items:
+      - const: shdload
+      - const: framecomplete
+      - const: seqcomplete
+
+  power-domains:
+    maxItems: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  ranges: true
+
+patternProperties:
+  "^dither@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-dither
+
+  "^framegen@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-framegen
+
+  "^gammacor@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-gammacor
+
+  "^matrix@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-matrix
+
+  "^signature@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-signature
+
+  "^tcon@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-tcon
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - interrupt-names
+  - power-domains
+  - "#address-cells"
+  - "#size-cells"
+  - ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8-lpcg.h>
+    #include <dt-bindings/firmware/imx/rsrc.h>
+
+    display-engine@5618b400 {
+        compatible = "fsl,imx8qxp-dc-display-engine";
+        reg = <0x5618b400 0x14>, <0x5618b800 0x1c00>;
+        reg-names = "top", "cfg";
+        interrupt-parent = <&dc0_intc>;
+        interrupts = <15>, <16>, <17>;
+        interrupt-names = "shdload", "framecomplete", "seqcomplete";
+        power-domains = <&pd IMX_SC_R_DC_0_PLL_0>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges;
+
+        framegen@5618b800 {
+            compatible = "fsl,imx8qxp-dc-framegen";
+            reg = <0x5618b800 0x98>;
+            clocks = <&dc0_disp_lpcg IMX_LPCG_CLK_0>;
+            interrupt-parent = <&dc0_intc>;
+            interrupts = <18>, <19>, <20>, <21>, <41>, <42>, <43>, <44>;
+            interrupt-names = "int0", "int1", "int2", "int3",
+                              "primsync_on", "primsync_off",
+                              "secsync_on", "secsync_off";
+        };
+
+        tcon@5618c800 {
+            compatible = "fsl,imx8qxp-dc-tcon";
+            reg = <0x5618c800 0x588>;
+
+            port {
+                dc0_disp0_dc0_pixel_combiner_ch0: endpoint {
+                    remote-endpoint = <&dc0_pixel_combiner_ch0_dc0_disp0>;
+                };
+            };
+        };
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-dither.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-dither.yaml
new file mode 100644 (file)
index 0000000..8e4468d
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-dither.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Dither Unit
+
+description: |
+  The unit can increase the physical color resolution of a display from 5, 6, 7
+  or 8 bits per RGB channel to a virtual resolution of 10 bits. The physical
+  resolution can be set individually for each channel.
+
+  The resolution is increased by mixing the two physical colors that are nearest
+  to the virtual color code in a variable ratio either by time (temporal
+  dithering) or by position (spatial dithering).
+
+  An optimized algorithm for temporal dithering minimizes noise artifacts on the
+  output image.
+
+  The dither operation can be individually enabled or disabled for each pixel
+  using the alpha input bit.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-dither
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    dither@5618c400 {
+        compatible = "fsl,imx8qxp-dc-dither";
+        reg = <0x5618c400 0x14>;
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-extdst.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-extdst.yaml
new file mode 100644 (file)
index 0000000..dfc2d4f
--- /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/imx/fsl,imx8qxp-dc-extdst.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller External Destination Interface
+
+description: |
+  The External Destination unit is the interface between the internal pixel
+  processing pipeline of the Pixel Engine, which is 30-bit RGB plus 8-bit Alpha,
+  and a Display Engine.
+
+  It comprises the following built-in Gamma apply function.
+
+  +------X-----------------------+
+  |      |          ExtDst Unit  |
+  |      V                       |
+  |  +-------+                   |
+  |  | Gamma |                   |
+  |  +-------+                   |
+  |      |                       |
+  |      V                       +
+  +------X-----------------------+
+
+  The output format is 24-bit RGB plus 1-bit Alpha. Conversion from 10 to 8
+  bits is done by LSBit truncation.  Alpha output bit is 1 for input 255, 0
+  otherwise.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-extdst
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+  interrupts:
+    maxItems: 3
+
+  interrupt-names:
+    items:
+      - const: shdload
+      - const: framecomplete
+      - const: seqcomplete
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - interrupt-names
+
+additionalProperties: false
+
+examples:
+  - |
+    extdst@56180980 {
+        compatible = "fsl,imx8qxp-dc-extdst";
+        reg = <0x56180980 0x1c>, <0x56184800 0x28>;
+        reg-names = "pec", "cfg";
+        interrupt-parent = <&dc0_intc>;
+        interrupts = <3>, <4>, <5>;
+        interrupt-names = "shdload", "framecomplete", "seqcomplete";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-fetchunit.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-fetchunit.yaml
new file mode 100644 (file)
index 0000000..97fb6a4
--- /dev/null
@@ -0,0 +1,141 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-fetchunit.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Fetch Unit
+
+description: |
+  The Fetch Unit is the interface between the AXI bus for source buffer access
+  and the internal pixel processing pipeline, which is 30-bit RGB plus 8-bit
+  Alpha.
+
+  It is used to generate foreground planes in Display Controllers and source
+  planes in Blit Engines, and comprises the following built-in functions to
+  convert a wide range of frame buffer types.
+
+  +---------X-----------------------------------------+
+  |         |                           Fetch Unit    |
+  |         V                                         |
+  |    +---------+                                    |
+  |    |         |                                    |
+  |    | Decode  | Decompression [Decode]             |
+  |    |         |                                    |
+  |    +---------+                                    |
+  |         |                                         |
+  |         V                                         |
+  |    +---------+                                    |
+  |    | Clip &  | Clip Window [All]                  |
+  |    | Overlay | Plane composition [Layer, Warp]    |
+  |    |         |                                    |
+  |    +---------+                                    |
+  |         |                                         |
+  |         V                                         |
+  |    +---------+                                    |
+  |    | Re-     | Flip/Rotate/Repl./Drop [All]       |
+  X--> | sample  | Perspective/Affine warping [Persp] |
+  | |  |         | Arbitrary warping [Warp, Persp]    |
+  | |  +---------+                                    |
+  | |       |                                         |
+  | |       V                                         |
+  | |  +---------+                                    |
+  | |  |         |                                    |
+  | |  | Palette | Color Palette [Layer, Decode]      |
+  | |  |         |                                    |
+  | |  +---------+                                    |
+  | |       |                                         |
+  | |       V                                         |
+  | |  +---------+                                    |
+  | |  | Extract | Raw to RGBA/YUV [All]              |
+  | |  | &       | Bit width expansion [All]          |
+  | |  | Expand  |                                    |
+  | |  +---------+                                    |
+  | |       |                                         |
+  | |       V                                         |
+  | |  +---------+                                    |
+  | |  |         | Planar to packed                   |
+  | |->| Combine | [Decode, Warp, Persp]              |
+  | |  |         |                                    |
+  | |  +---------+                                    |
+  | |       |                                         |
+  | |       V                                         |
+  | |  +---------+                                    |
+  | |  |         | YUV422 to YUV444                   |
+  | |  | Chroma  | [Decode, Persp]                    |
+  | |  |         |                                    |
+  | |  +---------+                                    |
+  | |       |                                         |
+  | |       V                                         |
+  | |  +---------+                                    |
+  | |  |         | YUV to RGB                         |
+  | |  | Color   | [Warp, Persp, Decode, Layer]       |
+  | |  |         |                                    |
+  | |  +---------+                                    |
+  | |       |                                         |
+  | |       V                                         |
+  | |  +---------+                                    |
+  | |  |         | Gamma removal                      |
+  | |  | Gamma   | [Warp, Persp, Decode, Layer]       |
+  | |  |         |                                    |
+  | |  +---------+                                    |
+  | |       |                                         |
+  | |       V                                         |
+  | |  +---------+                                    |
+  | |  |         | Alpla multiply, RGB pre-multiply   |
+  |  ->| Multiply| [Warp, Persp, Decode, Layer]       |
+  |    |         |                                    |
+  |     ---------                                     |
+  |         |                                         |
+  |         V                                         |
+  |    +---------+                                    |
+  |    |         | Bilinear filter                    |
+  |    | Filter  | [Warp, Persp]                      |
+  |    |         |                                    |
+  |    +---------+                                    |
+  |         |                                         |
+  |         V                                         |
+  +---------X-----------------------------------------+
+
+  Note that different derivatives of the Fetch Unit exist. Each implements a
+  specific subset only of the pipeline stages shown above. Restrictions for the
+  units are specified in [square brackets].
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - fsl,imx8qxp-dc-fetchdecode
+      - fsl,imx8qxp-dc-fetcheco
+      - fsl,imx8qxp-dc-fetchlayer
+      - fsl,imx8qxp-dc-fetchwarp
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+  fsl,prg:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Optional Prefetch Resolve Gasket associated with the Fetch Unit.
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+additionalProperties: false
+
+examples:
+  - |
+    fetchlayer@56180ac0 {
+        compatible = "fsl,imx8qxp-dc-fetchlayer";
+        reg = <0x56180ac0 0xc>, <0x56188400 0x404>;
+        reg-names = "pec", "cfg";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-filter.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-filter.yaml
new file mode 100644 (file)
index 0000000..5c54d51
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-filter.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Filter Unit
+
+description: |
+  5x5 FIR filter with 25 programmable coefficients.
+
+  Typical applications are image blurring, sharpening or support for edge
+  detection algorithms.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-filter
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+additionalProperties: false
+
+examples:
+  - |
+    filter@56180900 {
+        compatible = "fsl,imx8qxp-dc-filter";
+        reg = <0x56180900 0x10>, <0x56183800 0x30>;
+        reg-names = "pec", "cfg";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-framegen.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-framegen.yaml
new file mode 100644 (file)
index 0000000..9d1dc3a
--- /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/display/imx/fsl,imx8qxp-dc-framegen.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Frame Generator
+
+description:
+  The Frame Generator (FrameGen) module generates a programmable video timing
+  and optionally allows to synchronize the generated video timing to external
+  synchronization signals.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-framegen
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 8
+
+  interrupt-names:
+    items:
+      - const: int0
+      - const: int1
+      - const: int2
+      - const: int3
+      - const: primsync_on
+      - const: primsync_off
+      - const: secsync_on
+      - const: secsync_off
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+  - interrupt-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8-lpcg.h>
+    #include <dt-bindings/firmware/imx/rsrc.h>
+
+    framegen@5618b800 {
+        compatible = "fsl,imx8qxp-dc-framegen";
+        reg = <0x5618b800 0x98>;
+        clocks = <&dc0_disp_lpcg IMX_LPCG_CLK_0>;
+        interrupt-parent = <&dc0_intc>;
+        interrupts = <18>, <19>, <20>, <21>, <41>, <42>, <43>, <44>;
+        interrupt-names = "int0", "int1", "int2", "int3",
+                          "primsync_on", "primsync_off",
+                          "secsync_on", "secsync_off";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-gammacor.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-gammacor.yaml
new file mode 100644 (file)
index 0000000..25ad857
--- /dev/null
@@ -0,0 +1,32 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-gammacor.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Gamma Correction Unit
+
+description: The unit supports non-linear color transformation.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-gammacor
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    gammacor@5618c000 {
+        compatible = "fsl,imx8qxp-dc-gammacor";
+        reg = <0x5618c000 0x20>;
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-layerblend.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-layerblend.yaml
new file mode 100644 (file)
index 0000000..2a6ab8a
--- /dev/null
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-layerblend.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Layer Blend Unit
+
+description: Combines two input frames to a single output frame.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-layerblend
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+additionalProperties: false
+
+examples:
+  - |
+    layerblend@56180ba0 {
+        compatible = "fsl,imx8qxp-dc-layerblend";
+        reg = <0x56180ba0 0x10>, <0x5618a400 0x20>;
+        reg-names = "pec", "cfg";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-matrix.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-matrix.yaml
new file mode 100644 (file)
index 0000000..d773389
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-matrix.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Color Matrix
+
+description:
+  The unit supports linear color transformation, alpha pre-multiply and
+  alpha masking.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-matrix
+
+  reg:
+    minItems: 1
+    maxItems: 2
+
+  reg-names:
+    oneOf:
+      - const: cfg      # matrix in display engine
+      - items:          # matrix in pixel engine
+          - const: pec
+          - const: cfg
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+additionalProperties: false
+
+examples:
+  - |
+    matrix@5618bc00 {
+        compatible = "fsl,imx8qxp-dc-matrix";
+        reg = <0x5618bc00 0x3c>;
+        reg-names = "cfg";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-pixel-engine.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-pixel-engine.yaml
new file mode 100644 (file)
index 0000000..633443a
--- /dev/null
@@ -0,0 +1,250 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-pixel-engine.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Pixel Engine
+
+description:
+  All Processing Units that operate in the AXI bus clock domain. Pixel
+  pipelines have the ability to stall when a destination is busy. Implements
+  all communication to memory resources and most of the image processing
+  functions. Interconnection of Processing Units is re-configurable.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-pixel-engine
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  ranges: true
+
+patternProperties:
+  "^blit-engine@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-blit-engine
+
+  "^constframe@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-constframe
+
+  "^extdst@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-extdst
+
+  "^fetchdecode@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-fetchdecode
+
+  "^fetcheco@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-fetcheco
+
+  "^fetchlayer@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-fetchlayer
+
+  "^fetchwarp@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-fetchwarp
+
+  "^hscaler@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-hscaler
+
+  "^layerblend@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-layerblend
+
+  "^matrix@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-matrix
+
+  "^safety@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-safety
+
+  "^vscaler@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-vscaler
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - "#address-cells"
+  - "#size-cells"
+  - ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8-lpcg.h>
+
+    pixel-engine@56180800 {
+        compatible = "fsl,imx8qxp-dc-pixel-engine";
+        reg = <0x56180800 0xac00>;
+        clocks = <&dc0_lpcg IMX_LPCG_CLK_5>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges;
+
+        constframe@56180960 {
+            compatible = "fsl,imx8qxp-dc-constframe";
+            reg = <0x56180960 0xc>, <0x56184400 0x20>;
+            reg-names = "pec", "cfg";
+        };
+
+        extdst@56180980 {
+            compatible = "fsl,imx8qxp-dc-extdst";
+            reg = <0x56180980 0x1c>, <0x56184800 0x28>;
+            reg-names = "pec", "cfg";
+            interrupt-parent = <&dc0_intc>;
+            interrupts = <3>, <4>, <5>;
+            interrupt-names = "shdload", "framecomplete", "seqcomplete";
+        };
+
+        constframe@561809a0 {
+            compatible = "fsl,imx8qxp-dc-constframe";
+            reg = <0x561809a0 0xc>, <0x56184c00 0x20>;
+            reg-names = "pec", "cfg";
+        };
+
+        extdst@561809c0 {
+            compatible = "fsl,imx8qxp-dc-extdst";
+            reg = <0x561809c0 0x1c>, <0x56185000 0x28>;
+            reg-names = "pec", "cfg";
+            interrupt-parent = <&dc0_intc>;
+            interrupts = <6>, <7>, <8>;
+            interrupt-names = "shdload", "framecomplete", "seqcomplete";
+        };
+
+        constframe@561809e0 {
+            compatible = "fsl,imx8qxp-dc-constframe";
+            reg = <0x561809e0 0xc>, <0x56185400 0x20>;
+            reg-names = "pec", "cfg";
+        };
+
+        extdst@56180a00 {
+            compatible = "fsl,imx8qxp-dc-extdst";
+            reg = <0x56180a00 0x1c>, <0x56185800 0x28>;
+            reg-names = "pec", "cfg";
+            interrupt-parent = <&dc0_intc>;
+            interrupts = <9>, <10>, <11>;
+            interrupt-names = "shdload", "framecomplete", "seqcomplete";
+        };
+
+        constframe@56180a20 {
+            compatible = "fsl,imx8qxp-dc-constframe";
+            reg = <0x56180a20 0xc>, <0x56185c00 0x20>;
+            reg-names = "pec", "cfg";
+        };
+
+        extdst@56180a40 {
+            compatible = "fsl,imx8qxp-dc-extdst";
+            reg = <0x56180a40 0x1c>, <0x56186000 0x28>;
+            reg-names = "pec", "cfg";
+            interrupt-parent = <&dc0_intc>;
+            interrupts = <12>, <13>, <14>;
+            interrupt-names = "shdload", "framecomplete", "seqcomplete";
+        };
+
+        fetchwarp@56180a60 {
+            compatible = "fsl,imx8qxp-dc-fetchwarp";
+            reg = <0x56180a60 0x10>, <0x56186400 0x190>;
+            reg-names = "pec", "cfg";
+        };
+
+        fetchlayer@56180ac0 {
+            compatible = "fsl,imx8qxp-dc-fetchlayer";
+            reg = <0x56180ac0 0xc>, <0x56188400 0x404>;
+            reg-names = "pec", "cfg";
+        };
+
+        layerblend@56180ba0 {
+            compatible = "fsl,imx8qxp-dc-layerblend";
+            reg = <0x56180ba0 0x10>, <0x5618a400 0x20>;
+            reg-names = "pec", "cfg";
+        };
+
+        layerblend@56180bc0 {
+            compatible = "fsl,imx8qxp-dc-layerblend";
+            reg = <0x56180bc0 0x10>, <0x5618a800 0x20>;
+            reg-names = "pec", "cfg";
+        };
+
+        layerblend@56180be0 {
+            compatible = "fsl,imx8qxp-dc-layerblend";
+            reg = <0x56180be0 0x10>, <0x5618ac00 0x20>;
+            reg-names = "pec", "cfg";
+        };
+
+        layerblend@56180c00 {
+            compatible = "fsl,imx8qxp-dc-layerblend";
+            reg = <0x56180c00 0x10>, <0x5618b000 0x20>;
+            reg-names = "pec", "cfg";
+        };
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-rop.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-rop.yaml
new file mode 100644 (file)
index 0000000..7115950
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-rop.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Raster Operation Unit
+
+description: |
+  The unit can combine up to three input frames to a single output frame, all
+  having the same dimension.
+
+  The unit supports logic operations, arithmetic operations and packing.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-rop
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+additionalProperties: false
+
+examples:
+  - |
+    rop@56180860 {
+        compatible = "fsl,imx8qxp-dc-rop";
+        reg = <0x56180860 0x10>, <0x56182000 0x20>;
+        reg-names = "pec", "cfg";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-safety.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-safety.yaml
new file mode 100644 (file)
index 0000000..66c1294
--- /dev/null
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-safety.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Safety Unit
+
+description:
+  The unit allows corresponding processing units to be configured in a path
+  leading to multiple endpoints.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-safety
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    safety@56180800 {
+        compatible = "fsl,imx8qxp-dc-safety";
+        reg = <0x56180800 0x1c>;
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-scaling-engine.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-scaling-engine.yaml
new file mode 100644 (file)
index 0000000..76cbe11
--- /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/display/imx/fsl,imx8qxp-dc-scaling-engine.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Scaling Engine
+
+description: |
+  The unit can change the dimension of the input frame by nearest or linear
+  re-sampling with 1/32 sub pixel precision.
+
+  Internally it consist of two independent blocks for horizontal and vertical
+  scaling. The sequence of both operations is arbitrary.
+
+  Any frame dimensions between 1 and 16384 pixels in width and height are
+  supported, except that the vertical scaler has a frame width maximum
+  depending of the system's functional limitations.
+
+  In general all scale factors are supported inside the supported frame
+  dimensions. In range of scale factors 1/16..16 the filtered output colors
+  are LSBit precise (e.g. DC ripple free).
+
+                       +-----------+
+                       |   Line    |
+                       |  Buffer   |
+                       +-----------+
+                             ^
+                             |
+                             V
+                 |\    +-----------+
+           ------+ |   |           |
+          |      | +-->| Vertical  |----
+          |  ----+ |   |  Scaler   |    |
+          | |    |/    +-----------+    |
+          | |                           |
+          | |                           |
+          | |                           |     |\
+          |  ------------- -------------+-----+ |
+  Input --+               X                   | +--> Output
+          |  ------------- -------------+-----+ |
+          | |                           |     |/
+          | |                           |
+          | |    |\    +-----------+    |
+          |  ----+ |   |           |    |
+          |      | +-->| Horizontal|----
+           ------+ |   |  Scaler   |
+                 |/    +-----------+
+
+  The unit supports downscaling, upscaling, sub pixel translation and bob
+  de-interlacing.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - fsl,imx8qxp-dc-hscaler
+      - fsl,imx8qxp-dc-vscaler
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+additionalProperties: false
+
+examples:
+  - |
+    hscaler@561808c0 {
+        compatible = "fsl,imx8qxp-dc-hscaler";
+        reg = <0x561808c0 0x10>, <0x56183000 0x18>;
+        reg-names = "pec", "cfg";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-signature.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-signature.yaml
new file mode 100644 (file)
index 0000000..c495822
--- /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/display/imx/fsl,imx8qxp-dc-signature.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Signature Unit
+
+description: |
+  In order to control the correctness of display output, signature values can
+  be computed for each frame and compared against reference values. In case of
+  a mismatch (signature violation) a HW event can be triggered, for example a
+  SW interrupt.
+
+  This unit supports signature computation, reference check, evaluation windows,
+  alpha masking and panic modes.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-signature
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 3
+
+  interrupt-names:
+    items:
+      - const: shdload
+      - const: valid
+      - const: error
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+
+additionalProperties: false
+
+examples:
+  - |
+    signature@5618d000 {
+        compatible = "fsl,imx8qxp-dc-signature";
+        reg = <0x5618d000 0x140>;
+        interrupt-parent = <&dc0_intc>;
+        interrupts = <22>, <23>, <24>;
+        interrupt-names = "shdload", "valid", "error";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-store.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-store.yaml
new file mode 100644 (file)
index 0000000..42d1b10
--- /dev/null
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-store.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Store Unit
+
+description: |
+  The Store unit is the interface between the internal pixel processing
+  pipeline, which is 30-bit RGB plus 8-bit Alpha, and the AXI bus for
+  destination buffer access. It is used for the destination of Blit Engines.
+  It comprises a set of built-in functions to generate a wide range of buffer
+  formats. Note, that these are exactly inverse to corresponding functions in
+  the Fetch Unit.
+
+  +------X-------------------------+
+  |      |              Store Unit |
+  |      V                         |
+  |  +-------+                     |
+  |  | Gamma | Gamma apply         |
+  |  +-------+                     |
+  |      |                         |
+  |      V                         |
+  |  +-------+                     |
+  |  | Color | RGB to YUV          |
+  |  +-------+                     |
+  |      |                         |
+  |      V                         |
+  |  +-------+                     |
+  |  | Chroma| YUV444 to 422       |
+  |  +-------+                     |
+  |      |                         |
+  |      V                         |
+  |  +-------+                     |
+  |  | Reduce| Bit width reduction |
+  |  |       | dithering           |
+  |  +-------+                     |
+  |      |                         |
+  |      V                         |
+  |  +-------+                     |
+  |  | Pack  | RGBA/YUV to RAW     |
+  |  | Encode| or Compression      |
+  |  +-------+                     |
+  |      |                         |
+  |      V                         |
+  +------X-------------------------+
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-store
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: pec
+      - const: cfg
+
+  interrupts:
+    maxItems: 3
+
+  interrupt-names:
+    items:
+      - const: shdload
+      - const: framecomplete
+      - const: seqcomplete
+
+  fsl,lts:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Optional Linear Tile Store associated with the Store Unit.
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - interrupt-names
+
+additionalProperties: false
+
+examples:
+  - |
+    store@56180940 {
+        compatible = "fsl,imx8qxp-dc-store";
+        reg = <0x56180940 0x1c>, <0x56184000 0x5c>;
+        reg-names = "pec", "cfg";
+        interrupt-parent = <&dc0_intc>;
+        interrupts = <0>, <1>, <2>;
+        interrupt-names = "shdload", "framecomplete", "seqcomplete";
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc-tcon.yaml b/Bindings/display/imx/fsl,imx8qxp-dc-tcon.yaml
new file mode 100644 (file)
index 0000000..7a3b77e
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-tcon.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller Timing Controller
+
+description:
+  The TCon can generate a wide range of customized synchronization signals and
+  does the mapping of the color bits to the output.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-tcon
+
+  reg:
+    maxItems: 1
+
+  port:
+    $ref: /schemas/graph.yaml#/properties/port
+    description: video output
+
+required:
+  - compatible
+  - reg
+  - port
+
+additionalProperties: false
+
+examples:
+  - |
+    tcon@5618c800 {
+        compatible = "fsl,imx8qxp-dc-tcon";
+        reg = <0x5618c800 0x588>;
+
+        port {
+            dc0_disp0_dc0_pixel_combiner_ch0: endpoint {
+                remote-endpoint = <&dc0_pixel_combiner_ch0_dc0_disp0>;
+            };
+        };
+    };
diff --git a/Bindings/display/imx/fsl,imx8qxp-dc.yaml b/Bindings/display/imx/fsl,imx8qxp-dc.yaml
new file mode 100644 (file)
index 0000000..0a72f9f
--- /dev/null
@@ -0,0 +1,236 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller
+
+description: |
+  The Freescale i.MX8qxp Display Controller(DC) is comprised of three main
+  components that include a blit engine for 2D graphics accelerations, display
+  controller for display output processing, as well as a command sequencer.
+
+                                  Display buffers              Source buffers
+                                 (AXI read master)            (AXI read master)
+                                  | .......... |                  | | |
+      +---------------------------+------------+------------------+-+-+------+
+      | Display Controller (DC)   | .......... |                  | | |      |
+      |                           |            |                  | | |      |
+      |   @@@@@@@@@@@  +----------+------------+------------+     | | |      |
+  A   |  | Command   | |          V            V            |     | | |      |
+  X <-+->| Sequencer | |    @@@@@@@@@@@@@@@@@@@@@@@@@@@@    |     V V V      |
+  I   |  | (AXI CLK) | |   |                            |   |   @@@@@@@@@@   |
+      |   @@@@@@@@@@@  |   |       Pixel Engine         |   |  |          |  |
+      |       |        |   |         (AXI CLK)          |   |  |          |  |
+      |       V        |    @@@@@@@@@@@@@@@@@@@@@@@@@@@@    |  |          |  |
+  A   |   ***********  |       |   |            |   |       |  |   Blit   |  |
+  H <-+->| Configure | |       V   V            V   V       |  |  Engine  |  |
+  B   |  | (CFG CLK) | |    00000000000      11111111111    |  | (AXI CLK)|  |
+      |   ***********  |   |  Display  |    |  Display  |   |  |          |  |
+      |                |   |  Engine   |    |  Engine   |   |  |          |  |
+      |                |   | (Disp CLK)|    | (Disp CLK)|   |  |          |  |
+      |   @@@@@@@@@@@  |    00000000000      11111111111    |   @@@@@@@@@@   |
+  I   |  |  Common   | |         |                |         |       |        |
+  R <-+--|  Control  | |         |    Display     |         |       |        |
+  Q   |  | (AXI CLK) | |         |   Controller   |         |       |        |
+      |   @@@@@@@@@@@  +------------------------------------+       |        |
+      |                          |                |       ^         |        |
+      +--------------------------+----------------+-------+---------+--------+
+              ^                  |                |       |         |
+              |                  V                V       |         V
+       Clocks & Resets        Display          Display  Panic   Destination
+                              Output0          Output1 Control    buffer
+                                                              (AXI write master)
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  resets:
+    maxItems: 2
+
+  reset-names:
+    items:
+      - const: axi
+      - const: cfg
+
+  power-domains:
+    maxItems: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  ranges: true
+
+patternProperties:
+  "^command-sequencer@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-command-sequencer
+
+  "^display-engine@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-display-engine
+
+  "^interrupt-controller@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-intc
+
+  "^pixel-engine@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-pixel-engine
+
+  "^pmu@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: fsl,imx8qxp-dc-axi-performance-counter
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - power-domains
+  - "#address-cells"
+  - "#size-cells"
+  - ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8-lpcg.h>
+    #include <dt-bindings/firmware/imx/rsrc.h>
+
+    display-controller@56180000 {
+        compatible = "fsl,imx8qxp-dc";
+        reg = <0x56180000 0x40000>;
+        clocks = <&dc0_lpcg IMX_LPCG_CLK_4>;
+        power-domains = <&pd IMX_SC_R_DC_0>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges;
+
+        interrupt-controller@56180040 {
+            compatible = "fsl,imx8qxp-dc-intc";
+            reg = <0x56180040 0x60>;
+            clocks = <&dc0_lpcg IMX_LPCG_CLK_5>;
+            interrupt-controller;
+            interrupt-parent = <&dc0_irqsteer>;
+            #interrupt-cells = <1>;
+            interrupts = <448>, <449>, <450>,  <64>,
+                          <65>,  <66>,  <67>,  <68>,
+                          <69>,  <70>, <193>, <194>,
+                         <195>, <196>, <197>,  <72>,
+                          <73>,  <74>,  <75>,  <76>,
+                          <77>,  <78>,  <79>,  <80>,
+                          <81>, <199>, <200>, <201>,
+                         <202>, <203>, <204>, <205>,
+                         <206>, <207>, <208>,   <5>,
+                           <0>,   <1>,   <2>,   <3>,
+                           <4>,  <82>,  <83>,  <84>,
+                          <85>, <209>, <210>, <211>,
+                         <212>;
+            interrupt-names = "store9_shdload",
+                              "store9_framecomplete",
+                              "store9_seqcomplete",
+                              "extdst0_shdload",
+                              "extdst0_framecomplete",
+                              "extdst0_seqcomplete",
+                              "extdst4_shdload",
+                              "extdst4_framecomplete",
+                              "extdst4_seqcomplete",
+                              "extdst1_shdload",
+                              "extdst1_framecomplete",
+                              "extdst1_seqcomplete",
+                              "extdst5_shdload",
+                              "extdst5_framecomplete",
+                              "extdst5_seqcomplete",
+                              "disengcfg_shdload0",
+                              "disengcfg_framecomplete0",
+                              "disengcfg_seqcomplete0",
+                              "framegen0_int0",
+                              "framegen0_int1",
+                              "framegen0_int2",
+                              "framegen0_int3",
+                              "sig0_shdload",
+                              "sig0_valid",
+                              "sig0_error",
+                              "disengcfg_shdload1",
+                              "disengcfg_framecomplete1",
+                              "disengcfg_seqcomplete1",
+                              "framegen1_int0",
+                              "framegen1_int1",
+                              "framegen1_int2",
+                              "framegen1_int3",
+                              "sig1_shdload",
+                              "sig1_valid",
+                              "sig1_error",
+                              "reserved",
+                              "cmdseq_error",
+                              "comctrl_sw0",
+                              "comctrl_sw1",
+                              "comctrl_sw2",
+                              "comctrl_sw3",
+                              "framegen0_primsync_on",
+                              "framegen0_primsync_off",
+                              "framegen0_secsync_on",
+                              "framegen0_secsync_off",
+                              "framegen1_primsync_on",
+                              "framegen1_primsync_off",
+                              "framegen1_secsync_on",
+                              "framegen1_secsync_off";
+        };
+
+        pixel-engine@56180800 {
+            compatible = "fsl,imx8qxp-dc-pixel-engine";
+            reg = <0x56180800 0xac00>;
+            clocks = <&dc0_lpcg IMX_LPCG_CLK_5>;
+            #address-cells = <1>;
+            #size-cells = <1>;
+            ranges;
+        };
+
+        display-engine@5618b400 {
+            compatible = "fsl,imx8qxp-dc-display-engine";
+            reg = <0x5618b400 0x14>, <0x5618b800 0x1c00>;
+            reg-names = "top", "cfg";
+            interrupt-parent = <&dc0_intc>;
+            interrupts = <15>, <16>, <17>;
+            interrupt-names = "shdload", "framecomplete", "seqcomplete";
+            power-domains = <&pd IMX_SC_R_DC_0_PLL_0>;
+            #address-cells = <1>;
+            #size-cells = <1>;
+            ranges;
+        };
+    };
index 75ce92f4a5fdddcc49b0ac363fd8ab63752520e1..274f590807ca59bdd7a21d7be3f12e72d8362194 100644 (file)
@@ -45,6 +45,9 @@ properties:
   '#sound-dai-cells':
     const: 0
 
+  aux-bus:
+    $ref: /schemas/display/dp-aux-bus.yaml#
+
   ports:
     $ref: /schemas/graph.yaml#/properties/ports
     properties:
index 246bbb509bea18bed32e3a442d0926a24498c960..9923b065323bbab99de5079b674a0317f3074373 100644 (file)
@@ -38,6 +38,10 @@ properties:
               - qcom,sm8450-dp
               - qcom,sm8550-dp
           - const: qcom,sm8350-dp
+      - items:
+          - enum:
+              - qcom,sm8750-dp
+          - const: qcom,sm8650-dp
 
   reg:
     minItems: 4
index 82fe95a6d9599b5799549356451278564dc070de..d4bb65c660af8ce8a6bda129a8275c579a705871 100644 (file)
@@ -42,6 +42,7 @@ properties:
               - qcom,sm8450-dsi-ctrl
               - qcom,sm8550-dsi-ctrl
               - qcom,sm8650-dsi-ctrl
+              - qcom,sm8750-dsi-ctrl
           - const: qcom,mdss-dsi-ctrl
       - enum:
           - qcom,dsi-ctrl-6g-qcm2290
@@ -70,11 +71,11 @@ properties:
        - mnoc:: MNOC clock
        - pixel:: Display pixel clock.
     minItems: 3
-    maxItems: 9
+    maxItems: 12
 
   clock-names:
     minItems: 3
-    maxItems: 9
+    maxItems: 12
 
   phys:
     maxItems: 1
@@ -109,7 +110,8 @@ properties:
     minItems: 2
     maxItems: 4
     description: |
-      Parents of "byte" and "pixel" for the given platform.
+      For DSI on SM8650 and older: parents of "byte" and "pixel" for the given
+      platform.
       For DSIv2 platforms this should contain "byte", "esc", "src" and
       "pixel_src" clocks.
 
@@ -218,8 +220,6 @@ required:
   - clocks
   - clock-names
   - phys
-  - assigned-clocks
-  - assigned-clock-parents
   - ports
 
 allOf:
@@ -244,6 +244,9 @@ allOf:
             - const: byte
             - const: pixel
             - const: core
+      required:
+        - assigned-clocks
+        - assigned-clock-parents
 
   - if:
       properties:
@@ -266,6 +269,9 @@ allOf:
             - const: byte
             - const: pixel
             - const: core
+      required:
+        - assigned-clocks
+        - assigned-clock-parents
 
   - if:
       properties:
@@ -288,6 +294,9 @@ allOf:
             - const: pixel
             - const: core
             - const: core_mmss
+      required:
+        - assigned-clocks
+        - assigned-clock-parents
 
   - if:
       properties:
@@ -309,6 +318,9 @@ allOf:
             - const: core_mmss
             - const: pixel
             - const: core
+      required:
+        - assigned-clocks
+        - assigned-clock-parents
 
   - if:
       properties:
@@ -346,6 +358,35 @@ allOf:
             - const: core
             - const: iface
             - const: bus
+      required:
+        - assigned-clocks
+        - assigned-clock-parents
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sm8750-dsi-ctrl
+    then:
+      properties:
+        clocks:
+          minItems: 12
+          maxItems: 12
+        clock-names:
+          items:
+            - const: byte
+            - const: byte_intf
+            - const: pixel
+            - const: core
+            - const: iface
+            - const: bus
+            - const: dsi_pll_pixel
+            - const: dsi_pll_byte
+            - const: esync
+            - const: osc
+            - const: byte_src
+            - const: pixel_src
 
   - if:
       properties:
@@ -369,6 +410,9 @@ allOf:
             - const: core_mmss
             - const: pixel
             - const: core
+      required:
+        - assigned-clocks
+        - assigned-clock-parents
 
 unevaluatedProperties: false
 
index 3c75ff42999a59183d5c6f9ad164023d6361ac07..1ca820a500b725233e161f53cbbbd59406326876 100644 (file)
@@ -25,6 +25,7 @@ properties:
       - qcom,sm8450-dsi-phy-5nm
       - qcom,sm8550-dsi-phy-4nm
       - qcom,sm8650-dsi-phy-4nm
+      - qcom,sm8750-dsi-phy-3nm
 
   reg:
     items:
index e153f8d26e7aaec64656570bbec700794651c10f..2735c78b0b67af8c004350f40ca9700c563b75f8 100644 (file)
@@ -60,7 +60,6 @@ properties:
           - const: bus
           - const: core
           - const: vsync
-          - const: lut
           - const: tbu
           - const: tbu_rt
         # MSM8996 has additional iommu clock
index 01cf79bd754b491349c52c5aef49ba06e835d0bf..0a46120dd8680371ed031f7773859716f49c3aa1 100644 (file)
@@ -16,6 +16,7 @@ properties:
     enum:
       - qcom,sa8775p-dpu
       - qcom,sm8650-dpu
+      - qcom,sm8750-dpu
       - qcom,x1e80100-dpu
 
   reg:
diff --git a/Bindings/display/msm/qcom,sm8750-mdss.yaml b/Bindings/display/msm/qcom,sm8750-mdss.yaml
new file mode 100644 (file)
index 0000000..72c70ed
--- /dev/null
@@ -0,0 +1,470 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/msm/qcom,sm8750-mdss.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm SM8750 Display MDSS
+
+maintainers:
+  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
+
+description:
+  SM8650 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
+  DPU display controller, DSI and DP interfaces etc.
+
+$ref: /schemas/display/msm/mdss-common.yaml#
+
+properties:
+  compatible:
+    const: qcom,sm8750-mdss
+
+  clocks:
+    items:
+      - description: Display AHB
+      - description: Display hf AXI
+      - description: Display core
+
+  iommus:
+    maxItems: 1
+
+  interconnects:
+    items:
+      - description: Interconnect path from mdp0 port to the data bus
+      - description: Interconnect path from CPU to the reg bus
+
+  interconnect-names:
+    items:
+      - const: mdp0-mem
+      - const: cpu-cfg
+
+patternProperties:
+  "^display-controller@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        const: qcom,sm8750-dpu
+
+  "^displayport-controller@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        contains:
+          const: qcom,sm8750-dp
+
+  "^dsi@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        contains:
+          const: qcom,sm8750-dsi-ctrl
+
+  "^phy@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        const: qcom,sm8750-dsi-phy-3nm
+
+required:
+  - compatible
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,rpmh.h>
+    #include <dt-bindings/interconnect/qcom,icc.h>
+    #include <dt-bindings/interconnect/qcom,sm8750-rpmh.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/phy/phy-qcom-qmp.h>
+    #include <dt-bindings/power/qcom,rpmhpd.h>
+
+    display-subsystem@ae00000 {
+            compatible = "qcom,sm8750-mdss";
+            reg = <0x0ae00000 0x1000>;
+            reg-names = "mdss";
+
+            interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+
+            clocks = <&disp_cc_mdss_ahb_clk>,
+                     <&gcc_disp_hf_axi_clk>,
+                     <&disp_cc_mdss_mdp_clk>;
+
+            interconnects = <&mmss_noc MASTER_MDP QCOM_ICC_TAG_ALWAYS
+                             &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                            <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                             &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
+            interconnect-names = "mdp0-mem",
+                                 "cpu-cfg";
+
+            resets = <&disp_cc_mdss_core_bcr>;
+
+            power-domains = <&mdss_gdsc>;
+
+            iommus = <&apps_smmu 0x800 0x2>;
+
+            interrupt-controller;
+            #interrupt-cells = <1>;
+
+            #address-cells = <1>;
+            #size-cells = <1>;
+            ranges;
+
+            display-controller@ae01000 {
+                compatible = "qcom,sm8750-dpu";
+                reg = <0x0ae01000 0x93000>,
+                      <0x0aeb0000 0x2008>;
+                reg-names = "mdp",
+                            "vbif";
+
+                interrupts-extended = <&mdss 0>;
+
+                clocks = <&gcc_disp_hf_axi_clk>,
+                         <&disp_cc_mdss_ahb_clk>,
+                         <&disp_cc_mdss_mdp_lut_clk>,
+                         <&disp_cc_mdss_mdp_clk>,
+                         <&disp_cc_mdss_vsync_clk>;
+                clock-names = "nrt_bus",
+                              "iface",
+                              "lut",
+                              "core",
+                              "vsync";
+
+                assigned-clocks = <&disp_cc_mdss_vsync_clk>;
+                assigned-clock-rates = <19200000>;
+
+                operating-points-v2 = <&mdp_opp_table>;
+
+                power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+                ports {
+                    #address-cells = <1>;
+                    #size-cells = <0>;
+
+                    port@0 {
+                        reg = <0>;
+
+                        dpu_intf1_out: endpoint {
+                            remote-endpoint = <&mdss_dsi0_in>;
+                        };
+                    };
+
+                    port@1 {
+                        reg = <1>;
+
+                        dpu_intf2_out: endpoint {
+                            remote-endpoint = <&mdss_dsi1_in>;
+                        };
+                    };
+
+                    port@2 {
+                        reg = <2>;
+
+                        dpu_intf0_out: endpoint {
+                            remote-endpoint = <&mdss_dp0_in>;
+                        };
+                    };
+                };
+
+                mdp_opp_table: opp-table {
+                    compatible = "operating-points-v2";
+
+                    opp-207000000 {
+                        opp-hz = /bits/ 64 <207000000>;
+                        required-opps = <&rpmhpd_opp_low_svs>;
+                    };
+
+                    opp-337000000 {
+                        opp-hz = /bits/ 64 <337000000>;
+                        required-opps = <&rpmhpd_opp_svs>;
+                    };
+
+                    opp-417000000 {
+                        opp-hz = /bits/ 64 <417000000>;
+                        required-opps = <&rpmhpd_opp_svs_l1>;
+                    };
+
+                    opp-532000000 {
+                        opp-hz = /bits/ 64 <532000000>;
+                        required-opps = <&rpmhpd_opp_nom>;
+                    };
+
+                    opp-575000000 {
+                        opp-hz = /bits/ 64 <575000000>;
+                        required-opps = <&rpmhpd_opp_nom_l1>;
+                    };
+                };
+            };
+
+            dsi@ae94000 {
+                compatible = "qcom,sm8750-dsi-ctrl", "qcom,mdss-dsi-ctrl";
+                reg = <0x0ae94000 0x400>;
+                reg-names = "dsi_ctrl";
+
+                interrupts-extended = <&mdss 4>;
+
+                clocks = <&disp_cc_mdss_byte0_clk>,
+                         <&disp_cc_mdss_byte0_intf_clk>,
+                         <&disp_cc_mdss_pclk0_clk>,
+                         <&disp_cc_mdss_esc0_clk>,
+                         <&disp_cc_mdss_ahb_clk>,
+                         <&gcc_disp_hf_axi_clk>,
+                         <&mdss_dsi0_phy 1>,
+                         <&mdss_dsi0_phy 0>,
+                         <&disp_cc_esync0_clk>,
+                         <&disp_cc_osc_clk>,
+                         <&disp_cc_mdss_byte0_clk_src>,
+                         <&disp_cc_mdss_pclk0_clk_src>;
+                clock-names = "byte",
+                              "byte_intf",
+                              "pixel",
+                              "core",
+                              "iface",
+                              "bus",
+                              "dsi_pll_pixel",
+                              "dsi_pll_byte",
+                              "esync",
+                              "osc",
+                              "byte_src",
+                              "pixel_src";
+
+                operating-points-v2 = <&mdss_dsi_opp_table>;
+
+                power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+                phys = <&mdss_dsi0_phy>;
+                phy-names = "dsi";
+
+                vdda-supply = <&vreg_l3g_1p2>;
+
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                ports {
+                    #address-cells = <1>;
+                    #size-cells = <0>;
+
+                    port@0 {
+                        reg = <0>;
+
+                        mdss_dsi0_in: endpoint {
+                            remote-endpoint = <&dpu_intf1_out>;
+                        };
+                    };
+
+                    port@1 {
+                        reg = <1>;
+
+                        mdss_dsi0_out: endpoint {
+                            remote-endpoint = <&panel0_in>;
+                            data-lanes = <0 1 2 3>;
+                        };
+                    };
+                };
+
+                mdss_dsi_opp_table: opp-table {
+                    compatible = "operating-points-v2";
+
+                    opp-187500000 {
+                        opp-hz = /bits/ 64 <187500000>;
+                        required-opps = <&rpmhpd_opp_low_svs>;
+                    };
+
+                    opp-300000000 {
+                        opp-hz = /bits/ 64 <300000000>;
+                        required-opps = <&rpmhpd_opp_svs>;
+                    };
+
+                    opp-358000000 {
+                        opp-hz = /bits/ 64 <358000000>;
+                        required-opps = <&rpmhpd_opp_svs_l1>;
+                    };
+                };
+            };
+
+            mdss_dsi0_phy: phy@ae95000 {
+                compatible = "qcom,sm8750-dsi-phy-3nm";
+                reg = <0x0ae95000 0x200>,
+                      <0x0ae95200 0x280>,
+                      <0x0ae95500 0x400>;
+                reg-names = "dsi_phy",
+                            "dsi_phy_lane",
+                            "dsi_pll";
+
+                clocks = <&disp_cc_mdss_ahb_clk>,
+                         <&rpmhcc RPMH_CXO_CLK>;
+                clock-names = "iface",
+                              "ref";
+
+                vdds-supply = <&vreg_l3i_0p88>;
+
+                #clock-cells = <1>;
+                #phy-cells = <0>;
+            };
+
+            dsi@ae96000 {
+                compatible = "qcom,sm8750-dsi-ctrl", "qcom,mdss-dsi-ctrl";
+                reg = <0x0ae96000 0x400>;
+                reg-names = "dsi_ctrl";
+
+                interrupts-extended = <&mdss 5>;
+
+                clocks = <&disp_cc_mdss_byte1_clk>,
+                         <&disp_cc_mdss_byte1_intf_clk>,
+                         <&disp_cc_mdss_pclk1_clk>,
+                         <&disp_cc_mdss_esc1_clk>,
+                         <&disp_cc_mdss_ahb_clk>,
+                         <&gcc_disp_hf_axi_clk>,
+                         <&mdss_dsi1_phy 1>,
+                         <&mdss_dsi1_phy 0>,
+                         <&disp_cc_esync1_clk>,
+                         <&disp_cc_osc_clk>,
+                         <&disp_cc_mdss_byte1_clk_src>,
+                         <&disp_cc_mdss_pclk1_clk_src>;
+                clock-names = "byte",
+                              "byte_intf",
+                              "pixel",
+                              "core",
+                              "iface",
+                              "bus",
+                              "dsi_pll_pixel",
+                              "dsi_pll_byte",
+                              "esync",
+                              "osc",
+                              "byte_src",
+                              "pixel_src";
+
+                operating-points-v2 = <&mdss_dsi_opp_table>;
+
+                power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+                phys = <&mdss_dsi1_phy>;
+                phy-names = "dsi";
+
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                ports {
+                    #address-cells = <1>;
+                    #size-cells = <0>;
+
+                    port@0 {
+                        reg = <0>;
+
+                        mdss_dsi1_in: endpoint {
+                            remote-endpoint = <&dpu_intf2_out>;
+                        };
+                    };
+
+                    port@1 {
+                        reg = <1>;
+
+                        mdss_dsi1_out: endpoint {
+                        };
+                    };
+                };
+            };
+
+            mdss_dsi1_phy: phy@ae97000 {
+                compatible = "qcom,sm8750-dsi-phy-3nm";
+                reg = <0x0ae97000 0x200>,
+                      <0x0ae97200 0x280>,
+                      <0x0ae97500 0x400>;
+                reg-names = "dsi_phy",
+                            "dsi_phy_lane",
+                            "dsi_pll";
+
+                clocks = <&disp_cc_mdss_ahb_clk>,
+                         <&rpmhcc RPMH_CXO_CLK>;
+                clock-names = "iface",
+                              "ref";
+
+                #clock-cells = <1>;
+                #phy-cells = <0>;
+            };
+
+            displayport-controller@af54000 {
+                compatible = "qcom,sm8750-dp", "qcom,sm8650-dp";
+                reg = <0xaf54000 0x104>,
+                      <0xaf54200 0xc0>,
+                      <0xaf55000 0x770>,
+                      <0xaf56000 0x9c>,
+                      <0xaf57000 0x9c>;
+
+                interrupts-extended = <&mdss 12>;
+
+                clocks = <&disp_cc_mdss_ahb_clk>,
+                         <&disp_cc_mdss_dptx0_aux_clk>,
+                         <&disp_cc_mdss_dptx0_link_clk>,
+                         <&disp_cc_mdss_dptx0_link_intf_clk>,
+                         <&disp_cc_mdss_dptx0_pixel0_clk>;
+                clock-names = "core_iface",
+                              "core_aux",
+                              "ctrl_link",
+                              "ctrl_link_iface",
+                              "stream_pixel";
+
+                assigned-clocks = <&disp_cc_mdss_dptx0_link_clk_src>,
+                                  <&disp_cc_mdss_dptx0_pixel0_clk_src>;
+                assigned-clock-parents = <&usb_dp_qmpphy QMP_USB43DP_DP_LINK_CLK>,
+                                         <&usb_dp_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
+
+                operating-points-v2 = <&dp_opp_table>;
+
+                power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+                phys = <&usb_dp_qmpphy QMP_USB43DP_DP_PHY>;
+                phy-names = "dp";
+
+                #sound-dai-cells = <0>;
+
+                dp_opp_table: opp-table {
+                    compatible = "operating-points-v2";
+
+                    opp-192000000 {
+                        opp-hz = /bits/ 64 <192000000>;
+                        required-opps = <&rpmhpd_opp_low_svs_d1>;
+                    };
+
+                    opp-270000000 {
+                        opp-hz = /bits/ 64 <270000000>;
+                        required-opps = <&rpmhpd_opp_low_svs>;
+                    };
+
+                    opp-540000000 {
+                        opp-hz = /bits/ 64 <540000000>;
+                        required-opps = <&rpmhpd_opp_svs_l1>;
+                    };
+
+                    opp-810000000 {
+                        opp-hz = /bits/ 64 <810000000>;
+                        required-opps = <&rpmhpd_opp_nom>;
+                    };
+                };
+
+                ports {
+                    #address-cells = <1>;
+                    #size-cells = <0>;
+
+                    port@0 {
+                        reg = <0>;
+
+                        mdss_dp0_in: endpoint {
+                            remote-endpoint = <&dpu_intf0_out>;
+                        };
+                    };
+
+                    port@1 {
+                        reg = <1>;
+
+                        mdss_dp0_out: endpoint {
+                            remote-endpoint = <&usb_dp_qmpphy_dp_in>;
+                        };
+                    };
+                };
+            };
+        };
diff --git a/Bindings/display/panel/himax,hx83112b.yaml b/Bindings/display/panel/himax,hx83112b.yaml
new file mode 100644 (file)
index 0000000..e58bb3d
--- /dev/null
@@ -0,0 +1,73 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/himax,hx83112b.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Himax HX83112B-based DSI display panels
+
+maintainers:
+  - Luca Weiss <luca@lucaweiss.eu>
+
+description:
+  The Himax HX83112B is a generic DSI Panel IC used to control
+  LCD panels.
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+    contains:
+      const: djn,98-03057-6598b-i
+
+  reg:
+    maxItems: 1
+
+  iovcc-supply:
+    description: I/O voltage rail
+
+  vsn-supply:
+    description: Positive source voltage rail
+
+  vsp-supply:
+    description: Negative source voltage rail
+
+required:
+  - compatible
+  - reg
+  - reset-gpios
+  - iovcc-supply
+  - vsn-supply
+  - vsp-supply
+  - port
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@0 {
+            compatible = "djn,98-03057-6598b-i";
+            reg = <0>;
+
+            reset-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>;
+
+            iovcc-supply = <&pm8953_l6>;
+            vsn-supply = <&pmi632_lcdb_ncp>;
+            vsp-supply = <&pmi632_lcdb_ldo>;
+
+            port {
+                panel_in_0: endpoint {
+                    remote-endpoint = <&dsi0_out>;
+                };
+            };
+        };
+    };
+
+...
index 75ccabff308bfa0d27d4cba9f2c8ce86dba225c6..5725a587e35c96fb98857a6a6bd77bf61e051a1e 100644 (file)
@@ -17,12 +17,17 @@ description:
 
 properties:
   compatible:
-    items:
-      - enum:
-          - hannstar,hsd060bhw4
-          - microchip,ac40t08a-mipi-panel
-          - powkiddy,x55-panel
-      - const: himax,hx8394
+    oneOf:
+      - items:
+          - enum:
+              - hannstar,hsd060bhw4
+              - microchip,ac40t08a-mipi-panel
+              - powkiddy,x55-panel
+          - const: himax,hx8394
+      - items:
+          - enum:
+              - huiling,hl055fhav028c
+          - const: himax,hx8399c
 
   reg:
     maxItems: 1
index baf5dfe5f5ebdd92f460a78d0e56e1b45e7dd323..a51af61d484647efefe757892cc050df4509e546 100644 (file)
@@ -19,6 +19,7 @@ properties:
           - ampire,am8001280g
           - bananapi,lhr050h41
           - feixin,k101-im2byl02
+          - raspberrypi,dsi-7inch
           - startek,kd050hdfia020
           - tdo,tl050hdv35
           - wanchanglong,w552946aba
index 5542c9229d54a000a6493ed64f03eda59c7efb02..1ac1f02190790cbff00c9f977d5c1a4420ed9f27 100644 (file)
@@ -57,6 +57,8 @@ properties:
       - auo,g121ean01
         # AU Optronics Corporation 15.6" (1366x768) TFT LCD panel
       - auo,g156xtn01
+        # AU Optronics Corporation 23.8" FHD (1920x1080) TFT LCD panel
+      - auo,p238han01
         # AU Optronics Corporation 31.5" FHD (1920x1080) TFT LCD panel
       - auo,p320hvn03
         # AU Optronics Corporation 21.5" FHD (1920x1080) color TFT LCD panel
index 54c9c0ef45ecc730c722fb152390db4e6c45aab9..97b7fbe05c077bf29564120dfa163d4f40f4aead 100644 (file)
@@ -42,7 +42,6 @@ required:
   - compatible
   - port
   - reg
-  - reset-gpios
 
 additionalProperties: false
 
diff --git a/Bindings/display/panel/renesas,r61307.yaml b/Bindings/display/panel/renesas,r61307.yaml
new file mode 100644 (file)
index 0000000..90cce22
--- /dev/null
@@ -0,0 +1,94 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/renesas,r61307.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas R61307 based DSI Display Panel
+
+maintainers:
+  - Svyatoslav Ryhel <clamor95@gmail.com>
+
+description:
+  The Renesas R61307 is a generic DSI Panel IC used to control LCD panels.
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+    items:
+      - enum:
+            # KOE/HITACHI TX13D100VM0EAA 5.0" XGA TFT LCD panel
+          - hit,tx13d100vm0eaa
+          - koe,tx13d100vm0eaa
+      - const: renesas,r61307
+
+  reg:
+    maxItems: 1
+
+  vcc-supply:
+    description: Regulator for main power supply.
+
+  iovcc-supply:
+    description: Regulator for 1.8V IO power supply.
+
+  backlight: true
+
+  renesas,gamma:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      0 - disabled
+      1-3 - gamma setting A presets
+    enum: [0, 1, 2, 3]
+
+  renesas,column-inversion:
+    type: boolean
+    description: switch between line and column inversion. The line
+      inversion is set by default.
+
+  renesas,contrast:
+    type: boolean
+    description: digital contrast adjustment
+
+  reset-gpios: true
+  port: true
+
+required:
+  - compatible
+  - port
+  - backlight
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@1 {
+            compatible = "koe,tx13d100vm0eaa", "renesas,r61307";
+            reg = <1>;
+
+            reset-gpios = <&gpio 176 GPIO_ACTIVE_LOW>;
+
+            renesas,gamma = <3>;
+            renesas,column-inversion;
+            renesas,contrast;
+
+            vcc-supply = <&vcc_3v0_lcd>;
+            iovcc-supply = <&iovcc_1v8_lcd>;
+
+            backlight = <&backlight>;
+
+            port {
+                panel_in: endpoint {
+                    remote-endpoint = <&dsi_out>;
+                };
+            };
+        };
+    };
+...
diff --git a/Bindings/display/panel/renesas,r69328.yaml b/Bindings/display/panel/renesas,r69328.yaml
new file mode 100644 (file)
index 0000000..1cd219b
--- /dev/null
@@ -0,0 +1,73 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/renesas,r69328.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas R69328 based DSI Display Panel
+
+maintainers:
+  - Svyatoslav Ryhel <clamor95@gmail.com>
+
+description:
+  The Renesas R69328 is a generic DSI Panel IC used to control LCD panels.
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+    items:
+      - enum:
+            # JDI DX12D100VM0EAA 4.7" WXGA TFT LCD panel
+          - jdi,dx12d100vm0eaa
+      - const: renesas,r69328
+
+  reg:
+    maxItems: 1
+
+  vdd-supply:
+    description: Regulator for main power supply.
+
+  vddio-supply:
+    description: Regulator for 1.8V IO power supply.
+
+  backlight: true
+
+  reset-gpios: true
+  port: true
+
+required:
+  - compatible
+  - port
+  - backlight
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@1 {
+            compatible = "jdi,dx12d100vm0eaa", "renesas,r69328";
+            reg = <1>;
+
+            reset-gpios = <&gpio 176 GPIO_ACTIVE_LOW>;
+
+            vdd-supply = <&vdd_3v0_lcd>;
+            vddio-supply = <&vdd_1v8_io>;
+
+            backlight = <&backlight>;
+
+            port {
+                panel_in: endpoint {
+                    remote-endpoint = <&dsi_out>;
+                };
+            };
+        };
+    };
+...
index 31f0c0f038e494234d896691f3cf0b9b7cd8842d..e36659340ef38e128862b7113eaa207cbda7a4f6 100644 (file)
@@ -19,6 +19,8 @@ properties:
       - const: samsung,atna33xc20
       - items:
           - enum:
+              # Samsung 13" 3K (2880×1920 pixels) eDP AMOLED panel
+              - samsung,atna30dw01
               # Samsung 14" WQXGA+ (2880×1800 pixels) eDP AMOLED panel
               - samsung,atna40yk20
               # Samsung 14.5" WQXGA+ (2880x1800 pixels) eDP AMOLED panel
index b07f3eca669bffc6000bd919c808372165809929..1e434240ea3f6afd4b5d29f4f59df0b787702d87 100644 (file)
@@ -29,6 +29,7 @@ properties:
           - densitron,dmt028vghmcmi-1a
           - elida,kd50t048a
           - techstar,ts8550b
+          - winstar,wf40eswaa6mnn0
       - const: sitronix,st7701
 
   reg:
index 30047a62fc111ff63cbbc275914ef8bb7cb4ffd6..f0a82f0ff79099cdccfd5c5001de0d319e94410f 100644 (file)
@@ -18,7 +18,9 @@ allOf:
 
 properties:
   compatible:
-    const: visionox,rm69299-1080p-display
+    enum:
+      - visionox,rm69299-1080p-display
+      - visionox,rm69299-shift
 
   reg:
     maxItems: 1
index 95e3d5e74b8761dd84a576b46f23b77bcfa92b31..1e32d14b6edb791ded3209d5e0fccde7c83052bc 100644 (file)
@@ -20,6 +20,7 @@ properties:
       - enum:
           - renesas,r9a07g043u-du # RZ/G2UL
           - renesas,r9a07g044-du # RZ/G2{L,LC}
+          - renesas,r9a09g057-du # RZ/V2H(P)
       - items:
           - enum:
               - renesas,r9a07g054-du    # RZ/V2L
@@ -101,7 +102,12 @@ allOf:
 
           required:
             - port@0
-    else:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r9a07g044-du
+    then:
       properties:
         ports:
           properties:
@@ -113,6 +119,21 @@ allOf:
           required:
             - port@0
             - port@1
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r9a09g057-du
+    then:
+      properties:
+        ports:
+          properties:
+            port@0:
+              description: DSI
+            port@1: false
+
+          required:
+            - port@0
 
 examples:
   # RZ/G2L DU
index ccd71c5324af1f1b7b241fe8db1babf414642571..0881e82deb1105e4f92843380c0183569f688f08 100644 (file)
@@ -58,12 +58,6 @@ properties:
   power-domains:
     maxItems: 1
 
-  "#address-cells":
-    const: 1
-
-  "#size-cells":
-    const: 0
-
 required:
   - compatible
   - clocks
index f546d481b7e5f496e1684f95edaa2fb97b840503..93da1fb9adc47b20dafc5fb03ee72f458a0f6228 100644 (file)
@@ -64,10 +64,10 @@ properties:
       - description: Pixel clock for video port 0.
       - description: Pixel clock for video port 1.
       - 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
@@ -77,10 +77,10 @@ properties:
       - const: dclk_vp0
       - const: dclk_vp1
       - const: dclk_vp2
-      - const: dclk_vp3
-      - const: pclk_vop
-      - const: pll_hdmiphy0
-      - const: pll_hdmiphy1
+      - {}
+      - {}
+      - {}
+      - {}
 
   rockchip,grf:
     $ref: /schemas/types.yaml#/definitions/phandle
@@ -175,10 +175,24 @@ allOf:
     then:
       properties:
         clocks:
-          maxItems: 5
+          minItems: 5
+          items:
+            - {}
+            - {}
+            - {}
+            - {}
+            - {}
+            - description: Alternative pixel clock provided by HDMI PHY PLL.
 
         clock-names:
-          maxItems: 5
+          minItems: 5
+          items:
+            - {}
+            - {}
+            - {}
+            - {}
+            - {}
+            - const: pll_hdmiphy0
 
         interrupts:
           minItems: 4
@@ -208,11 +222,29 @@ allOf:
       properties:
         clocks:
           minItems: 7
-          maxItems: 9
+          items:
+            - {}
+            - {}
+            - {}
+            - {}
+            - {}
+            - 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: 7
-          maxItems: 9
+          items:
+            - {}
+            - {}
+            - {}
+            - {}
+            - {}
+            - const: dclk_vp3
+            - const: pclk_vop
+            - const: pll_hdmiphy0
+            - const: pll_hdmiphy1
 
         interrupts:
           maxItems: 1
diff --git a/Bindings/display/sitronix,st7567.yaml b/Bindings/display/sitronix,st7567.yaml
new file mode 100644 (file)
index 0000000..e8a5b8a
--- /dev/null
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/sitronix,st7567.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sitronix ST7567 Display Controller
+
+maintainers:
+  - Javier Martinez Canillas <javierm@redhat.com>
+
+description:
+  Sitronix ST7567 is a driver and controller for monochrome
+  dot matrix LCD panels.
+
+allOf:
+  - $ref: panel/panel-common.yaml#
+
+properties:
+  compatible:
+    const: sitronix,st7567
+
+  reg:
+    maxItems: 1
+
+  width-mm: true
+  height-mm: true
+  panel-timing: true
+
+required:
+  - compatible
+  - reg
+  - width-mm
+  - height-mm
+  - panel-timing
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        display@3f {
+            compatible = "sitronix,st7567";
+            reg = <0x3f>;
+            width-mm = <37>;
+            height-mm = <27>;
+
+            panel-timing {
+                hactive = <128>;
+                vactive = <64>;
+                hback-porch = <0>;
+                vback-porch = <0>;
+                clock-frequency = <0>;
+                hfront-porch = <0>;
+                hsync-len = <0>;
+                vfront-porch = <0>;
+                vsync-len = <0>;
+            };
+          };
+     };
diff --git a/Bindings/display/sitronix,st7586.txt b/Bindings/display/sitronix,st7586.txt
deleted file mode 100644 (file)
index 1d0dad1..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Sitronix ST7586 display panel
-
-Required properties:
-- compatible:  "lego,ev3-lcd".
-- a0-gpios:    The A0 signal (since this binding is for serial mode, this is
-                the pin labeled D1 on the controller, not the pin labeled A0)
-- reset-gpios: Reset pin
-
-The node for this driver must be a child node of a SPI controller, hence
-all mandatory properties described in ../spi/spi-bus.txt must be specified.
-
-Optional properties:
-- rotation:    panel rotation in degrees counter clockwise (0,90,180,270)
-
-Example:
-       display@0{
-               compatible = "lego,ev3-lcd";
-               reg = <0>;
-               spi-max-frequency = <10000000>;
-               a0-gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
-               reset-gpios = <&gpio 80 GPIO_ACTIVE_HIGH>;
-       };
diff --git a/Bindings/display/sitronix,st7586.yaml b/Bindings/display/sitronix,st7586.yaml
new file mode 100644 (file)
index 0000000..566aaf1
--- /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/display/sitronix,st7586.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sitronix ST7586 Display Controller
+
+maintainers:
+  - David Lechner <david@lechnology.com>
+
+description:
+  Sitronix ST7586 is a driver and controller for 4-level gray
+  scale and monochrome dot matrix LCD panels.
+  https://topwaydisplay.com/sites/default/files/2020-04/ST7586S.pdf
+
+$ref: panel/panel-common.yaml#
+
+additionalProperties: false
+
+properties:
+  compatible:
+    const: lego,ev3-lcd
+
+  reg:
+    maxItems: 1
+
+  spi-max-frequency:
+    maximum: 50000000
+
+  a0-gpios:
+    description:
+      The A0 signal (for serial mode, this is the pin labeled D1 on the
+      controller, not the pin labeled A0)
+    maxItems: 1
+
+  reset-gpios: true
+  rotation: true
+
+required:
+  - compatible
+  - reg
+  - a0-gpios
+  - reset-gpios
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        display@0 {
+            compatible = "lego,ev3-lcd";
+            reg = <0>;
+            spi-max-frequency = <10000000>;
+            a0-gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
+            reset-gpios = <&gpio 80 GPIO_ACTIVE_HIGH>;
+        };
+    };
index 4ebea60b8c5ba5f177854e3a8d89e93e7304e18b..8c52fa0ea5f8ee2149ebf1d4b0d5b052832e3d97 100644 (file)
@@ -25,7 +25,7 @@ properties:
     maxItems: 1
 
   clocks:
-    minItems: 2
+    maxItems: 2
 
   clock-names:
     items:
index bc5594d18643010b91376c92a8f235a522d7dc3d..300bf2252c3e8e589dc74927520e24aa4a59f81b 100644 (file)
@@ -20,7 +20,7 @@ properties:
     maxItems: 2
 
   clocks:
-    minItems: 1
+    maxItems: 1
 
   clock-names:
     items:
diff --git a/Bindings/display/ti/ti,am625-oldi.yaml b/Bindings/display/ti/ti,am625-oldi.yaml
new file mode 100644 (file)
index 0000000..8203ec5
--- /dev/null
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/ti/ti,am625-oldi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments AM625 OLDI Transmitter
+
+maintainers:
+  - Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
+  - Aradhya Bhatia <aradhya.bhatia@linux.dev>
+
+description:
+  The AM625 TI Keystone OpenLDI transmitter (OLDI TX) supports serialized RGB
+  pixel data transmission between host and flat panel display over LVDS (Low
+  Voltage Differential Sampling) interface. The OLDI TX consists of 7-to-1 data
+  serializers, and 4-data and 1-clock LVDS outputs. It supports the LVDS output
+  formats "jeida-18", "jeida-24" and "vesa-18", and can accept 24-bit RGB or
+  padded and un-padded 18-bit RGB bus formats as input.
+
+properties:
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+    description: serial clock input for the OLDI transmitters
+
+  clock-names:
+    const: serial
+
+  ti,companion-oldi:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      phandle to companion OLDI transmitter. This property is required for both
+      the OLDI TXes if they are expected to work either in dual-lvds mode or in
+      clone mode. This property should point to the other OLDI TX's phandle.
+
+  ti,secondary-oldi:
+    type: boolean
+    description:
+      Boolean property to mark the OLDI transmitter as the secondary one, when the
+      OLDI hardware is expected to run as a companion HW, in cases of dual-lvds
+      mode or clone mode. The primary OLDI hardware is responsible for all the
+      hardware configuration.
+
+  ti,oldi-io-ctrl:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      phandle to syscon device node mapping OLDI IO_CTRL registers found in the
+      control MMR region. These registers are required to toggle the I/O lane
+      power, and control its electrical characteristics.
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: Parallel RGB input port
+
+      port@1:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: LVDS output port
+
+    required:
+      - port@0
+      - port@1
+
+required:
+  - reg
+  - clocks
+  - clock-names
+  - ti,oldi-io-ctrl
+  - ports
+
+additionalProperties: false
+
+...
index 31c4ffcb599cdcb746ec2c5d942cdf0e33cbe591..361e9cae6896c1f4d7fa1ec47a6e3a73bca2b102 100644 (file)
@@ -12,18 +12,25 @@ maintainers:
   - Tomi Valkeinen <tomi.valkeinen@ti.com>
 
 description: |
-  The AM625 and AM65x TI Keystone Display SubSystem with two output
+  The AM625 and AM65x TI Keystone Display SubSystem has two output
   ports and two video planes. In AM65x DSS, the first video port
   supports 1 OLDI TX and in AM625 DSS, the first video port output is
   internally routed to 2 OLDI TXes. The second video port supports DPI
   format. The first plane is full video plane with all features and the
   second is a "lite plane" without scaling support.
+  The AM62L display subsystem has a single output port which supports DPI
+  format but it only supports single video "lite plane" which does not support
+  scaling. The output port is routed to SoC boundary via DPI interface and same
+  DPI signals are also routed internally to DSI Tx controller present within the
+  SoC. Due to clocking limitations only one of the interface i.e. either DSI or
+  DPI can be used at once.
 
 properties:
   compatible:
     enum:
       - ti,am625-dss
       - ti,am62a7-dss
+      - ti,am62l-dss
       - ti,am65x-dss
 
   reg:
@@ -91,6 +98,26 @@ properties:
           For AM625 DSS, the internal DPI output port node from video
           port 1.
           For AM62A7 DSS, the port is tied off inside the SoC.
+          For AM62L DSS, the DSS DPI output port node from video port 1
+          or DSI Tx controller node connected to video port 1.
+        properties:
+          endpoint@0:
+            $ref: /schemas/graph.yaml#/properties/endpoint
+            description:
+              For AM625 DSS, VP Connection to OLDI0.
+              For AM65X DSS, OLDI output from the SoC.
+
+          endpoint@1:
+            $ref: /schemas/graph.yaml#/properties/endpoint
+            description:
+              For AM625 DSS, VP Connection to OLDI1.
+
+        anyOf:
+          - required:
+              - endpoint
+          - required:
+              - endpoint@0
+              - endpoint@1
 
       port@1:
         $ref: /schemas/graph.yaml#/properties/port
@@ -112,6 +139,25 @@ properties:
       Input memory (from main memory to dispc) bandwidth limit in
       bytes per second
 
+  oldi-transmitters:
+    description:
+      Child node under the DSS, to describe all the OLDI transmitters connected
+      to the DSS videoports.
+    type: object
+    additionalProperties: false
+
+    properties:
+      "#address-cells":
+        const: 1
+
+      "#size-cells":
+        const: 0
+
+    patternProperties:
+      '^oldi@[0-1]$':
+        $ref: ti,am625-oldi.yaml#
+        description: OLDI transmitters connected to the DSS VPs
+
 allOf:
   - if:
       properties:
@@ -120,9 +166,36 @@ allOf:
             const: ti,am62a7-dss
     then:
       properties:
+        oldi-transmitters: false
         ports:
           properties:
             port@0: false
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: ti,am62l-dss
+    then:
+      properties:
+        ports:
+          properties:
+            port@1: false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - ti,am62l-dss
+              - ti,am65x-dss
+    then:
+      properties:
+        oldi-transmitters: false
+        ports:
+          properties:
+            port@0:
+              properties:
+                endpoint@1: false
 
 required:
   - compatible
@@ -142,32 +215,135 @@ examples:
     #include <dt-bindings/soc/ti,sci_pm_domain.h>
 
     dss: dss@4a00000 {
-            compatible = "ti,am65x-dss";
-            reg =   <0x04a00000 0x1000>, /* common */
-                    <0x04a02000 0x1000>, /* vidl1 */
-                    <0x04a06000 0x1000>, /* vid */
-                    <0x04a07000 0x1000>, /* ovr1 */
-                    <0x04a08000 0x1000>, /* ovr2 */
-                    <0x04a0a000 0x1000>, /* vp1 */
-                    <0x04a0b000 0x1000>, /* vp2 */
-                    <0x04a01000 0x1000>; /* common1 */
+        compatible = "ti,am65x-dss";
+        reg = <0x04a00000 0x1000>, /* common */
+              <0x04a02000 0x1000>, /* vidl1 */
+              <0x04a06000 0x1000>, /* vid */
+              <0x04a07000 0x1000>, /* ovr1 */
+              <0x04a08000 0x1000>, /* ovr2 */
+              <0x04a0a000 0x1000>, /* vp1 */
+              <0x04a0b000 0x1000>, /* vp2 */
+              <0x04a01000 0x1000>; /* common1 */
+        reg-names = "common", "vidl1", "vid",
+                "ovr1", "ovr2", "vp1", "vp2", "common1";
+        ti,am65x-oldi-io-ctrl = <&dss_oldi_io_ctrl>;
+        power-domains = <&k3_pds 67 TI_SCI_PD_EXCLUSIVE>;
+        clocks =        <&k3_clks 67 1>,
+                        <&k3_clks 216 1>,
+                        <&k3_clks 67 2>;
+        clock-names = "fck", "vp1", "vp2";
+        interrupts = <GIC_SPI 166 IRQ_TYPE_EDGE_RISING>;
+        ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            port@0 {
+                reg = <0>;
+                oldi_out0: endpoint {
+                    remote-endpoint = <&lcd_in0>;
+                };
+            };
+        };
+    };
+
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/soc/ti,sci_pm_domain.h>
+
+    bus {
+        #address-cells = <2>;
+        #size-cells = <2>;
+        dss1: dss@30200000 {
+            compatible = "ti,am625-dss";
+            reg = <0x00 0x30200000 0x00 0x1000>, /* common */
+                  <0x00 0x30202000 0x00 0x1000>, /* vidl1 */
+                  <0x00 0x30206000 0x00 0x1000>, /* vid */
+                  <0x00 0x30207000 0x00 0x1000>, /* ovr1 */
+                  <0x00 0x30208000 0x00 0x1000>, /* ovr2 */
+                  <0x00 0x3020a000 0x00 0x1000>, /* vp1 */
+                  <0x00 0x3020b000 0x00 0x1000>, /* vp2 */
+                  <0x00 0x30201000 0x00 0x1000>; /* common1 */
             reg-names = "common", "vidl1", "vid",
-                    "ovr1", "ovr2", "vp1", "vp2", "common1";
-            ti,am65x-oldi-io-ctrl = <&dss_oldi_io_ctrl>;
-            power-domains = <&k3_pds 67 TI_SCI_PD_EXCLUSIVE>;
-            clocks =        <&k3_clks 67 1>,
-                            <&k3_clks 216 1>,
-                            <&k3_clks 67 2>;
+                        "ovr1", "ovr2", "vp1", "vp2", "common1";
+            power-domains = <&k3_pds 186 TI_SCI_PD_EXCLUSIVE>;
+            clocks =        <&k3_clks 186 6>,
+                            <&vp1_clock>,
+                            <&k3_clks 186 2>;
             clock-names = "fck", "vp1", "vp2";
-            interrupts = <GIC_SPI 166 IRQ_TYPE_EDGE_RISING>;
+            interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
+            oldi-transmitters {
+                #address-cells = <1>;
+                #size-cells = <0>;
+                oldi0: oldi@0 {
+                    reg = <0>;
+                    clocks = <&k3_clks 186 0>;
+                    clock-names = "serial";
+                    ti,companion-oldi = <&oldi1>;
+                    ti,oldi-io-ctrl = <&dss_oldi_io_ctrl>;
+                    ports {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        port@0 {
+                            reg = <0>;
+                            oldi0_in: endpoint {
+                                remote-endpoint = <&dpi0_out0>;
+                            };
+                        };
+                        port@1 {
+                            reg = <1>;
+                            oldi0_out: endpoint {
+                                remote-endpoint = <&panel_in0>;
+                            };
+                        };
+                    };
+                };
+                oldi1: oldi@1 {
+                    reg = <1>;
+                    clocks = <&k3_clks 186 0>;
+                    clock-names = "serial";
+                    ti,secondary-oldi;
+                    ti,companion-oldi = <&oldi0>;
+                    ti,oldi-io-ctrl = <&dss_oldi_io_ctrl>;
+                    ports {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        port@0 {
+                            reg = <0>;
+                            oldi1_in: endpoint {
+                                remote-endpoint = <&dpi0_out1>;
+                            };
+                        };
+                        port@1 {
+                            reg = <1>;
+                            oldi1_out: endpoint {
+                                remote-endpoint = <&panel_in1>;
+                            };
+                        };
+                    };
+                };
+            };
             ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+                port@0 {
                     #address-cells = <1>;
                     #size-cells = <0>;
-                    port@0 {
-                            reg = <0>;
-                            oldi_out0: endpoint {
-                                    remote-endpoint = <&lcd_in0>;
-                            };
+                    reg = <0>;
+                    dpi0_out0: endpoint@0 {
+                        reg = <0>;
+                        remote-endpoint = <&oldi0_in>;
+                    };
+                    dpi0_out1: endpoint@1 {
+                        reg = <1>;
+                        remote-endpoint = <&oldi1_in>;
+                    };
+                };
+                port@1 {
+                    reg = <1>;
+                    dpi1_out: endpoint {
+                        remote-endpoint = <&hdmi_bridge>;
                     };
+                };
             };
+        };
     };
diff --git a/Bindings/dma/brcm,iproc-sba.txt b/Bindings/dma/brcm,iproc-sba.txt
deleted file mode 100644 (file)
index 092913a..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-* Broadcom SBA RAID engine
-
-Required properties:
-- compatible: Should be one of the following
-             "brcm,iproc-sba"
-             "brcm,iproc-sba-v2"
-  The "brcm,iproc-sba" has support for only 6 PQ coefficients
-  The "brcm,iproc-sba-v2" has support for only 30 PQ coefficients
-- mboxes: List of phandle and mailbox channel specifiers
-
-Example:
-
-raid_mbox: mbox@67400000 {
-       ...
-       #mbox-cells = <3>;
-       ...
-};
-
-raid0 {
-       compatible = "brcm,iproc-sba-v2";
-       mboxes = <&raid_mbox 0 0x1 0xffff>,
-                <&raid_mbox 1 0x1 0xffff>,
-                <&raid_mbox 2 0x1 0xffff>,
-                <&raid_mbox 3 0x1 0xffff>,
-                <&raid_mbox 4 0x1 0xffff>,
-                <&raid_mbox 5 0x1 0xffff>,
-                <&raid_mbox 6 0x1 0xffff>,
-                <&raid_mbox 7 0x1 0xffff>;
-};
diff --git a/Bindings/dma/brcm,iproc-sba.yaml b/Bindings/dma/brcm,iproc-sba.yaml
new file mode 100644 (file)
index 0000000..f3fed57
--- /dev/null
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dma/brcm,iproc-sba.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom SBA RAID engine
+
+maintainers:
+  - Ray Jui <rjui@broadcom.com>
+  - Scott Branden <sbranden@broadcom.com>
+
+properties:
+  compatible:
+    enum:
+      - brcm,iproc-sba
+      - brcm,iproc-sba-v2
+
+  mboxes:
+    minItems: 1
+    maxItems: 8
+
+required:
+  - compatible
+  - mboxes
+
+additionalProperties: false
+
+examples:
+  - |
+    raid0 {
+      compatible = "brcm,iproc-sba-v2";
+      mboxes = <&raid_mbox 0 0x1 0xffff>,
+               <&raid_mbox 1 0x1 0xffff>,
+               <&raid_mbox 2 0x1 0xffff>,
+               <&raid_mbox 3 0x1 0xffff>,
+               <&raid_mbox 4 0x1 0xffff>,
+               <&raid_mbox 5 0x1 0xffff>,
+               <&raid_mbox 6 0x1 0xffff>,
+               <&raid_mbox 7 0x1 0xffff>;
+    };
index 75a7d9556699cd0b664a9195dddd6be5a5451442..9102b615dbd61c2b63761efd7a520b1113c88430 100644 (file)
@@ -23,6 +23,35 @@ allOf:
       properties:
         power-domains: false
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: fsl,imx23-dma-apbx
+    then:
+      properties:
+        interrupt-names:
+          items:
+            - const: audio-adc
+            - const: audio-dac
+            - const: spdif-tx
+            - const: i2c
+            - const: saif0
+            - const: empty0
+            - const: auart0-rx
+            - const: auart0-tx
+            - const: auart1-rx
+            - const: auart1-tx
+            - const: saif1
+            - const: empty1
+            - const: empty2
+            - const: empty3
+            - const: empty4
+            - const: empty5
+    else:
+      properties:
+        interrupt-names: false
+
 properties:
   compatible:
     oneOf:
@@ -54,6 +83,10 @@ properties:
     minItems: 4
     maxItems: 16
 
+  interrupt-names:
+    minItems: 4
+    maxItems: 16
+
   "#dma-cells":
     const: 1
 
diff --git a/Bindings/dma/lpc1850-dmamux.txt b/Bindings/dma/lpc1850-dmamux.txt
deleted file mode 100644 (file)
index 87740ad..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-NXP LPC18xx/43xx DMA MUX (DMA request router)
-
-Required properties:
-- compatible:  "nxp,lpc1850-dmamux"
-- reg:         Memory map for accessing module
-- #dma-cells:  Should be set to <3>.
-               * 1st cell contain the master dma request signal
-               * 2nd cell contain the mux value (0-3) for the peripheral
-               * 3rd cell contain either 1 or 2 depending on the AHB
-                 master used.
-- dma-requests:        Number of DMA requests for the mux
-- dma-masters: phandle pointing to the DMA controller
-
-The DMA controller node need to have the following poroperties:
-- dma-requests:        Number of DMA requests the controller can handle
-
-Example:
-
-dmac: dma@40002000 {
-       compatible = "nxp,lpc1850-gpdma", "arm,pl080", "arm,primecell";
-       arm,primecell-periphid = <0x00041080>;
-       reg = <0x40002000 0x1000>;
-       interrupts = <2>;
-       clocks = <&ccu1 CLK_CPU_DMA>;
-       clock-names = "apb_pclk";
-       #dma-cells = <2>;
-       dma-channels = <8>;
-       dma-requests = <16>;
-       lli-bus-interface-ahb1;
-       lli-bus-interface-ahb2;
-       mem-bus-interface-ahb1;
-       mem-bus-interface-ahb2;
-       memcpy-burst-size = <256>;
-       memcpy-bus-width = <32>;
-};
-
-dmamux: dma-mux {
-       compatible = "nxp,lpc1850-dmamux";
-       #dma-cells = <3>;
-       dma-requests = <64>;
-       dma-masters = <&dmac>;
-};
-
-uart0: serial@40081000 {
-       compatible = "nxp,lpc1850-uart", "ns16550a";
-       reg = <0x40081000 0x1000>;
-       reg-shift = <2>;
-       interrupts = <24>;
-       clocks = <&ccu2 CLK_APB0_UART0>, <&ccu1 CLK_CPU_UART0>;
-       clock-names = "uartclk", "reg";
-       dmas = <&dmamux 1 1 2
-               &dmamux 2 1 2>;
-       dma-names = "tx", "rx";
-};
diff --git a/Bindings/dma/marvell,orion-xor.yaml b/Bindings/dma/marvell,orion-xor.yaml
new file mode 100644 (file)
index 0000000..add0825
--- /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/dma/marvell,orion-xor.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell XOR engine
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: marvell,armada-380-xor
+          - const: marvell,orion-xor
+      - enum:
+          - marvell,armada-3700-xor
+          - marvell,orion-xor
+
+  reg:
+    items:
+      - description: Low registers for the XOR engine
+      - description: High registers for the XOR engine
+
+  clocks:
+    maxItems: 1
+
+patternProperties:
+  "^(channel|xor)[0-9]+$":
+    description: XOR channel sub-node
+    type: object
+    additionalProperties: false
+
+    properties:
+      interrupts:
+        description: Interrupt specifier for the XOR channel
+        items:
+          - description: Interrupt for this channel
+
+      dmacap,memcpy:
+        type: boolean
+        deprecated: true
+        description:
+          Indicates that the XOR channel is capable of memcpy operations
+
+      dmacap,memset:
+        type: boolean
+        deprecated: true
+        description:
+          Indicates that the XOR channel is capable of memset operations
+
+      dmacap,xor:
+        type: boolean
+        deprecated: true
+        description:
+          Indicates that the XOR channel is capable of xor operations
+
+    required:
+      - interrupts
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    xor@d0060900 {
+        compatible = "marvell,orion-xor";
+        reg = <0xd0060900 0x100>,
+              <0xd0060b00 0x100>;
+        clocks = <&coreclk 0>;
+
+        xor00 {
+            interrupts = <51>;
+        };
+        xor01 {
+            interrupts = <52>;
+        };
+    };
diff --git a/Bindings/dma/mv-xor.txt b/Bindings/dma/mv-xor.txt
deleted file mode 100644 (file)
index 0ffb4d8..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-* Marvell XOR engines
-
-Required properties:
-- compatible: Should be one of the following:
-  - "marvell,orion-xor"
-  - "marvell,armada-380-xor"
-  - "marvell,armada-3700-xor".
-- reg: Should contain registers location and length (two sets)
-    the first set is the low registers, the second set the high
-    registers for the XOR engine.
-- clocks: pointer to the reference clock
-
-The DT node must also contains sub-nodes for each XOR channel that the
-XOR engine has. Those sub-nodes have the following required
-properties:
-- interrupts: interrupt of the XOR channel
-
-The sub-nodes used to contain one or several of the following
-properties, but they are now deprecated:
-- dmacap,memcpy to indicate that the XOR channel is capable of memcpy operations
-- dmacap,memset to indicate that the XOR channel is capable of memset operations
-- dmacap,xor to indicate that the XOR channel is capable of xor operations
-- dmacap,interrupt to indicate that the XOR channel is capable of
-  generating interrupts
-
-Example:
-
-xor@d0060900 {
-       compatible = "marvell,orion-xor";
-       reg = <0xd0060900 0x100
-              0xd0060b00 0x100>;
-       clocks = <&coreclk 0>;
-
-       xor00 {
-             interrupts = <51>;
-       };
-       xor01 {
-             interrupts = <52>;
-       };
-};
index a790e56878447e4f3bd26307c0f1b74372a05268..0dabe9bbb219ba9131cae0a6a99c9f3523a15ddc 100644 (file)
@@ -24,6 +24,7 @@ properties:
       - const: nvidia,tegra186-gpcdma
       - items:
           - enum:
+              - nvidia,tegra264-gpcdma
               - nvidia,tegra234-gpcdma
               - nvidia,tegra194-gpcdma
           - const: nvidia,tegra186-gpcdma
index f2f87f0f545bc54f1c01419d7c6d438a128050e1..6493a6968bb4b93e4071baf93b847394cdbac4cc 100644 (file)
@@ -92,8 +92,12 @@ required:
 anyOf:
   - required:
       - qcom,powered-remotely
+      - num-channels
+      - qcom,num-ees
   - required:
       - qcom,controlled-remotely
+      - num-channels
+      - qcom,num-ees
   - required:
       - clocks
       - clock-names
index 7052468b15c87430bb98fd10bc972cbe6307a866..bbe4da2a11054f0d272017ddf5d5f7e47cf7a443 100644 (file)
@@ -24,12 +24,14 @@ properties:
           - qcom,sm6350-gpi-dma
       - items:
           - enum:
+              - qcom,milos-gpi-dma
               - qcom,qcm2290-gpi-dma
               - qcom,qcs8300-gpi-dma
               - qcom,qdu1000-gpi-dma
               - qcom,sa8775p-gpi-dma
               - qcom,sar2130p-gpi-dma
               - qcom,sc7280-gpi-dma
+              - qcom,sc8280xp-gpi-dma
               - qcom,sdx75-gpi-dma
               - qcom,sm6115-gpi-dma
               - qcom,sm6375-gpi-dma
diff --git a/Bindings/dma/sophgo,cv1800b-dmamux.yaml b/Bindings/dma/sophgo,cv1800b-dmamux.yaml
new file mode 100644 (file)
index 0000000..0110029
--- /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/dma/sophgo,cv1800b-dmamux.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo CV1800/SG200 Series DMA multiplexer
+
+maintainers:
+  - Inochi Amaoto <inochiama@gmail.com>
+
+description:
+  The DMA multiplexer of CV1800 is a subdevice of the system
+  controller. It support mapping 8 channels, but each channel
+  can be mapped only once.
+
+allOf:
+  - $ref: dma-router.yaml#
+
+properties:
+  compatible:
+    const: sophgo,cv1800b-dmamux
+
+  reg:
+    items:
+      - description: DMA channal remapping register
+      - description: DMA channel interrupt mapping register
+
+  '#dma-cells':
+    const: 2
+    description:
+      The first cells is device id. The second one is the cpu id.
+
+  dma-masters:
+    maxItems: 1
+
+required:
+  - reg
+  - '#dma-cells'
+  - dma-masters
+
+additionalProperties: false
+
+examples:
+  - |
+    dma-router@154 {
+      compatible = "sophgo,cv1800b-dmamux";
+      reg = <0x154 0x8>, <0x298 0x4>;
+      #dma-cells = <2>;
+      dma-masters = <&dmac>;
+    };
diff --git a/Bindings/dpll/dpll-device.yaml b/Bindings/dpll/dpll-device.yaml
new file mode 100644 (file)
index 0000000..fb8d7a9
--- /dev/null
@@ -0,0 +1,76 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dpll/dpll-device.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Digital Phase-Locked Loop (DPLL) Device
+
+maintainers:
+  - Ivan Vecera <ivecera@redhat.com>
+
+description:
+  Digital Phase-Locked Loop (DPLL) device is used for precise clock
+  synchronization in networking and telecom hardware. The device can
+  have one or more channels (DPLLs) and one or more physical input and
+  output pins. Each DPLL channel can either produce pulse-per-clock signal
+  or drive ethernet equipment clock. The type of each channel can be
+  indicated by dpll-types property.
+
+properties:
+  $nodename:
+    pattern: "^dpll(@.*)?$"
+
+  "#address-cells":
+    const: 0
+
+  "#size-cells":
+    const: 0
+
+  dpll-types:
+    description: List of DPLL channel types, one per DPLL instance.
+    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
+    items:
+      enum: [pps, eec]
+
+  input-pins:
+    type: object
+    description: DPLL input pins
+    unevaluatedProperties: false
+
+    properties:
+      "#address-cells":
+        const: 1
+      "#size-cells":
+        const: 0
+
+    patternProperties:
+      "^pin@[0-9a-f]+$":
+        $ref: /schemas/dpll/dpll-pin.yaml
+        unevaluatedProperties: false
+
+    required:
+      - "#address-cells"
+      - "#size-cells"
+
+  output-pins:
+    type: object
+    description: DPLL output pins
+    unevaluatedProperties: false
+
+    properties:
+      "#address-cells":
+        const: 1
+      "#size-cells":
+        const: 0
+
+    patternProperties:
+      "^pin@[0-9]+$":
+        $ref: /schemas/dpll/dpll-pin.yaml
+        unevaluatedProperties: false
+
+    required:
+      - "#address-cells"
+      - "#size-cells"
+
+additionalProperties: true
diff --git a/Bindings/dpll/dpll-pin.yaml b/Bindings/dpll/dpll-pin.yaml
new file mode 100644 (file)
index 0000000..51db93b
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dpll/dpll-pin.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: DPLL Pin
+
+maintainers:
+  - Ivan Vecera <ivecera@redhat.com>
+
+description: |
+  The DPLL pin is either a physical input or output pin that is provided
+  by a DPLL( Digital Phase-Locked Loop) device. The pin is identified by
+  its physical order number that is stored in reg property and can have
+  an additional set of properties like supported (allowed) frequencies,
+  label, type and may support embedded sync.
+
+  Note that the pin in this context has nothing to do with pinctrl.
+
+properties:
+  reg:
+    description: Hardware index of the DPLL pin.
+    maxItems: 1
+
+  connection-type:
+    description: Connection type of the pin
+    $ref: /schemas/types.yaml#/definitions/string
+    enum: [ext, gnss, int, mux, synce]
+
+  esync-control:
+    description: Indicates whether the pin supports embedded sync functionality.
+    type: boolean
+
+  label:
+    description: String exposed as the pin board label
+    $ref: /schemas/types.yaml#/definitions/string
+
+  supported-frequencies-hz:
+    description: List of supported frequencies for this pin, expressed in Hz.
+
+required:
+  - reg
+
+additionalProperties: false
diff --git a/Bindings/dpll/microchip,zl30731.yaml b/Bindings/dpll/microchip,zl30731.yaml
new file mode 100644 (file)
index 0000000..17747f7
--- /dev/null
@@ -0,0 +1,115 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dpll/microchip,zl30731.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip Azurite DPLL device
+
+maintainers:
+  - Ivan Vecera <ivecera@redhat.com>
+
+description:
+  Microchip Azurite DPLL (ZL3073x) is a family of DPLL devices that
+  provides up to 5 independent DPLL channels, up to 10 differential or
+  single-ended inputs and 10 differential or 20 single-ended outputs.
+  These devices support both I2C and SPI interfaces.
+
+properties:
+  compatible:
+    enum:
+      - microchip,zl30731
+      - microchip,zl30732
+      - microchip,zl30733
+      - microchip,zl30734
+      - microchip,zl30735
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - $ref: /schemas/dpll/dpll-device.yaml#
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      dpll@70 {
+        compatible = "microchip,zl30732";
+        reg = <0x70>;
+        dpll-types = "pps", "eec";
+
+        input-pins {
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          pin@0 { /* REF0P */
+            reg = <0>;
+            connection-type = "ext";
+            label = "Input 0";
+            supported-frequencies-hz = /bits/ 64 <1 1000>;
+          };
+        };
+
+        output-pins {
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          pin@3 { /* OUT1N */
+            reg = <3>;
+            connection-type = "gnss";
+            esync-control;
+            label = "Output 1";
+            supported-frequencies-hz = /bits/ 64 <1 10000>;
+          };
+        };
+      };
+    };
+  - |
+    spi {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      dpll@70 {
+        compatible = "microchip,zl30731";
+        reg = <0x70>;
+        spi-max-frequency = <12500000>;
+
+        dpll-types = "pps";
+
+        input-pins {
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          pin@0 { /* REF0P */
+            reg = <0>;
+            connection-type = "ext";
+            label = "Input 0";
+            supported-frequencies-hz = /bits/ 64 <1 1000>;
+          };
+        };
+
+        output-pins {
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          pin@3 { /* OUT1N */
+            reg = <3>;
+            connection-type = "gnss";
+            esync-control;
+            label = "Output 1";
+            supported-frequencies-hz = /bits/ 64 <1 10000>;
+          };
+        };
+      };
+    };
+...
index b8693e4b4b0d34e688ce76baa45369c067ede9e2..e610b7636a083744fd1ea7c97da824e8efc4316e 100644 (file)
@@ -91,6 +91,9 @@ properties:
       - const: runstall
       - const: softreset
 
+  access-controllers:
+    maxItems: 1
+
 required:
   - compatible
   - reg
index ca8d8661f8726bcd7975b6c3ef12211311976eeb..abc52978be7a9454f6ea5d7438ca650954df02ad 100644 (file)
@@ -81,25 +81,25 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/interrupt-controller/irq.h>
     dsp@10803000 {
-       compatible =  "mediatek,mt8195-dsp";
-       reg = <0x10803000  0x1000>,
-             <0x10840000  0x40000>;
-       reg-names = "cfg", "sram";
-       clocks = <&topckgen 10>, //CLK_TOP_ADSP
-                <&clk26m>,
-                <&topckgen 107>, //CLK_TOP_AUDIO_LOCAL_BUS
-                <&topckgen 136>, //CLK_TOP_MAINPLL_D7_D2
-                <&scp_adsp 0>, //CLK_SCP_ADSP_AUDIODSP
-                <&topckgen 34>; //CLK_TOP_AUDIO_H
-       clock-names = "adsp_sel",
-                     "clk26m_ck",
-                     "audio_local_bus",
-                     "mainpll_d7_d2",
-                     "scp_adsp_audiodsp",
-                     "audio_h";
-       memory-region = <&adsp_dma_mem_reserved>,
-                       <&adsp_mem_reserved>;
-       power-domains = <&spm 6>; //MT8195_POWER_DOMAIN_ADSP
-       mbox-names = "rx", "tx";
-       mboxes = <&adsp_mailbox0>, <&adsp_mailbox1>;
+        compatible =  "mediatek,mt8195-dsp";
+        reg = <0x10803000 0x1000>,
+              <0x10840000 0x40000>;
+        reg-names = "cfg", "sram";
+        clocks = <&topckgen 10>, //CLK_TOP_ADSP
+                 <&clk26m>,
+                 <&topckgen 107>, //CLK_TOP_AUDIO_LOCAL_BUS
+                 <&topckgen 136>, //CLK_TOP_MAINPLL_D7_D2
+                 <&scp_adsp 0>, //CLK_SCP_ADSP_AUDIODSP
+                 <&topckgen 34>; //CLK_TOP_AUDIO_H
+        clock-names = "adsp_sel",
+                      "clk26m_ck",
+                      "audio_local_bus",
+                      "mainpll_d7_d2",
+                      "scp_adsp_audiodsp",
+                      "audio_h";
+        memory-region = <&adsp_dma_mem_reserved>,
+                        <&adsp_mem_reserved>;
+        power-domains = <&spm 6>; //MT8195_POWER_DOMAIN_ADSP
+        mbox-names = "rx", "tx";
+        mboxes = <&adsp_mailbox0>, <&adsp_mailbox1>;
     };
index e6bed7d93e2dcc938eec37f83065db6e186ffba2..50f1f08744a1da5c6a90d9f0549f680bc25fed56 100644 (file)
@@ -62,33 +62,33 @@ examples:
     #include <dt-bindings/gpio/gpio.h>
 
     npe: npe@c8006000 {
-         compatible = "intel,ixp4xx-network-processing-engine";
-         reg = <0xc8006000 0x1000>, <0xc8007000 0x1000>, <0xc8008000 0x1000>;
-         #address-cells = <1>;
-         #size-cells = <0>;
+        compatible = "intel,ixp4xx-network-processing-engine";
+        reg = <0xc8006000 0x1000>, <0xc8007000 0x1000>, <0xc8008000 0x1000>;
+        #address-cells = <1>;
+        #size-cells = <0>;
 
-         hss@0 {
-             compatible = "intel,ixp4xx-hss";
-             reg = <0>;
-             intel,npe-handle = <&npe 0>;
-             intel,queue-chl-rxtrig = <&qmgr 12>;
-             intel,queue-chl-txready = <&qmgr 34>;
-             intel,queue-pkt-rx = <&qmgr 13>;
-             intel,queue-pkt-tx = <&qmgr 14>, <&qmgr 15>, <&qmgr 16>, <&qmgr 17>;
-             intel,queue-pkt-rxfree = <&qmgr 18>, <&qmgr 19>, <&qmgr 20>, <&qmgr 21>;
-             intel,queue-pkt-txdone = <&qmgr 22>;
-             cts-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
-             rts-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
-             dcd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
-             dtr-gpios = <&gpio_74 2 GPIO_ACTIVE_LOW>;
-             clk-internal-gpios = <&gpio_74 0 GPIO_ACTIVE_HIGH>;
-         };
+        hss@0 {
+            compatible = "intel,ixp4xx-hss";
+            reg = <0>;
+            intel,npe-handle = <&npe 0>;
+            intel,queue-chl-rxtrig = <&qmgr 12>;
+            intel,queue-chl-txready = <&qmgr 34>;
+            intel,queue-pkt-rx = <&qmgr 13>;
+            intel,queue-pkt-tx = <&qmgr 14>, <&qmgr 15>, <&qmgr 16>, <&qmgr 17>;
+            intel,queue-pkt-rxfree = <&qmgr 18>, <&qmgr 19>, <&qmgr 20>, <&qmgr 21>;
+            intel,queue-pkt-txdone = <&qmgr 22>;
+            cts-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
+            rts-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
+            dcd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
+            dtr-gpios = <&gpio_74 2 GPIO_ACTIVE_LOW>;
+            clk-internal-gpios = <&gpio_74 0 GPIO_ACTIVE_HIGH>;
+        };
 
-         crypto {
-             compatible = "intel,ixp4xx-crypto";
-             intel,npe-handle = <&npe 2>;
-             queue-rx = <&qmgr 30>;
-             queue-txready = <&qmgr 29>;
-         };
+        crypto {
+            compatible = "intel,ixp4xx-crypto";
+            intel,npe-handle = <&npe 2>;
+            queue-rx = <&qmgr 30>;
+            queue-txready = <&qmgr 29>;
+        };
     };
 ...
index c43d17f6e96bf8993115ed744e26b1d58c7ca639..3c44fe607e1281831844376589f2b1dac517c4ec 100644 (file)
@@ -70,6 +70,7 @@ properties:
           - enum:
               - nvidia,tegra194-bpmp
               - nvidia,tegra234-bpmp
+              - nvidia,tegra264-bpmp
           - const: nvidia,tegra186-bpmp
       - const: nvidia,tegra186-bpmp
 
index 8cdaac8011ba499794ebc5b4291b7983c209821b..b913192219e40324c03f4ff1dce955881e7fb3d2 100644 (file)
@@ -32,6 +32,7 @@ properties:
           - qcom,scm-ipq8074
           - qcom,scm-ipq9574
           - qcom,scm-mdm9607
+          - qcom,scm-milos
           - qcom,scm-msm8226
           - qcom,scm-msm8660
           - qcom,scm-msm8916
@@ -198,6 +199,7 @@ allOf:
           compatible:
             contains:
               enum:
+                - qcom,scm-milos
                 - qcom,scm-sm8450
                 - qcom,scm-sm8550
                 - qcom,scm-sm8650
index bbc183200400de7aadbb21fea21911f6f4227b09..3365124c7fd4736922717bd31caa13272f4a4ea6 100644 (file)
@@ -32,6 +32,13 @@ properties:
     items:
       - const: aon
 
+  resets:
+    maxItems: 1
+
+  reset-names:
+    items:
+      - const: gpu-clkgen
+
   "#power-domain-cells":
     const: 1
 
index 77554885a6c49ea858dfc359472a77add02414cb..7d2d3b7aa4b7e175752809b1a8272985a1e465cc 100644 (file)
@@ -316,6 +316,7 @@ examples:
         reg = <0x40000000 0x10000>;
         gpio-controller;
         #gpio-cells = <2>;
+        clocks = <&clk>;
       };
     };
 
index 80833462f620f397913ecf9907acf5c0e411bb30..41b368d54557a5cf6a52bd3110991ef2c9741f24 100644 (file)
@@ -27,7 +27,7 @@ additionalProperties: false
 examples:
   - |
     versal_fpga: versal-fpga {
-         compatible = "xlnx,versal-fpga";
+        compatible = "xlnx,versal-fpga";
     };
 
 ...
index 7d4b6d49e5eea2201ac05ba6d54b1c1721172f26..c0c2bfaa606fb01f7efee1ce7e5d30b1640783f3 100644 (file)
@@ -18,10 +18,14 @@ description: >
 
 properties:
   compatible:
-    enum:
-      - u-blox,neo-6m
-      - u-blox,neo-8
-      - u-blox,neo-m8
+    oneOf:
+      - enum:
+          - u-blox,neo-6m
+          - u-blox,neo-8
+          - u-blox,neo-m8
+      - items:
+          - const: u-blox,neo-m9
+          - const: u-blox,neo-m8
 
   reg:
     description: >
diff --git a/Bindings/gpio/8xxx_gpio.txt b/Bindings/gpio/8xxx_gpio.txt
deleted file mode 100644 (file)
index 973362e..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-GPIO controllers on MPC8xxx SoCs
-
-This is for the non-QE/CPM/GUTs GPIO controllers as found on
-8349, 8572, 8610 and compatible.
-
-Every GPIO controller node must have #gpio-cells property defined,
-this information will be used to translate gpio-specifiers.
-See bindings/gpio/gpio.txt for details of how to specify GPIO
-information for devices.
-
-The GPIO module usually is connected to the SoC's internal interrupt
-controller, see bindings/interrupt-controller/interrupts.txt (the
-interrupt client nodes section) for details how to specify this GPIO
-module's interrupt.
-
-The GPIO module may serve as another interrupt controller (cascaded to
-the SoC's internal interrupt controller).  See the interrupt controller
-nodes section in bindings/interrupt-controller/interrupts.txt for
-details.
-
-Required properties:
-- compatible:          "fsl,<chip>-gpio" followed by "fsl,mpc8349-gpio"
-                       for 83xx, "fsl,mpc8572-gpio" for 85xx, or
-                       "fsl,mpc8610-gpio" for 86xx.
-- #gpio-cells:         Should be two. The first cell is the pin number
-                       and the second cell is used to specify optional
-                       parameters (currently unused).
-- interrupts:          Interrupt mapping for GPIO IRQ.
-- gpio-controller:     Marks the port as GPIO controller.
-
-Optional properties:
-- interrupt-controller:        Empty boolean property which marks the GPIO
-                       module as an IRQ controller.
-- #interrupt-cells:    Should be two.  Defines the number of integer
-                       cells required to specify an interrupt within
-                       this interrupt controller.  The first cell
-                       defines the pin number, the second cell
-                       defines additional flags (trigger type,
-                       trigger polarity).  Note that the available
-                       set of trigger conditions supported by the
-                       GPIO module depends on the actual SoC.
-
-Example of gpio-controller nodes for a MPC8347 SoC:
-
-       gpio1: gpio-controller@c00 {
-               #gpio-cells = <2>;
-               compatible = "fsl,mpc8347-gpio", "fsl,mpc8349-gpio";
-               reg = <0xc00 0x100>;
-               interrupt-parent = <&ipic>;
-               interrupts = <74 0x8>;
-               gpio-controller;
-               interrupt-controller;
-               #interrupt-cells = <2>;
-       };
-
-       gpio2: gpio-controller@d00 {
-               #gpio-cells = <2>;
-               compatible = "fsl,mpc8347-gpio", "fsl,mpc8349-gpio";
-               reg = <0xd00 0x100>;
-               interrupt-parent = <&ipic>;
-               interrupts = <75 0x8>;
-               gpio-controller;
-       };
-
-Example of a peripheral using the GPIO module as an IRQ controller:
-
-       funkyfpga@0 {
-               compatible = "funky-fpga";
-               ...
-               interrupt-parent = <&gpio1>;
-               interrupts = <4 3>;
-       };
diff --git a/Bindings/gpio/abilis,tb10x-gpio.txt b/Bindings/gpio/abilis,tb10x-gpio.txt
deleted file mode 100644 (file)
index ce19c56..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-* Abilis TB10x GPIO controller
-
-Required Properties:
-- compatible: Should be "abilis,tb10x-gpio"
-- reg: Address and length of the register set for the device
-- gpio-controller: Marks the device node as a gpio controller.
-- #gpio-cells: Should be <2>. The first cell is the pin number and the
-  second cell is used to specify optional parameters:
-   - bit 0 specifies polarity (0 for normal, 1 for inverted).
-- abilis,ngpio: the number of GPIO pins this driver controls.
-
-Optional Properties:
-- interrupt-controller: Marks the device node as an interrupt controller.
-- #interrupt-cells: Should be <1>. Interrupts are triggered on both edges.
-- interrupts: Defines the interrupt line connecting this GPIO controller to
-  its parent interrupt controller.
-
-GPIO ranges are specified as described in
-Documentation/devicetree/bindings/gpio/gpio.txt
-
-Example:
-
-       gpioa: gpio@ff140000 {
-               compatible = "abilis,tb10x-gpio";
-               interrupt-controller;
-               #interrupt-cells = <1>;
-               interrupt-parent = <&tb10x_ictl>;
-               interrupts = <27 2>;
-               reg = <0xFF140000 0x1000>;
-               gpio-controller;
-               #gpio-cells = <2>;
-               abilis,ngpio = <3>;
-               gpio-ranges = <&iomux 0 0 0>;
-               gpio-ranges-group-names = "gpioa_pins";
-       };
diff --git a/Bindings/gpio/abilis,tb10x-gpio.yaml b/Bindings/gpio/abilis,tb10x-gpio.yaml
new file mode 100644 (file)
index 0000000..c93ec0f
--- /dev/null
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/abilis,tb10x-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Abilis TB10x GPIO controller
+
+maintainers:
+  - Christian Ruppert <christian.ruppert@abilis.com>
+
+properties:
+  compatible:
+    const: abilis,tb10x-gpio
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  gpio-ranges: true
+
+  gpio-ranges-group-names: true
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+    description: Interrupts are triggered on both edges
+
+  interrupts:
+    maxItems: 1
+
+  abilis,ngpio:
+    description: Number of GPIO pins this driver controls
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - '#gpio-cells'
+  - abilis,ngpio
+
+additionalProperties: false
+
+examples:
+  - |
+    gpio@ff140000 {
+        compatible = "abilis,tb10x-gpio";
+        interrupt-controller;
+        #interrupt-cells = <1>;
+        interrupts = <27 2>;
+        reg = <0xff140000 0x1000>;
+        gpio-controller;
+        #gpio-cells = <2>;
+        abilis,ngpio = <3>;
+        gpio-ranges = <&iomux 0 0 0>;
+        gpio-ranges-group-names = "gpioa_pins";
+    };
diff --git a/Bindings/gpio/altr-pio-1.0.yaml b/Bindings/gpio/altr-pio-1.0.yaml
new file mode 100644 (file)
index 0000000..18afed3
--- /dev/null
@@ -0,0 +1,75 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/altr-pio-1.0.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Altera GPIO controller
+
+maintainers:
+  - Dinh Nguyen <dinguyen@kernel.org>
+  - Marek Vasut <marex@denx.de>
+  - Mathieu Malaterre <malat@debian.org>
+  - Tien Hock Loh <thloh@altera.com>
+
+properties:
+  compatible:
+    const: altr,pio-1.0
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  "#gpio-cells":
+    const: 2
+    description:
+      First cell is the GPIO offset number. Second cell is reserved and
+      currently unused.
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 2
+
+  altr,ngpio:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Width of the GPIO bank.
+    default: 32
+
+  altr,interrupt-type:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: >
+      Specifies the interrupt trigger type synthesized by hardware.
+      Values defined in <dt-bindings/interrupt-controller/irq.h>.
+    enum: [1, 2, 3, 4]
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - "#gpio-cells"
+  - interrupts
+  - interrupt-controller
+  - "#interrupt-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    gpio@ff200000 {
+        compatible = "altr,pio-1.0";
+        reg = <0xff200000 0x10>;
+        interrupts = <45 4>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        gpio-controller;
+        #gpio-cells = <2>;
+        altr,ngpio = <32>;
+        altr,interrupt-type = <IRQ_TYPE_EDGE_RISING>;
+    };
diff --git a/Bindings/gpio/apm,xgene-gpio-sb.yaml b/Bindings/gpio/apm,xgene-gpio-sb.yaml
new file mode 100644 (file)
index 0000000..d205dd7
--- /dev/null
@@ -0,0 +1,94 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/apm,xgene-gpio-sb.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: APM X-Gene Standby GPIO controller
+
+maintainers:
+  - Khuong Dinh <khuong@os.amperecomputing.com>
+
+description: |
+  This is a gpio controller in the standby domain. It also supports interrupt in
+  some particular pins which are sourced to its parent interrupt controller
+  as diagram below:
+                                +-----------------+
+                                | X-Gene standby  |
+                                | GPIO controller +------ GPIO_0
+    +------------+              |                 | ...
+    | Parent IRQ | EXT_INT_0    |                 +------ GPIO_8/EXT_INT_0
+    | controller | (SPI40)      |                 | ...
+    | (GICv2)    +--------------+                 +------ GPIO_[N+8]/EXT_INT_N
+    |            |   ...        |                 |
+    |            | EXT_INT_N    |                 +------ GPIO_[N+9]
+    |            | (SPI[40 + N])|                 | ...
+    |            +--------------+                 +------ GPIO_MAX
+    +------------+              +-----------------+
+
+properties:
+  compatible:
+    const: apm,xgene-gpio-sb
+
+  reg:
+    maxItems: 1
+
+  '#gpio-cells':
+    const: 2
+
+  gpio-controller: true
+
+  interrupts:
+    description:
+      List of interrupt specifiers for EXT_INT_0 through EXT_INT_N. The first
+      entry must correspond to EXT_INT_0.
+
+  '#interrupt-cells':
+    const: 2
+    description:
+      First cell selects EXT_INT_N (0-N), second cell specifies flags
+
+  interrupt-controller: true
+
+  apm,nr-gpios:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Number of GPIO pins
+
+  apm,nr-irqs:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Number of interrupt pins
+
+  apm,irq-start:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Lowest GPIO pin supporting interrupts
+
+required:
+  - compatible
+  - reg
+  - '#gpio-cells'
+  - gpio-controller
+  - interrupts
+  - '#interrupt-cells'
+  - interrupt-controller
+
+additionalProperties: false
+
+examples:
+  - |
+    gpio@17001000 {
+        compatible = "apm,xgene-gpio-sb";
+        reg = <0x17001000 0x400>;
+        #gpio-cells = <2>;
+        gpio-controller;
+        interrupts = <0x0 0x28 0x1>,
+                     <0x0 0x29 0x1>,
+                     <0x0 0x2a 0x1>,
+                     <0x0 0x2b 0x1>,
+                     <0x0 0x2c 0x1>,
+                     <0x0 0x2d 0x1>;
+        #interrupt-cells = <2>;
+        interrupt-controller;
+        apm,nr-gpios = <22>;
+        apm,nr-irqs = <6>;
+        apm,irq-start = <8>;
+    };
diff --git a/Bindings/gpio/apple,smc-gpio.yaml b/Bindings/gpio/apple,smc-gpio.yaml
new file mode 100644 (file)
index 0000000..42b1bc0
--- /dev/null
@@ -0,0 +1,29 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/apple,smc-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple Mac System Management Controller GPIO
+
+maintainers:
+  - Sven Peter <sven@kernel.org>
+
+description:
+  Apple Mac System Management Controller GPIO block.
+
+properties:
+  compatible:
+    const: apple,smc-gpio
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+required:
+  - compatible
+  - gpio-controller
+  - '#gpio-cells'
+
+additionalProperties: false
diff --git a/Bindings/gpio/cavium,octeon-3860-gpio.yaml b/Bindings/gpio/cavium,octeon-3860-gpio.yaml
new file mode 100644 (file)
index 0000000..35155b9
--- /dev/null
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/cavium,octeon-3860-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cavium Octeon 3860 GPIO controller
+
+maintainers:
+  - Bartosz Golaszewski <brgl@bgdev.pl>
+
+properties:
+  compatible:
+    const: cavium,octeon-3860-gpio
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+  interrupts:
+    maxItems: 16
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - '#gpio-cells'
+  - interrupt-controller
+  - '#interrupt-cells'
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    bus {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        gpio@1070000000800 {
+            compatible = "cavium,octeon-3860-gpio";
+            reg = <0x10700 0x00000800 0x0 0x100>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
+            /* The GPIO pin connect to 16 consecutive CUI bits */
+            interrupts = <0 16>, <0 17>, <0 18>, <0 19>,
+                        <0 20>, <0 21>, <0 22>, <0 23>,
+                        <0 24>, <0 25>, <0 26>, <0 27>,
+                        <0 28>, <0 29>, <0 30>, <0 31>;
+        };
+    };
diff --git a/Bindings/gpio/cavium-octeon-gpio.txt b/Bindings/gpio/cavium-octeon-gpio.txt
deleted file mode 100644 (file)
index 9d6dcd3..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-* General Purpose Input Output (GPIO) bus.
-
-Properties:
-- compatible: "cavium,octeon-3860-gpio"
-
-  Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
-
-- reg: The base address of the GPIO unit's register bank.
-
-- gpio-controller: This is a GPIO controller.
-
-- #gpio-cells: Must be <2>.  The first cell is the GPIO pin.
-
-- interrupt-controller: The GPIO controller is also an interrupt
-  controller, many of its pins may be configured as an interrupt
-  source.
-
-- #interrupt-cells: Must be <2>.  The first cell is the GPIO pin
-   connected to the interrupt source.  The second cell is the interrupt
-   triggering protocol and may have one of four values:
-   1 - edge triggered on the rising edge.
-   2 - edge triggered on the falling edge
-   4 - level triggered active high.
-   8 - level triggered active low.
-
-- interrupts: Interrupt routing for each pin.
-
-Example:
-
-       gpio-controller@1070000000800 {
-               #gpio-cells = <2>;
-               compatible = "cavium,octeon-3860-gpio";
-               reg = <0x10700 0x00000800 0x0 0x100>;
-               gpio-controller;
-               /* Interrupts are specified by two parts:
-                * 1) GPIO pin number (0..15)
-                * 2) Triggering (1 - edge rising
-                *                2 - edge falling
-                *                4 - level active high
-                *                8 - level active low)
-                */
-               interrupt-controller;
-               #interrupt-cells = <2>;
-               /* The GPIO pin connect to 16 consecutive CUI bits */
-               interrupts = <0 16>, <0 17>, <0 18>, <0 19>,
-                            <0 20>, <0 21>, <0 22>, <0 23>,
-                            <0 24>, <0 25>, <0 26>, <0 27>,
-                            <0 28>, <0 29>, <0 30>, <0 31>;
-       };
diff --git a/Bindings/gpio/cdns,gpio.txt b/Bindings/gpio/cdns,gpio.txt
deleted file mode 100644 (file)
index 706ef00..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-Cadence GPIO controller bindings
-
-Required properties:
-- compatible: should be "cdns,gpio-r1p02".
-- reg: the register base address and size.
-- #gpio-cells: should be 2.
-       * first cell is the GPIO number.
-       * second cell specifies the GPIO flags, as defined in
-               <dt-bindings/gpio/gpio.h>. Only the GPIO_ACTIVE_HIGH
-               and GPIO_ACTIVE_LOW flags are supported.
-- gpio-controller: marks the device as a GPIO controller.
-- clocks: should contain one entry referencing the peripheral clock driving
-       the GPIO controller.
-
-Optional properties:
-- ngpios: integer number of gpio lines supported by this controller, up to 32.
-- interrupts: interrupt specifier for the controllers interrupt.
-- interrupt-controller: marks the device as an interrupt controller. When
-       defined, interrupts, interrupt-parent and #interrupt-cells
-       are required.
-- interrupt-cells: should be 2.
-       * first cell is the GPIO number you want to use as an IRQ source.
-       * second cell specifies the IRQ type, as defined in
-               <dt-bindings/interrupt-controller/irq.h>.
-               Currently only level sensitive IRQs are supported.
-
-
-Example:
-       gpio0: gpio-controller@fd060000 {
-               compatible = "cdns,gpio-r1p02";
-               reg =<0xfd060000 0x1000>;
-
-               clocks = <&gpio_clk>;
-
-               interrupt-parent = <&gic>;
-               interrupts = <0 5 IRQ_TYPE_LEVEL_HIGH>;
-
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               interrupt-controller;
-               #interrupt-cells = <2>;
-       };
diff --git a/Bindings/gpio/cdns,gpio.yaml b/Bindings/gpio/cdns,gpio.yaml
new file mode 100644 (file)
index 0000000..a84d60b
--- /dev/null
@@ -0,0 +1,84 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/cdns,gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cadence GPIO Controller
+
+maintainers:
+  - Jan Kotas <jank@cadence.com>
+
+properties:
+  compatible:
+    oneOf:
+      - const: cdns,gpio-r1p02
+      - items:
+          - enum:
+              - axiado,ax3000-gpio
+          - const: cdns,gpio-r1p02
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  ngpios:
+    minimum: 1
+    maximum: 32
+
+  gpio-controller: true
+
+  "#gpio-cells":
+    const: 2
+    description: |
+      - First cell is the GPIO line number.
+      - Second cell is flags as defined in <dt-bindings/gpio/gpio.h>,
+        only GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW supported.
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 2
+    description: |
+      - First cell is the GPIO line number used as IRQ.
+      - Second cell is the trigger type, as defined in
+        <dt-bindings/interrupt-controller/irq.h>.
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - gpio-controller
+  - "#gpio-cells"
+
+if:
+  required: [interrupt-controller]
+then:
+  required:
+    - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    gpio0: gpio-controller@fd060000 {
+        compatible = "cdns,gpio-r1p02";
+        reg = <0xfd060000 0x1000>;
+        clocks = <&gpio_clk>;
+
+        interrupt-parent = <&gic>;
+        interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+
+        gpio-controller;
+        #gpio-cells = <2>;
+
+        interrupt-controller;
+        #interrupt-cells = <2>;
+    };
diff --git a/Bindings/gpio/cirrus,clps711x-mctrl-gpio.txt b/Bindings/gpio/cirrus,clps711x-mctrl-gpio.txt
deleted file mode 100644 (file)
index fd42e72..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-* ARM Cirrus Logic CLPS711X SYSFLG1 MCTRL GPIOs
-
-Required properties:
-- compatible: Should contain "cirrus,ep7209-mctrl-gpio".
-- gpio-controller: Marks the device node as a gpio controller.
-- #gpio-cells: Should be two. The first cell is the pin number and
-  the second cell is used to specify the gpio polarity:
-    0 = Active high,
-    1 = Active low.
-
-Example:
-       sysgpio: sysgpio {
-               compatible = "cirrus,ep7312-mctrl-gpio",
-                            "cirrus,ep7209-mctrl-gpio";
-               gpio-controller;
-               #gpio-cells = <2>;
-       };
diff --git a/Bindings/gpio/cirrus,clps711x-mctrl-gpio.yaml b/Bindings/gpio/cirrus,clps711x-mctrl-gpio.yaml
new file mode 100644 (file)
index 0000000..bdffca8
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/cirrus,clps711x-mctrl-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM Cirrus Logic CLPS711X SYSFLG1 MCTRL GPIOs
+
+maintainers:
+  - Alexander Shiyan <shc_work@mail.ru>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: cirrus,ep7312-mctrl-gpio
+          - const: cirrus,ep7209-mctrl-gpio
+      - const: cirrus,ep7209-mctrl-gpio
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  gpio,syscon-dev:
+    description:
+      Phandle and offset of device's specific registers within the syscon state
+      control registers
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    items:
+      - items:
+          - description: phandle to syscon
+          - description: register offset within state control registers
+
+required:
+  - compatible
+  - gpio-controller
+  - '#gpio-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    sysgpio: sysgpio {
+        compatible = "cirrus,ep7312-mctrl-gpio",
+                     "cirrus,ep7209-mctrl-gpio";
+        gpio-controller;
+        #gpio-cells = <2>;
+    };
diff --git a/Bindings/gpio/exar,xra1403.yaml b/Bindings/gpio/exar,xra1403.yaml
new file mode 100644 (file)
index 0000000..053134f
--- /dev/null
@@ -0,0 +1,75 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/exar,xra1403.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: XRA1403 16-bit GPIO Expander with Reset Input
+
+maintainers:
+  - Nandor Han <nandor.han@ge.com>
+
+description: >
+  The XRA1403 is an 16-bit GPIO expander with an SPI interface. Features
+  available:
+
+    - Individually programmable inputs:
+        - Internal pull-up resistors
+        - Polarity inversion
+        - Individual interrupt enable
+        - Rising edge and/or Falling edge interrupt
+        - Input filter
+    - Individually programmable outputs:
+        - Output Level Control
+        - Output Three-State Control
+
+properties:
+  compatible:
+    const: exar,xra1403
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+  reset-gpios:
+    description: Control line for the device reset.
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - '#gpio-cells'
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        gpio@2 {
+            compatible = "exar,xra1403";
+            reg = <2>;
+            spi-max-frequency = <1000000>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
+            reset-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
+        };
+    };
diff --git a/Bindings/gpio/fcs,fxl6408.yaml b/Bindings/gpio/fcs,fxl6408.yaml
deleted file mode 100644 (file)
index b74fa81..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/gpio/fcs,fxl6408.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Fairchild FXL6408 I2C GPIO Expander
-
-maintainers:
-  - Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
-
-properties:
-  compatible:
-    enum:
-      - fcs,fxl6408
-
-  reg:
-    maxItems: 1
-
-  "#gpio-cells":
-    const: 2
-
-  gpio-controller: true
-
-  gpio-line-names:
-    minItems: 1
-    maxItems: 8
-
-patternProperties:
-  "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$":
-    type: object
-    required:
-      - gpio-hog
-
-required:
-  - compatible
-  - reg
-  - gpio-controller
-  - "#gpio-cells"
-
-additionalProperties: false
-
-examples:
-  - |
-    i2c {
-        #address-cells = <1>;
-        #size-cells = <0>;
-
-        gpio_expander_43: gpio-expander@43 {
-            compatible = "fcs,fxl6408";
-            reg = <0x43>;
-            gpio-controller;
-            #gpio-cells = <2>;
-            gpio-line-names = "Wi-Fi_W_DISABLE", "Wi-Fi_WKUP_WLAN",
-                              "PWR_EN_+V3.3_WiFi_N", "PCIe_REF_CLK_EN",
-                              "USB_RESET_N", "USB_BYPASS_N", "Wi-Fi_PDn",
-                              "Wi-Fi_WKUP_BT";
-        };
-    };
index f1b60ab3f356b99f936d7d8bd5e03f9ffabd0f93..4cb2a6b9fabfbec0f5e415ed9fef1dd389caac6b 100644 (file)
@@ -29,6 +29,13 @@ properties:
               - fsl,ls1088a-gpio
               - fsl,ls2080a-gpio
           - const: fsl,qoriq-gpio
+      - items:
+          - enum:
+              - fsl,mpc8308-gpio
+              - fsl,mpc8377-gpio
+              - fsl,mpc8378-gpio
+              - fsl,mpc8379-gpio
+          - const: fsl,mpc8349-gpio
 
   reg:
     maxItems: 1
diff --git a/Bindings/gpio/gateworks,pld-gpio.txt b/Bindings/gpio/gateworks,pld-gpio.txt
deleted file mode 100644 (file)
index d543fd1..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-Gateworks PLD GPIO controller bindings
-
-The GPIO controller should be a child node on an I2C bus.
-
-Required properties:
-- compatible: Should be "gateworks,pld-gpio"
-- reg: I2C slave address
-- gpio-controller: Marks the device node as a GPIO controller.
-- #gpio-cells: Should be <2>. The first cell is the gpio number and
-  the second cell is used to specify optional parameters.
-
-Example:
-
-pld@56 {
-       compatible = "gateworks,pld-gpio";
-       reg = <0x56>;
-       gpio-controller;
-       #gpio-cells = <2>;
-};
diff --git a/Bindings/gpio/gpio-74xx-mmio.txt b/Bindings/gpio/gpio-74xx-mmio.txt
deleted file mode 100644 (file)
index 7bb1a9d..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-* 74XX MMIO GPIO driver
-
-Required properties:
-- compatible: Should contain one of the following:
-   "ti,741g125": for 741G125 (1-bit Input),
-   "ti,741g174": for 741G74 (1-bit Output),
-   "ti,742g125": for 742G125 (2-bit Input),
-   "ti,7474"   : for 7474 (2-bit Output),
-   "ti,74125"  : for 74125 (4-bit Input),
-   "ti,74175"  : for 74175 (4-bit Output),
-   "ti,74365"  : for 74365 (6-bit Input),
-   "ti,74174"  : for 74174 (6-bit Output),
-   "ti,74244"  : for 74244 (8-bit Input),
-   "ti,74273"  : for 74273 (8-bit Output),
-   "ti,741624" : for 741624 (16-bit Input),
-   "ti,7416374": for 7416374 (16-bit Output).
-- reg: Physical base address and length where IC resides.
-- gpio-controller: Marks the device node as a gpio controller.
-- #gpio-cells: Should be two. The first cell is the pin number and
-   the second cell is used to specify the GPIO polarity:
-    0 = Active High,
-    1 = Active Low.
-
-Example:
-       ctrl: gpio@30008004 {
-               compatible = "ti,74174";
-               reg = <0x30008004 0x1>;
-               gpio-controller;
-               #gpio-cells = <2>;
-       };
diff --git a/Bindings/gpio/gpio-altera.txt b/Bindings/gpio/gpio-altera.txt
deleted file mode 100644 (file)
index 2a80e27..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-Altera GPIO controller bindings
-
-Required properties:
-- compatible:
-  - "altr,pio-1.0"
-- reg: Physical base address and length of the controller's registers.
-- #gpio-cells : Should be 2
-  - The first cell is the gpio offset number.
-  - The second cell is reserved and is currently unused.
-- gpio-controller : Marks the device node as a GPIO controller.
-- interrupt-controller: Mark the device node as an interrupt controller
-- #interrupt-cells : Should be 2. The interrupt type is fixed in the hardware.
-  - The first cell is the GPIO offset number within the GPIO controller.
-  - The second cell is the interrupt trigger type and level flags.
-- interrupts: Specify the interrupt.
-- altr,interrupt-type: Specifies the interrupt trigger type the GPIO
-  hardware is synthesized. This field is required if the Altera GPIO controller
-  used has IRQ enabled as the interrupt type is not software controlled,
-  but hardware synthesized. Required if GPIO is used as an interrupt
-  controller. The value is defined in <dt-bindings/interrupt-controller/irq.h>
-  Only the following flags are supported:
-    IRQ_TYPE_EDGE_RISING
-    IRQ_TYPE_EDGE_FALLING
-    IRQ_TYPE_EDGE_BOTH
-    IRQ_TYPE_LEVEL_HIGH
-
-Optional properties:
-- altr,ngpio: Width of the GPIO bank. This defines how many pins the
-  GPIO device has. Ranges between 1-32. Optional and defaults to 32 if not
-  specified.
-
-Example:
-
-gpio_altr: gpio@ff200000 {
-       compatible = "altr,pio-1.0";
-       reg = <0xff200000 0x10>;
-       interrupts = <0 45 4>;
-       altr,ngpio = <32>;
-       altr,interrupt-type = <IRQ_TYPE_EDGE_RISING>;
-       #gpio-cells = <2>;
-       gpio-controller;
-       #interrupt-cells = <2>;
-       interrupt-controller;
-};
diff --git a/Bindings/gpio/gpio-ath79.txt b/Bindings/gpio/gpio-ath79.txt
deleted file mode 100644 (file)
index cf71f3e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-Binding for Qualcomm Atheros AR7xxx/AR9xxx GPIO controller
-
-Required properties:
-- compatible: has to be "qca,<soctype>-gpio" and one of the following
-  fallbacks:
-  - "qca,ar7100-gpio"
-  - "qca,ar9340-gpio"
-- reg: Base address and size of the controllers memory area
-- gpio-controller : Marks the device node as a GPIO controller.
-- #gpio-cells : Should be two. The first cell is the pin number and the
-  second cell is used to specify optional parameters.
-- ngpios: Should be set to the number of GPIOs available on the SoC.
-
-Optional properties:
-- interrupts: Interrupt specifier for the controllers interrupt.
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode interrupt
-                    source, should be 2
-
-Please refer to interrupts.txt in this directory for details of the common
-Interrupt Controllers bindings used by client devices.
-
-Example:
-
-       gpio@18040000 {
-               compatible = "qca,ar9132-gpio", "qca,ar7100-gpio";
-               reg = <0x18040000 0x30>;
-               interrupts = <2>;
-
-               ngpios = <22>;
-
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               interrupt-controller;
-               #interrupt-cells = <2>;
-       };
diff --git a/Bindings/gpio/gpio-clps711x.txt b/Bindings/gpio/gpio-clps711x.txt
deleted file mode 100644 (file)
index 0a304ad..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-Cirrus Logic CLPS711X GPIO controller
-
-Required properties:
-- compatible: Should be "cirrus,ep7209-gpio"
-- reg: Physical base GPIO controller registers location and length.
-  There should be two registers, first is DATA register, the second
-  is DIRECTION.
-- gpio-controller: Marks the device node as a gpio controller.
-- #gpio-cells: Should be two. The first cell is the pin number and
-  the second cell is used to specify the gpio polarity:
-    0 = active high
-    1 = active low
-
-Note: Each GPIO port should have an alias correctly numbered in "aliases"
-node.
-
-Example:
-
-aliases {
-       gpio0 = &porta;
-};
-
-porta: gpio@80000000 {
-       compatible = "cirrus,ep7312-gpio","cirrus,ep7209-gpio";
-       reg = <0x80000000 0x1>, <0x80000040 0x1>;
-       gpio-controller;
-       #gpio-cells = <2>;
-};
diff --git a/Bindings/gpio/gpio-dsp-keystone.txt b/Bindings/gpio/gpio-dsp-keystone.txt
deleted file mode 100644 (file)
index 0423699..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-Keystone 2 DSP GPIO controller bindings
-
-HOST OS userland running on ARM can send interrupts to DSP cores using
-the DSP GPIO controller IP. It provides 28 IRQ signals per each DSP core.
-This is one of the component used by the IPC mechanism used on Keystone SOCs.
-
-For example TCI6638K2K SoC has 8 DSP GPIO controllers:
- - 8 for C66x CorePacx CPUs 0-7
-
-Keystone 2 DSP GPIO controller has specific features:
-- each GPIO can be configured only as output pin;
-- setting GPIO value to 1 causes IRQ generation on target DSP core;
-- reading pin value returns 0 - if IRQ was handled or 1 - IRQ is still
-  pending.
-
-Required Properties:
-- compatible: should be "ti,keystone-dsp-gpio"
-- ti,syscon-dev: phandle/offset pair. The phandle to syscon used to
-  access device state control registers and the offset of device's specific
-  registers within device state control registers range.
-- gpio-controller: Marks the device node as a gpio controller.
-- #gpio-cells: Should be 2.
-
-Please refer to gpio.txt in this directory for details of the common GPIO
-bindings used by client devices.
-
-Example:
-       dspgpio0: keystone_dsp_gpio@2620240 {
-               compatible = "ti,keystone-dsp-gpio";
-               ti,syscon-dev = <&devctrl 0x240>;
-               gpio-controller;
-               #gpio-cells = <2>;
-       };
-
-       dsp0: dsp0 {
-               compatible = "linux,rproc-user";
-               ...
-               kick-gpio = <&dspgpio0 27>;
-       };
diff --git a/Bindings/gpio/gpio-lp3943.txt b/Bindings/gpio/gpio-lp3943.txt
deleted file mode 100644 (file)
index 80fcb7d..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-TI/National Semiconductor LP3943 GPIO controller
-
-Required properties:
-  - compatible: "ti,lp3943-gpio"
-  - gpio-controller: Marks the device node as a GPIO controller.
-  - #gpio-cells: Should be 2. See gpio.txt in this directory for a
-                 description of the cells format.
-
-Example:
-Simple LED controls with LP3943 GPIO controller
-
-&i2c4 {
-       lp3943@60 {
-               compatible = "ti,lp3943";
-               reg = <0x60>;
-
-               gpioex: gpio {
-                       compatible = "ti,lp3943-gpio";
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-       };
-};
-
-leds {
-       compatible = "gpio-leds";
-       indicator1 {
-               label = "indi1";
-               gpios = <&gpioex 9 GPIO_ACTIVE_LOW>;
-       };
-
-       indicator2 {
-               label = "indi2";
-               gpios = <&gpioex 10 GPIO_ACTIVE_LOW>;
-               default-state = "off";
-       };
-};
diff --git a/Bindings/gpio/gpio-max3191x.txt b/Bindings/gpio/gpio-max3191x.txt
deleted file mode 100644 (file)
index b3a6444..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-GPIO driver for Maxim MAX3191x industrial serializer
-
-Required properties:
- - compatible:         Must be one of:
-                       "maxim,max31910"
-                       "maxim,max31911"
-                       "maxim,max31912"
-                       "maxim,max31913"
-                       "maxim,max31953"
-                       "maxim,max31963"
- - reg:                Chip select number.
- - gpio-controller:    Marks the device node as a GPIO controller.
- - #gpio-cells:        Should be two. For consumer use see gpio.txt.
-
-Optional properties:
- - #daisy-chained-devices:
-                       Number of chips in the daisy-chain (default is 1).
- - maxim,modesel-gpios: GPIO pins to configure modesel of each chip.
-                       The number of GPIOs must equal "#daisy-chained-devices"
-                       (if each chip is driven by a separate pin) or 1
-                       (if all chips are wired to the same pin).
- - maxim,fault-gpios:  GPIO pins to read fault of each chip.
-                       The number of GPIOs must equal "#daisy-chained-devices"
-                       or 1.
- - maxim,db0-gpios:    GPIO pins to configure debounce of each chip.
-                       The number of GPIOs must equal "#daisy-chained-devices"
-                       or 1.
- - maxim,db1-gpios:    GPIO pins to configure debounce of each chip.
-                       The number of GPIOs must equal "maxim,db0-gpios".
- - maxim,modesel-8bit: Boolean whether the modesel pin of the chips is
-                       pulled high (8-bit mode).  Use this if the modesel pin
-                       is hardwired and consequently "maxim,modesel-gpios"
-                       cannot be specified.  By default if neither this nor
-                       "maxim,modesel-gpios" is given, the driver assumes
-                       that modesel is pulled low (16-bit mode).
- - maxim,ignore-undervoltage:
-                       Boolean whether to ignore undervoltage alarms signaled
-                       by the "maxim,fault-gpios" or by the status byte
-                       (in 16-bit mode).  Use this if the chips are powered
-                       through 5VOUT instead of VCC24V, in which case they
-                       will constantly signal undervoltage.
-
-For other required and optional properties of SPI slave nodes please refer to
-../spi/spi-bus.txt.
-
-Example:
-       gpio@0 {
-               compatible = "maxim,max31913";
-               reg = <0>;
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               maxim,modesel-gpios = <&gpio2 23>;
-               maxim,fault-gpios   = <&gpio2 24 GPIO_ACTIVE_LOW>;
-               maxim,db0-gpios     = <&gpio2 25>;
-               maxim,db1-gpios     = <&gpio2 26>;
-
-               spi-max-frequency = <25000000>;
-       };
diff --git a/Bindings/gpio/gpio-max77620.txt b/Bindings/gpio/gpio-max77620.txt
deleted file mode 100644 (file)
index 410e716..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-GPIO driver for MAX77620 Power management IC from Maxim Semiconductor.
-
-Device has 8 GPIO pins which can be configured as GPIO as well as the
-special IO functions.
-
-Required properties:
--------------------
-- gpio-controller :    Marks the device node as a gpio controller.
-- #gpio-cells :        Should be two.  The first cell is the pin number and
-                       the second cell is used to specify the gpio polarity:
-                               0 = active high
-                               1 = active low
-For more details, please refer generic GPIO DT binding document
-<devicetree/bindings/gpio/gpio.txt>.
-
-Example:
---------
-#include <dt-bindings/mfd/max77620.h>
-...
-max77620@3c {
-       compatible = "maxim,max77620";
-
-       gpio-controller;
-       #gpio-cells = <2>;
-};
diff --git a/Bindings/gpio/gpio-mm-lantiq.txt b/Bindings/gpio/gpio-mm-lantiq.txt
deleted file mode 100644 (file)
index f93d514..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-Lantiq SoC External Bus memory mapped GPIO controller
-
-By attaching hardware latches to the EBU it is possible to create output
-only gpios. This driver configures a special memory address, which when
-written to outputs 16 bit to the latches.
-
-The node describing the memory mapped GPIOs needs to be a child of the node
-describing the "lantiq,localbus".
-
-Required properties:
-- compatible : Should be "lantiq,gpio-mm-lantiq"
-- reg : Address and length of the register set for the device
-- #gpio-cells : Should be two.  The first cell is the pin number and
-  the second cell is used to specify optional parameters (currently
-  unused).
-- gpio-controller : Marks the device node as a gpio controller.
-
-Optional properties:
-- lantiq,shadow : The default value that we shall assume as already set on the
-  shift register cascade.
-
-Example:
-
-localbus@0 {
-       #address-cells = <2>;
-       #size-cells = <1>;
-       ranges = <0 0 0x0 0x3ffffff /* addrsel0 */
-               1 0 0x4000000 0x4000010>; /* addsel1 */
-       compatible = "lantiq,localbus", "simple-bus";
-
-       gpio_mm0: gpio@4000000 {
-               compatible = "lantiq,gpio-mm";
-               reg = <1 0x0 0x10>;
-               gpio-controller;
-               #gpio-cells = <2>;
-               lantiq,shadow = <0x77f>
-       };
-}
diff --git a/Bindings/gpio/gpio-moxtet.txt b/Bindings/gpio/gpio-moxtet.txt
deleted file mode 100644 (file)
index 410759d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-Turris Mox Moxtet GPIO expander via Moxtet bus
-
-Required properties:
- - compatible          : Should be "cznic,moxtet-gpio".
- - gpio-controller     : Marks the device node as a GPIO controller.
- - #gpio-cells         : Should be two. For consumer use see gpio.txt.
-
-Other properties are required for a Moxtet bus device, please refer to
-Documentation/devicetree/bindings/bus/moxtet.txt.
-
-Example:
-
-       moxtet_sfp: gpio@0 {
-               compatible = "cznic,moxtet-gpio";
-               gpio-controller;
-               #gpio-cells = <2>;
-               reg = <0>;
-       }
diff --git a/Bindings/gpio/gpio-palmas.txt b/Bindings/gpio/gpio-palmas.txt
deleted file mode 100644 (file)
index 08b5b52..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-Palmas GPIO controller bindings
-
-Required properties:
-- compatible:
-  - "ti,palams-gpio" for palma series of the GPIO controller
-  - "ti,tps80036-gpio" for Palma series device TPS80036.
-  - "ti,tps65913-gpio" for palma series device TPS65913.
-  - "ti,tps65914-gpio" for palma series device TPS65914.
-- #gpio-cells : Should be two.
-  - first cell is the gpio pin number
-  - second cell is used to specify the gpio polarity:
-      0 = active high
-      1 = active low
-- gpio-controller : Marks the device node as a GPIO controller.
-
-Note: This gpio node will be sub node of palmas node.
-
-Example:
-       palmas: tps65913@58 {
-               :::::::::::
-               palmas_gpio: palmas_gpio {
-                       compatible = "ti,palmas-gpio";
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-               :::::::::::
-       };
diff --git a/Bindings/gpio/gpio-pca9570.yaml b/Bindings/gpio/gpio-pca9570.yaml
deleted file mode 100644 (file)
index 6f73961..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/gpio/gpio-pca9570.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: PCA9570 I2C GPO expander
-
-maintainers:
-  - Sungbo Eo <mans0n@gorani.run>
-
-properties:
-  compatible:
-    enum:
-      - dlg,slg7xl45106
-      - nxp,pca9570
-      - nxp,pca9571
-
-  reg:
-    maxItems: 1
-
-  gpio-controller: true
-
-  '#gpio-cells':
-    const: 2
-
-  gpio-line-names:
-    minItems: 4
-    maxItems: 8
-
-  label:
-    description: A descriptive name for this device.
-
-required:
-  - compatible
-  - reg
-  - gpio-controller
-  - "#gpio-cells"
-
-additionalProperties: false
-
-examples:
-  - |
-    i2c {
-        #address-cells = <1>;
-        #size-cells = <0>;
-
-        gpio@24 {
-            compatible = "nxp,pca9570";
-            reg = <0x24>;
-            gpio-controller;
-            #gpio-cells = <2>;
-        };
-    };
-
-...
index 4d3f52f8d1b8272987de6c4ad5243e877ddcd412..12134c737ad8fb85980ecee225b8bcf5d1bf6b41 100644 (file)
@@ -68,6 +68,7 @@ properties:
               - ti,pca9536
               - ti,tca6408
               - ti,tca6416
+              - ti,tca6418
               - ti,tca6424
               - ti,tca9535
               - ti,tca9538
diff --git a/Bindings/gpio/gpio-pisosr.txt b/Bindings/gpio/gpio-pisosr.txt
deleted file mode 100644 (file)
index fba3c61..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-Generic Parallel-in/Serial-out Shift Register GPIO Driver
-
-This binding describes generic parallel-in/serial-out shift register
-devices that can be used for GPI (General Purpose Input). This includes
-SN74165 serial-out shift registers and the SN65HVS88x series of
-industrial serializers.
-
-Required properties:
- - compatible          : Should be "pisosr-gpio".
- - gpio-controller     : Marks the device node as a GPIO controller.
- - #gpio-cells         : Should be two. For consumer use see gpio.txt.
-
-Optional properties:
- - ngpios              : Number of used GPIO lines (0..n-1), default is 8.
- - load-gpios          : GPIO pin specifier attached to load enable, this
-                         pin is pulsed before reading from the device to
-                         load input pin values into the device.
-
-For other required and optional properties of SPI slave
-nodes please refer to ../spi/spi-bus.txt.
-
-Example:
-
-       gpio@0 {
-               compatible = "ti,sn65hvs882", "pisosr-gpio";
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               load-gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
-
-               reg = <0>;
-               spi-max-frequency = <1000000>;
-               spi-cpol;
-       };
diff --git a/Bindings/gpio/gpio-tpic2810.yaml b/Bindings/gpio/gpio-tpic2810.yaml
deleted file mode 100644 (file)
index 157969b..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/gpio/gpio-tpic2810.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: TPIC2810 GPIO controller
-
-maintainers:
-  - Aswath Govindraju <a-govindraju@ti.com>
-
-properties:
-  compatible:
-    enum:
-      - ti,tpic2810
-
-  reg:
-    maxItems: 1
-
-  gpio-controller: true
-
-  "#gpio-cells":
-    const: 2
-
-  gpio-line-names:
-    minItems: 1
-    maxItems: 32
-
-required:
-  - compatible
-  - reg
-  - gpio-controller
-  - "#gpio-cells"
-
-additionalProperties: false
-
-examples:
-  - |
-    #include <dt-bindings/gpio/gpio.h>
-
-    i2c {
-        #address-cells = <1>;
-        #size-cells = <0>;
-        gpio@60 {
-            compatible = "ti,tpic2810";
-            reg = <0x60>;
-            gpio-controller;
-            #gpio-cells = <2>;
-            gpio-line-names = "LED A", "LED B", "LED C";
-        };
-    };
diff --git a/Bindings/gpio/gpio-ts4800.txt b/Bindings/gpio/gpio-ts4800.txt
deleted file mode 100644 (file)
index 92ea9c8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-* TS-4800 FPGA's GPIO controller bindings
-
-Required properties:
-- compatible: Must be "technologic,ts4800-gpio".
-- #gpio-cells: Should be two. The first cell is the pin number.
-- reg: Physical base address of the controller and length
-       of memory mapped region.
-
-Optional property:
-- ngpios: See "gpio.txt"
-
-Example:
-
-gpio1: gpio {
-       compatible = "technologic,ts4800-gpio";
-       reg = <0x10020 0x6>;
-       ngpios = <8>;
-       gpio-controller;
-       #gpio-cells = <2>;
-};
diff --git a/Bindings/gpio/gpio-ts4900.txt b/Bindings/gpio/gpio-ts4900.txt
deleted file mode 100644 (file)
index 3f8e71b..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-* Technologic Systems I2C-FPGA's GPIO controller bindings
-
-This bindings describes the GPIO controller for Technologic's FPGA core.
-TS-4900's FPGA encodes the GPIO state on 3 bits, whereas the TS-7970's FPGA
-uses 2 bits: it doesn't use a dedicated input bit.
-
-Required properties:
-- compatible: Should be one of the following
-               "technologic,ts4900-gpio"
-               "technologic,ts7970-gpio"
-- reg: Physical base address of the controller and length
-       of memory mapped region.
-- #gpio-cells: Should be two. The first cell is the pin number.
-- gpio-controller: Marks the device node as a gpio controller.
-
-Optional property:
-- ngpios: Number of GPIOs this controller is instantiated with,
-  the default is 32. See gpio.txt for more details.
-
-Example:
-
-&i2c2 {
-       gpio8: gpio@28 {
-               compatible = "technologic,ts4900-gpio";
-               reg = <0x28>;
-               #gpio-cells = <2>;
-               gpio-controller;
-               ngpios = <32>;
-       };
-};
diff --git a/Bindings/gpio/gpio-twl4030.txt b/Bindings/gpio/gpio-twl4030.txt
deleted file mode 100644 (file)
index 66788fd..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-twl4030 GPIO controller bindings
-
-Required properties:
-- compatible:
-  - "ti,twl4030-gpio" for twl4030 GPIO controller
-- #gpio-cells : Should be two.
-  - first cell is the pin number
-  - second cell is used to specify optional parameters (unused)
-- gpio-controller : Marks the device node as a GPIO controller.
-- #interrupt-cells : Should be 2.
-- interrupt-controller: Mark the device node as an interrupt controller
-  The first cell is the GPIO number.
-  The second cell is not used.
-- ti,use-leds : Enables LEDA and LEDB outputs if set
-- ti,debounce : if n-th bit is set, debounces GPIO-n
-- ti,mmc-cd : if n-th bit is set, GPIO-n controls VMMC(n+1)
-- ti,pullups : if n-th bit is set, set a pullup on GPIO-n
-- ti,pulldowns : if n-th bit is set, set a pulldown on GPIO-n
-
-Example:
-
-twl_gpio: gpio {
-    compatible = "ti,twl4030-gpio";
-    #gpio-cells = <2>;
-    gpio-controller;
-    #interrupt-cells = <2>;
-    interrupt-controller;
-    ti,use-leds;
-};
diff --git a/Bindings/gpio/gpio-xgene-sb.txt b/Bindings/gpio/gpio-xgene-sb.txt
deleted file mode 100644 (file)
index 7ddf292..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-APM X-Gene Standby GPIO controller bindings
-
-This is a gpio controller in the standby domain. It also supports interrupt in
-some particular pins which are sourced to its parent interrupt controller
-as diagram below:
-                            +-----------------+
-                            | X-Gene standby  |
-                            | GPIO controller +------ GPIO_0
-+------------+              |                 | ...
-| Parent IRQ | EXT_INT_0    |                 +------ GPIO_8/EXT_INT_0
-| controller | (SPI40)      |                 | ...
-| (GICv2)    +--------------+                 +------ GPIO_[N+8]/EXT_INT_N
-|            |   ...        |                 |
-|            | EXT_INT_N    |                 +------ GPIO_[N+9]
-|            | (SPI[40 + N])|                 | ...
-|            +--------------+                 +------ GPIO_MAX
-+------------+              +-----------------+
-
-Required properties:
-- compatible: "apm,xgene-gpio-sb" for the X-Gene Standby GPIO controller
-- reg: Physical base address and size of the controller's registers
-- #gpio-cells: Should be two.
-       - first cell is the pin number
-       - second cell is used to specify the gpio polarity:
-               0 = active high
-               1 = active low
-- gpio-controller: Marks the device node as a GPIO controller.
-- interrupts: The EXT_INT_0 parent interrupt resource must be listed first.
-- interrupt-cells: Should be two.
-       - first cell is 0-N corresponding for EXT_INT_0 to EXT_INT_N.
-       - second cell is used to specify flags.
-- interrupt-controller: Marks the device node as an interrupt controller.
-- apm,nr-gpios: Optional, specify number of gpios pin.
-- apm,nr-irqs: Optional, specify number of interrupt pins.
-- apm,irq-start: Optional, specify lowest gpio pin support interrupt.
-
-Example:
-       sbgpio: gpio@17001000{
-               compatible = "apm,xgene-gpio-sb";
-               reg = <0x0 0x17001000 0x0 0x400>;
-               #gpio-cells = <2>;
-               gpio-controller;
-               interrupts =    <0x0 0x28 0x1>,
-                               <0x0 0x29 0x1>,
-                               <0x0 0x2a 0x1>,
-                               <0x0 0x2b 0x1>,
-                               <0x0 0x2c 0x1>,
-                               <0x0 0x2d 0x1>;
-               interrupt-parent = <&gic>;
-               #interrupt-cells = <2>;
-               interrupt-controller;
-               apm,nr-gpios = <22>;
-               apm,nr-irqs = <6>;
-               apm,irq-start = <8>;
-       };
-
-       testuser {
-               compatible = "example,testuser";
-               /* Use the GPIO_13/EXT_INT_5 line as an active high triggered
-                * level interrupt
-                */
-               interrupts = <5 4>;
-               interrupt-parent = <&sbgpio>;
-       };
diff --git a/Bindings/gpio/gpio-xgene.txt b/Bindings/gpio/gpio-xgene.txt
deleted file mode 100644 (file)
index 86dbb05..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-APM X-Gene SoC GPIO controller bindings
-
-This is a gpio controller that is part of the flash controller.
-This gpio controller controls a total of 48 gpios.
-
-Required properties:
-- compatible: "apm,xgene-gpio" for X-Gene GPIO controller
-- reg: Physical base address and size of the controller's registers
-- #gpio-cells: Should be two.
-       - first cell is the pin number
-       - second cell is used to specify the gpio polarity:
-               0 = active high
-               1 = active low
-- gpio-controller: Marks the device node as a GPIO controller.
-
-Example:
-       gpio0: gpio0@1701c000 {
-               compatible = "apm,xgene-gpio";
-               reg = <0x0 0x1701c000 0x0 0x40>;
-               gpio-controller;
-               #gpio-cells = <2>;
-       };
diff --git a/Bindings/gpio/gpio-xra1403.txt b/Bindings/gpio/gpio-xra1403.txt
deleted file mode 100644 (file)
index e13cc39..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-GPIO Driver for XRA1403 16-BIT GPIO Expander With Reset Input from EXAR
-
-The XRA1403 is an 16-bit GPIO expander with an SPI interface. Features available:
-       - Individually programmable inputs:
-               - Internal pull-up resistors
-               - Polarity inversion
-               - Individual interrupt enable
-               - Rising edge and/or Falling edge interrupt
-               - Input filter
-       - Individually programmable outputs
-               - Output Level Control
-               - Output Three-State Control
-
-Properties
-----------
-Check documentation for SPI and GPIO controllers regarding properties needed to configure the node.
-
-       - compatible = "exar,xra1403".
-       - reg - SPI id of the device.
-       - gpio-controller - marks the node as gpio.
-       - #gpio-cells - should be two where the first cell is the pin number
-               and the second one is used for optional parameters.
-
-Optional properties:
--------------------
-       - reset-gpios: in case available used to control the device reset line.
-       - interrupt-controller - marks the node as interrupt controller.
-       - #interrupt-cells - should be two and represents the number of cells
-               needed to encode interrupt source.
-
-Example
---------
-
-       gpioxra0: gpio@2 {
-               compatible = "exar,xra1403";
-               reg = <2>;
-
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               interrupt-controller;
-               #interrupt-cells = <2>;
-
-               reset-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
-               spi-max-frequency = <1000000>;
-       };
diff --git a/Bindings/gpio/ibm,ppc4xx-gpio.txt b/Bindings/gpio/ibm,ppc4xx-gpio.txt
deleted file mode 100644 (file)
index d58b395..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-* IBM/AMCC/APM GPIO Controller for PowerPC 4XX series and compatible SoCs
-
-All GPIOs are pin-shared with other functions. DCRs control whether a
-particular pin that has GPIO capabilities acts as a GPIO or is used for
-another purpose. GPIO outputs are separately programmable to emulate
-an open-drain driver.
-
-Required properties:
-       - compatible: must be "ibm,ppc4xx-gpio"
-       - reg: address and length of the register set for the device
-       - #gpio-cells: must be set to 2. The first cell is the pin number
-               and the second cell is used to specify the gpio polarity:
-               0 = active high
-               1 = active low
-       - gpio-controller: marks the device node as a gpio controller.
-
-Example:
-
-GPIO0: gpio@ef600b00 {
-       compatible = "ibm,ppc4xx-gpio";
-       reg = <0xef600b00 0x00000048>;
-       #gpio-cells = <2>;
-       gpio-controller;
-};
diff --git a/Bindings/gpio/lacie,netxbig-gpio-ext.yaml b/Bindings/gpio/lacie,netxbig-gpio-ext.yaml
new file mode 100644 (file)
index 0000000..42021ee
--- /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/gpio/lacie,netxbig-gpio-ext.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NetxBig GPIO extension bus
+
+maintainers:
+  - Simon Guinot <simon.guinot@sequanux.org>
+
+description: >
+  GPIO extension bus found on some LaCie/Seagate boards
+  (Example: 2Big/5Big Network v2, 2Big NAS).
+
+properties:
+  compatible:
+    items:
+      - const: lacie,netxbig-gpio-ext
+
+  addr-gpios:
+    description: GPIOs representing the address register (LSB->MSB).
+    items:
+      - description: bit 0 (LSB)
+      - description: bit 1
+      - description: bit 2 (MSB)
+
+  data-gpios:
+    description: GPIOs representing the data register (LSB->MSB).
+    items:
+      - description: bit 0 (LSB)
+      - description: bit 1
+      - description: bit 2 (MSB)
+
+  enable-gpio:
+    description: Latches the new configuration (address, data) on raising edge.
+    maxItems: 1
+
+required:
+  - compatible
+  - addr-gpios
+  - data-gpios
+  - enable-gpio
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    gpio {
+        compatible = "lacie,netxbig-gpio-ext";
+        addr-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH
+                      &gpio1 16 GPIO_ACTIVE_HIGH
+                      &gpio1 17 GPIO_ACTIVE_HIGH>;
+        data-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH
+                      &gpio1 13 GPIO_ACTIVE_HIGH
+                      &gpio1 14 GPIO_ACTIVE_HIGH>;
+        enable-gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
+    };
diff --git a/Bindings/gpio/lantiq,gpio-mm-lantiq.yaml b/Bindings/gpio/lantiq,gpio-mm-lantiq.yaml
new file mode 100644 (file)
index 0000000..eaf53a8
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/lantiq,gpio-mm-lantiq.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Lantiq SoC External Bus memory mapped GPIO controller
+
+maintainers:
+  - John Crispin <john@phrozen.org>
+
+description: |
+  By attaching hardware latches to the EBU it is possible to create output
+  only gpios. This driver configures a special memory address, which when
+  written to outputs 16 bit to the latches.
+
+  The node describing the memory mapped GPIOs needs to be a child of the node
+  describing the "lantiq,localbus".
+
+properties:
+  compatible:
+    enum:
+      - lantiq,gpio-mm-lantiq
+      - lantiq,gpio-mm
+
+  reg:
+    maxItems: 1
+
+  '#gpio-cells':
+    const: 2
+
+  gpio-controller: true
+
+  lantiq,shadow:
+    description: The default value that we shall assume as already set on the shift register cascade.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - '#gpio-cells'
+  - gpio-controller
+
+additionalProperties: false
+
+examples:
+  - |
+    gpio@4000000 {
+        compatible = "lantiq,gpio-mm-lantiq";
+        reg = <0x4000000 0x10>;
+        gpio-controller;
+        #gpio-cells = <2>;
+        lantiq,shadow = <0x77f>;
+    };
diff --git a/Bindings/gpio/loongson,ls1x-gpio.yaml b/Bindings/gpio/loongson,ls1x-gpio.yaml
deleted file mode 100644 (file)
index 1a472c0..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/gpio/loongson,ls1x-gpio.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Loongson-1 GPIO controller
-
-maintainers:
-  - Keguang Zhang <keguang.zhang@gmail.com>
-
-properties:
-  compatible:
-    const: loongson,ls1x-gpio
-
-  reg:
-    maxItems: 1
-
-  gpio-controller: true
-
-  "#gpio-cells":
-    const: 2
-
-  ngpios:
-    minimum: 1
-    maximum: 32
-
-required:
-  - compatible
-  - reg
-  - gpio-controller
-  - "#gpio-cells"
-  - ngpios
-
-additionalProperties: false
-
-examples:
-  - |
-    gpio0: gpio@1fd010c0 {
-        compatible = "loongson,ls1x-gpio";
-        reg = <0x1fd010c0 0x4>;
-
-        gpio-controller;
-        #gpio-cells = <2>;
-
-        ngpios = <32>;
-    };
-
-...
diff --git a/Bindings/gpio/maxim,max31910.yaml b/Bindings/gpio/maxim,max31910.yaml
new file mode 100644 (file)
index 0000000..82a190a
--- /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/gpio/maxim,max31910.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Maxim MAX3191x GPIO serializer
+
+maintainers:
+  - Lukas Wunner <lukas@wunner.de>
+
+properties:
+  compatible:
+    enum:
+      - maxim,max31910
+      - maxim,max31911
+      - maxim,max31912
+      - maxim,max31913
+      - maxim,max31953
+      - maxim,max31963
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  '#daisy-chained-devices':
+    description: Number of chips in the daisy-chain.
+    default: 1
+
+  maxim,modesel-gpios:
+    description:
+      GPIO pins to configure modesel of each chip. The number of GPIOs must
+      equal "#daisy-chained-devices" (if each chip is driven by a separate pin)
+      or 1 (if all chips are wired to the same pin).
+
+  maxim,fault-gpios:
+    description:
+      GPIO pins to read fault of each chip. The number of GPIOs must equal
+      "#daisy-chained-devices" or 1.
+
+  maxim,db0-gpios:
+    description:
+      GPIO pins to configure debounce of each chip. The number of GPIOs must
+      equal "#daisy-chained-devices" or 1.
+
+  maxim,db1-gpios:
+    description:
+      GPIO pins to configure debounce of each chip. The number of GPIOs must
+      equal "maxim,db0-gpios".
+
+  maxim,modesel-8bit:
+    description:
+      Boolean whether the modesel pin of the chips is pulled high (8-bit mode).
+      Use this if the modesel pin is hardwired and consequently
+      "maxim,modesel-gpios" cannot be specified. By default if neither this nor
+      "maxim,modesel-gpios" is given, the driver assumes that modesel is pulled
+      low (16-bit mode).
+    type: boolean
+
+  maxim,ignore-undervoltage:
+    description:
+      Boolean whether to ignore undervoltage alarms signaled by the
+      "maxim,fault-gpios" or by the status byte (in 16-bit mode). Use this if
+      the chips are powered through 5VOUT instead of VCC24V, in which case they
+      will constantly signal undervoltage.
+    type: boolean
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - '#gpio-cells'
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        gpio@0 {
+            compatible = "maxim,max31913";
+            reg = <0>;
+            gpio-controller;
+            #gpio-cells = <2>;
+
+            maxim,modesel-gpios = <&gpio2 23>;
+            maxim,fault-gpios   = <&gpio2 24 GPIO_ACTIVE_LOW>;
+            maxim,db0-gpios     = <&gpio2 25>;
+            maxim,db1-gpios     = <&gpio2 26>;
+
+            spi-max-frequency = <25000000>;
+        };
+    };
diff --git a/Bindings/gpio/microchip,pic32-gpio.txt b/Bindings/gpio/microchip,pic32-gpio.txt
deleted file mode 100644 (file)
index dd031fc..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-* Microchip PIC32 GPIO devices (PIO).
-
-Required properties:
- - compatible: "microchip,pic32mzda-gpio"
- - reg: Base address and length for the device.
- - interrupts: The port interrupt shared by all pins.
- - gpio-controller: Marks the port as GPIO controller.
- - #gpio-cells: Two. The first cell is the pin number and
-   the second cell is used to specify the gpio polarity as defined in
-   defined in <dt-bindings/gpio/gpio.h>:
-      0 = GPIO_ACTIVE_HIGH
-      1 = GPIO_ACTIVE_LOW
-      2 = GPIO_OPEN_DRAIN
- - interrupt-controller: Marks the device node as an interrupt controller.
- - #interrupt-cells: Two. The first cell is the GPIO number and second cell
-   is used to specify the trigger type as defined in
-   <dt-bindings/interrupt-controller/irq.h>:
-      IRQ_TYPE_EDGE_RISING
-      IRQ_TYPE_EDGE_FALLING
-      IRQ_TYPE_EDGE_BOTH
- - clocks: Clock specifier (see clock bindings for details).
- - microchip,gpio-bank: Specifies which bank a controller owns.
- - gpio-ranges: Interaction with the PINCTRL subsystem.
-
-Example:
-
-/* PORTA */
-gpio0: gpio0@1f860000 {
-       compatible = "microchip,pic32mzda-gpio";
-       reg = <0x1f860000 0x100>;
-       interrupts = <118 IRQ_TYPE_LEVEL_HIGH>;
-       #gpio-cells = <2>;
-       gpio-controller;
-       interrupt-controller;
-       #interrupt-cells = <2>;
-       clocks = <&rootclk PB4CLK>;
-       microchip,gpio-bank = <0>;
-       gpio-ranges = <&pic32_pinctrl 0 0 16>;
-};
-
-keys {
-       ...
-
-       button@sw1 {
-               label = "ESC";
-               linux,code = <1>;
-               gpios = <&gpio0 12 0>;
-       };
-};
diff --git a/Bindings/gpio/microchip,pic32mzda-gpio.yaml b/Bindings/gpio/microchip,pic32mzda-gpio.yaml
new file mode 100644 (file)
index 0000000..d8d932c
--- /dev/null
@@ -0,0 +1,71 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/microchip,pic32mzda-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip PIC32 GPIO controller
+
+maintainers:
+  - Joshua Henderson <joshua.henderson@microchip.com>
+  - Purna Chandra Mandal <purna.mandal@microchip.com>
+
+properties:
+  compatible:
+    const: microchip,pic32mzda-gpio
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  gpio-ranges: true
+
+  "#gpio-cells":
+    const: 2
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 2
+
+  clocks:
+    maxItems: 1
+
+  microchip,gpio-bank:
+    description: Bank index owned by the controller
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - gpio-ranges
+  - "#gpio-cells"
+  - interrupts
+  - interrupt-controller
+  - "#interrupt-cells"
+  - clocks
+  - microchip,gpio-bank
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    gpio@1f860000 {
+        compatible = "microchip,pic32mzda-gpio";
+        reg = <0x1f860000 0x100>;
+        interrupts = <118 IRQ_TYPE_LEVEL_HIGH>;
+        #gpio-cells = <2>;
+        gpio-controller;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        clocks = <&rootclk 11>;
+        microchip,gpio-bank = <0>;
+        gpio-ranges = <&pic32_pinctrl 0 0 16>;
+    };
diff --git a/Bindings/gpio/netxbig-gpio-ext.txt b/Bindings/gpio/netxbig-gpio-ext.txt
deleted file mode 100644 (file)
index 50ec2e6..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Binding for the GPIO extension bus found on some LaCie/Seagate boards
-(Example: 2Big/5Big Network v2, 2Big NAS).
-
-Required properties:
-- compatible: "lacie,netxbig-gpio-ext".
-- addr-gpios: GPIOs representing the address register (LSB -> MSB).
-- data-gpios: GPIOs representing the data register (LSB -> MSB).
-- enable-gpio: latches the new configuration (address, data) on raising edge.
-
-Example:
-
-netxbig_gpio_ext: netxbig-gpio-ext {
-       compatible = "lacie,netxbig-gpio-ext";
-
-       addr-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH
-                     &gpio1 16 GPIO_ACTIVE_HIGH
-                     &gpio1 17 GPIO_ACTIVE_HIGH>;
-       data-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH
-                     &gpio1 13 GPIO_ACTIVE_HIGH
-                     &gpio1 14 GPIO_ACTIVE_HIGH>;
-       enable-gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
-};
diff --git a/Bindings/gpio/nintendo,hollywood-gpio.txt b/Bindings/gpio/nintendo,hollywood-gpio.txt
deleted file mode 100644 (file)
index df63da4..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-Nintendo Wii (Hollywood) GPIO controller
-
-Required properties:
-- compatible: "nintendo,hollywood-gpio"
-- reg: Physical base address and length of the controller's registers.
-- gpio-controller: Marks the device node as a GPIO controller.
-- #gpio-cells: Should be <2>. The first cell is the pin number and the
-  second cell is used to specify optional parameters:
-   - bit 0 specifies polarity (0 for normal, 1 for inverted).
-
-Optional properties:
-- ngpios: see Documentation/devicetree/bindings/gpio/gpio.txt
-- interrupt-controller: Marks the device node as an interrupt controller.
-- #interrupt-cells: Should be two.
-- interrupts: Interrupt specifier for the controller's Broadway (PowerPC)
-  interrupt.
-
-Example:
-
-       GPIO: gpio@d8000c0 {
-               #gpio-cells = <2>;
-               compatible = "nintendo,hollywood-gpio";
-               reg = <0x0d8000c0 0x40>;
-               gpio-controller;
-               ngpios = <24>;
-       }
diff --git a/Bindings/gpio/nxp,lpc1850-gpio.txt b/Bindings/gpio/nxp,lpc1850-gpio.txt
deleted file mode 100644 (file)
index 627efc7..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-NXP LPC18xx/43xx GPIO controller Device Tree Bindings
------------------------------------------------------
-
-Required properties:
-- compatible           : Should be "nxp,lpc1850-gpio"
-- reg                  : List of addresses and lengths of the GPIO controller
-                         register sets
-- reg-names            : Should be "gpio", "gpio-pin-ic", "gpio-group0-ic" and
-                         "gpio-gpoup1-ic"
-- clocks               : Phandle and clock specifier pair for GPIO controller
-- resets               : Phandle and reset specifier pair for GPIO controller
-- gpio-controller      : Marks the device node as a GPIO controller
-- #gpio-cells          : Should be two:
-                         - The first cell is the GPIO line number
-                         - The second cell is used to specify polarity
-- interrupt-controller : Marks the device node as an interrupt controller
-- #interrupt-cells     : Should be two:
-                         - The first cell is an interrupt number within
-                           0..9 range, for GPIO pin interrupts it is equal
-                           to 'nxp,gpio-pin-interrupt' property value of
-                           GPIO pin configuration, 8 is for GPIO GROUP0
-                           interrupt, 9 is for GPIO GROUP1 interrupt
-                         - The second cell is used to specify interrupt type
-
-Optional properties:
-- gpio-ranges          : Mapping between GPIO and pinctrl
-
-Example:
-#define LPC_GPIO(port, pin)    (port * 32 + pin)
-#define LPC_PIN(port, pin)     (0x##port * 32 + pin)
-
-gpio: gpio@400f4000 {
-       compatible = "nxp,lpc1850-gpio";
-       reg = <0x400f4000 0x4000>, <0x40087000 0x1000>,
-             <0x40088000 0x1000>, <0x40089000 0x1000>;
-       reg-names = "gpio", "gpio-pin-ic",
-                   "gpio-group0-ic", "gpio-gpoup1-ic";
-       clocks = <&ccu1 CLK_CPU_GPIO>;
-       resets = <&rgu 28>;
-       gpio-controller;
-       #gpio-cells = <2>;
-       interrupt-controller;
-       #interrupt-cells = <2>;
-       gpio-ranges =   <&pinctrl LPC_GPIO(0,0)  LPC_PIN(0,0)  2>,
-                       ...
-                       <&pinctrl LPC_GPIO(7,19) LPC_PIN(f,5)  7>;
-};
-
-gpio_joystick {
-       compatible = "gpio-keys";
-       ...
-
-       button0 {
-               ...
-               interrupt-parent = <&gpio>;
-               interrupts = <1 IRQ_TYPE_EDGE_BOTH>;
-               gpios = <&gpio LPC_GPIO(4,8) GPIO_ACTIVE_LOW>;
-       };
-};
diff --git a/Bindings/gpio/nxp,lpc1850-gpio.yaml b/Bindings/gpio/nxp,lpc1850-gpio.yaml
new file mode 100644 (file)
index 0000000..0ef5f90
--- /dev/null
@@ -0,0 +1,78 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/nxp,lpc1850-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC18xx/43xx GPIO controller
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc1850-gpio
+
+  reg:
+    minItems: 1
+    maxItems: 4
+
+  reg-names:
+    minItems: 1
+    items:
+      - const: gpio
+      - const: gpio-pin-ic
+      - const: gpio-group0-ic
+      - const: gpio-gpoup1-ic
+
+  clocks:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+    description: |
+      - The first cell is an interrupt number within
+        0..9 range, for GPIO pin interrupts it is equal
+        to 'nxp,gpio-pin-interrupt' property value of
+        GPIO pin configuration, 8 is for GPIO GROUP0
+        interrupt, 9 is for GPIO GROUP1 interrupt
+      - The second cell is used to specify interrupt type
+
+  gpio-ranges: true
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - gpio-controller
+  - '#gpio-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc18xx-ccu.h>
+
+    gpio@400f4000 {
+        compatible = "nxp,lpc1850-gpio";
+        reg = <0x400f4000 0x4000>, <0x40087000 0x1000>,
+              <0x40088000 0x1000>, <0x40089000 0x1000>;
+        reg-names = "gpio", "gpio-pin-ic", "gpio-group0-ic", "gpio-gpoup1-ic";
+        clocks = <&ccu1 CLK_CPU_GPIO>;
+        resets = <&rgu 28>;
+        gpio-controller;
+        #gpio-cells = <2>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+    };
+
diff --git a/Bindings/gpio/pisosr-gpio.yaml b/Bindings/gpio/pisosr-gpio.yaml
new file mode 100644 (file)
index 0000000..db98ba4
--- /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/gpio/pisosr-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Generic Parallel-in/Serial-out Shift Register GPIO Driver
+
+description:
+  This binding describes generic parallel-in/serial-out shift register
+  devices that can be used for GPI (General Purpose Input). This includes
+  SN74165 serial-out shift registers and the SN65HVS88x series of
+  industrial serializers.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - pisosr-gpio
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  ngpios:
+    maximum: 32
+    default: 8
+
+  load-gpios:
+    description:
+      GPIO pin specifier attached to load enable, this
+      pin is pulsed before reading from the device to
+      load input pin values into the device.
+
+  spi-cpol: true
+
+required:
+  - compatible
+  - gpio-controller
+  - '#gpio-cells'
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        gpio@0 {
+            compatible = "pisosr-gpio";
+            reg = <0>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            load-gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
+            spi-max-frequency = <1000000>;
+            spi-cpol;
+        };
+    };
index bd35cbf7fa09cf745e5c8b5d9bded29cd5f95872..c51e10680c0a538c269851789e0ac5e7f0d72e89 100644 (file)
@@ -60,9 +60,6 @@ properties:
 required:
   - compatible
   - reg
-  - interrupts
-  - interrupt-controller
-  - "#interrupt-cells"
   - clocks
   - "#gpio-cells"
   - gpio-controller
diff --git a/Bindings/gpio/qca,ar7100-gpio.yaml b/Bindings/gpio/qca,ar7100-gpio.yaml
new file mode 100644 (file)
index 0000000..519c4c2
--- /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/gpio/qca,ar7100-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Atheros AR7xxx/AR9xxx GPIO controller
+
+maintainers:
+  - Alban Bedel <albeu@free.fr>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: qca,ar9132-gpio
+          - const: qca,ar7100-gpio
+      - enum:
+          - qca,ar7100-gpio
+          - qca,ar9340-gpio
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  ngpios: true
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - '#gpio-cells'
+  - ngpios
+
+additionalProperties: false
+
+examples:
+  - |
+    gpio@18040000 {
+        compatible = "qca,ar9132-gpio", "qca,ar7100-gpio";
+        reg = <0x18040000 0x30>;
+        interrupts = <2>;
+        ngpios = <22>;
+        gpio-controller;
+        #gpio-cells = <2>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+    };
index d76987ce8e50e6e53951867fdd26e62ab819923d..bdd83f42615cbe8170a0ea0e249cf8730ce6f2e8 100644 (file)
@@ -41,6 +41,9 @@ properties:
   "#interrupt-cells":
     const: 2
 
+  power-domains:
+    maxItems: 1
+
 patternProperties:
   "^.+-hog(-[0-9]+)?$":
     type: object
diff --git a/Bindings/gpio/rockchip,rk3328-grf-gpio.yaml b/Bindings/gpio/rockchip,rk3328-grf-gpio.yaml
deleted file mode 100644 (file)
index d8cce73..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/gpio/rockchip,rk3328-grf-gpio.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Rockchip RK3328 General Register Files GPIO controller
-
-description:
-  The Rockchip RK3328 General Register File (GRF) outputs only the
-  GPIO_MUTE pin, originally for codec mute control, but it can also be used
-  for general purpose. It is manipulated by the GRF_SOC_CON10 register.
-  If needed in the future support for the HDMI pins can also be added.
-  The GPIO node should be declared as the child of the GRF node.
-
-  The GPIO_MUTE pin is referred to in the format
-
-  <&grf_gpio 0 GPIO_ACTIVE_LOW>
-
-  The first cell is the pin number and
-  the second cell is used to specify the GPIO polarity
-    0 = Active high
-    1 = Active low
-
-maintainers:
-  - Heiko Stuebner <heiko@sntech.de>
-
-properties:
-  compatible:
-    const: rockchip,rk3328-grf-gpio
-
-  gpio-controller: true
-
-  "#gpio-cells":
-    const: 2
-
-required:
-  - compatible
-  - gpio-controller
-  - "#gpio-cells"
-
-additionalProperties: false
-
-examples:
-  - |
-    grf_gpio: gpio {
-      compatible = "rockchip,rk3328-grf-gpio";
-      gpio-controller;
-      #gpio-cells = <2>;
-    };
diff --git a/Bindings/gpio/snps,creg-gpio.txt b/Bindings/gpio/snps,creg-gpio.txt
deleted file mode 100644 (file)
index 1b30812..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-Synopsys GPIO via CREG (Control REGisters) driver
-
-Required properties:
-- compatible : "snps,creg-gpio-hsdk" or "snps,creg-gpio-axs10x".
-- reg : Exactly one register range with length 0x4.
-- #gpio-cells : Since the generic GPIO binding is used, the
-  amount of cells must be specified as 2. The first cell is the
-  pin number, the second cell is used to specify optional parameters:
-  See "gpio-specifier" in .../devicetree/bindings/gpio/gpio.txt.
-- gpio-controller : Marks the device node as a GPIO controller.
-- ngpios: Number of GPIO pins.
-
-Example:
-
-gpio: gpio@f00014b0 {
-       compatible = "snps,creg-gpio-hsdk";
-       reg = <0xf00014b0 0x4>;
-       gpio-controller;
-       #gpio-cells = <2>;
-       ngpios = <2>;
-};
diff --git a/Bindings/gpio/spear_spics.txt b/Bindings/gpio/spear_spics.txt
deleted file mode 100644 (file)
index dd04d96..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-=== ST Microelectronics SPEAr SPI CS Driver ===
-
-SPEAr platform provides a provision to control chipselects of ARM PL022 Prime
-Cell spi controller through its system registers, which otherwise remains under
-PL022 control. If chipselect remain under PL022 control then they would be
-released as soon as transfer is over and TxFIFO becomes empty. This is not
-desired by some of the device protocols above spi which expect (multiple)
-transfers without releasing their chipselects.
-
-Chipselects can be controlled by software by turning them as GPIOs. SPEAr
-provides another interface through system registers through which software can
-directly control each PL022 chipselect. Hence, it is natural for SPEAr to export
-the control of this interface as gpio.
-
-Required properties:
-
-  * compatible: should be defined as "st,spear-spics-gpio"
-  * reg: mentioning address range of spics controller
-  * st-spics,peripcfg-reg: peripheral configuration register offset
-  * st-spics,sw-enable-bit: bit offset to enable sw control
-  * st-spics,cs-value-bit: bit offset to drive chipselect low or high
-  * st-spics,cs-enable-mask: chip select number bit mask
-  * st-spics,cs-enable-shift: chip select number program offset
-  * gpio-controller: Marks the device node as gpio controller
-  * #gpio-cells: should be 1 and will mention chip select number
-
-All the above bit offsets are within peripcfg register.
-
-Example:
--------
-spics: spics@e0700000{
-        compatible = "st,spear-spics-gpio";
-        reg = <0xe0700000 0x1000>;
-        st-spics,peripcfg-reg = <0x3b0>;
-        st-spics,sw-enable-bit = <12>;
-        st-spics,cs-value-bit = <11>;
-        st-spics,cs-enable-mask = <3>;
-        st-spics,cs-enable-shift = <8>;
-        gpio-controller;
-        #gpio-cells = <2>;
-};
-
-
-spi0: spi@e0100000 {
-        num-cs = <3>;
-        cs-gpios = <&gpio1 7 0>, <&spics 0>,
-                   <&spics 1>;
-       ...
-}
diff --git a/Bindings/gpio/st,spear-spics-gpio.yaml b/Bindings/gpio/st,spear-spics-gpio.yaml
new file mode 100644 (file)
index 0000000..3b0d211
--- /dev/null
@@ -0,0 +1,82 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/st,spear-spics-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ST Microelectronics SPEAr SPI CS GPIO Controller
+
+maintainers:
+  - Viresh Kumar <vireshk@kernel.org>
+
+description: >
+  SPEAr platform provides a provision to control chipselects of ARM PL022 Prime
+  Cell spi controller through its system registers, which otherwise remains
+  under PL022 control. If chipselect remain under PL022 control then they would
+  be released as soon as transfer is over and TxFIFO becomes empty. This is not
+  desired by some of the device protocols above spi which expect (multiple)
+  transfers without releasing their chipselects.
+
+  Chipselects can be controlled by software by turning them as GPIOs. SPEAr
+  provides another interface through system registers through which software can
+  directly control each PL022 chipselect. Hence, it is natural for SPEAr to
+  export the control of this interface as gpio.
+
+properties:
+  compatible:
+    const: st,spear-spics-gpio
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  st-spics,peripcfg-reg:
+    description: Offset of the peripcfg register.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  st-spics,sw-enable-bit:
+    description: Bit offset to enable software chipselect control.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  st-spics,cs-value-bit:
+    description: Bit offset to drive chipselect low or high.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  st-spics,cs-enable-mask:
+    description: Bitmask selecting which chipselects to enable.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  st-spics,cs-enable-shift:
+    description: Bit shift for programming chipselect number.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - '#gpio-cells'
+  - st-spics,peripcfg-reg
+  - st-spics,sw-enable-bit
+  - st-spics,cs-value-bit
+  - st-spics,cs-enable-mask
+  - st-spics,cs-enable-shift
+
+additionalProperties: false
+
+examples:
+  - |
+    gpio@e0700000 {
+        compatible = "st,spear-spics-gpio";
+        reg = <0xe0700000 0x1000>;
+        st-spics,peripcfg-reg = <0x3b0>;
+        st-spics,sw-enable-bit = <12>;
+        st-spics,cs-value-bit = <11>;
+        st-spics,cs-enable-mask = <3>;
+        st-spics,cs-enable-shift = <8>;
+        gpio-controller;
+        #gpio-cells = <2>;
+    };
diff --git a/Bindings/gpio/ti,keystone-dsp-gpio.yaml b/Bindings/gpio/ti,keystone-dsp-gpio.yaml
new file mode 100644 (file)
index 0000000..59f8162
--- /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/gpio/ti,keystone-dsp-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Keystone 2 DSP GPIO controller
+
+maintainers:
+  - Grygorii Strashko <grygorii.strashko@ti.com>
+
+description: |
+  HOST OS userland running on ARM can send interrupts to DSP cores using
+  the DSP GPIO controller IP. It provides 28 IRQ signals per each DSP core.
+  This is one of the component used by the IPC mechanism used on Keystone SOCs.
+
+  For example TCI6638K2K SoC has 8 DSP GPIO controllers:
+   - 8 for C66x CorePacx CPUs 0-7
+
+  Keystone 2 DSP GPIO controller has specific features:
+  - each GPIO can be configured only as output pin;
+  - setting GPIO value to 1 causes IRQ generation on target DSP core;
+  - reading pin value returns 0 - if IRQ was handled or 1 - IRQ is still
+    pending.
+
+properties:
+  compatible:
+    const: ti,keystone-dsp-gpio
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  gpio,syscon-dev:
+    description:
+      Phandle and offset of device's specific registers within the syscon state
+      control registers
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    items:
+      - items:
+          - description: phandle to syscon
+          - description: register offset within state control registers
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - '#gpio-cells'
+  - gpio,syscon-dev
+
+additionalProperties: false
+
+examples:
+  - |
+    gpio@240 {
+        compatible = "ti,keystone-dsp-gpio";
+        reg = <0x240 0x4>;
+        gpio-controller;
+        #gpio-cells = <2>;
+        gpio,syscon-dev = <&devctrl 0x240>;
+    };
diff --git a/Bindings/gpio/ti,twl4030-gpio.yaml b/Bindings/gpio/ti,twl4030-gpio.yaml
new file mode 100644 (file)
index 0000000..5e3e199
--- /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/ti,twl4030-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI TWL4030 GPIO controller
+
+maintainers:
+  - Aaro Koskinen <aaro.koskinen@iki.fi>
+  - Andreas Kemnade <andreas@kemnade.info>
+  - Kevin Hilman <khilman@baylibre.com>
+  - Roger Quadros <rogerq@kernel.org>
+  - Tony Lindgren <tony@atomide.com>
+
+properties:
+  compatible:
+    const: ti,twl4030-gpio
+
+  '#gpio-cells':
+    const: 2
+
+  gpio-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+  interrupt-controller: true
+
+  ti,debounce:
+    description: Debounce control bits. Each bit corresponds to a GPIO pin.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  ti,mmc-cd:
+    description: MMC card detect control bits. Each bit corresponds to a GPIO pin for VMMC(n+1).
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  ti,pullups:
+    description: Pull-up control bits. Each bit corresponds to a GPIO pin.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  ti,pulldowns:
+    description: Pull-down control bits. Each bit corresponds to a GPIO pin.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  ti,use-leds:
+    type: boolean
+    description: Enables LEDA and LEDB outputs if set
+
+additionalProperties: false
+
+examples:
+  - |
+    gpio {
+        compatible = "ti,twl4030-gpio";
+        #gpio-cells = <2>;
+        gpio-controller;
+        #interrupt-cells = <1>;
+        interrupt-controller;
+        ti,use-leds;
+    };
diff --git a/Bindings/gpio/trivial-gpio.yaml b/Bindings/gpio/trivial-gpio.yaml
new file mode 100644 (file)
index 0000000..0299d4a
--- /dev/null
@@ -0,0 +1,110 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/trivial-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Trivial 2-cell GPIO controllers
+
+maintainers:
+  - Bartosz Golaszewski <brgl@bgdev.pl>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - cirrus,ep7312-gpio
+          - const: cirrus,ep7209-gpio
+      - enum:
+          - apm,xgene-gpio
+          - cirrus,ep7209-gpio
+          - cznic,moxtet-gpio
+          - dlg,slg7xl45106
+          - fcs,fxl6408
+          - gateworks,pld-gpio
+          - ibm,ppc4xx-gpio
+          - loongson,ls1x-gpio
+          - maxim,max77620
+          - nintendo,hollywood-gpio
+          - nxp,pca9570
+          - nxp,pca9571
+          - rockchip,rk3328-grf-gpio
+          - snps,creg-gpio-hsdk
+          - technologic,ts4800-gpio
+          - technologic,ts4900-gpio
+          - technologic,ts7970-gpio
+          - ti,741g125 # for 741G125 (1-bit Input),
+          - ti,741g174 # for 741G74 (1-bit Output),
+          - ti,742g125 # for 742G125 (2-bit Input),
+          - ti,7474    # for 7474 (2-bit Output),
+          - ti,74125   # for 74125 (4-bit Input),
+          - ti,74175   # for 74175 (4-bit Output),
+          - ti,74365   # for 74365 (6-bit Input),
+          - ti,74174   # for 74174 (6-bit Output),
+          - ti,74244   # for 74244 (8-bit Input),
+          - ti,74273   # for 74273 (8-bit Output),
+          - ti,741624  # for 741624 (16-bit Input),
+          - ti,7416374 # for 7416374 (16-bit Output).
+          - ti,lp3943-gpio
+          - ti,palmas-gpio
+          - ti,tpic2810
+          - ti,tps80036-gpio
+          - ti,tps65913-gpio
+          - ti,tps65914-gpio
+
+  reg:
+    maxItems: 1
+
+  '#gpio-cells':
+    const: 2
+
+  gpio-controller: true
+
+  gpio-line-names: true
+
+  ngpios: true
+
+  # Don't add more properties
+
+patternProperties:
+  "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$":
+    type: object
+    required:
+      - gpio-hog
+
+required:
+  - compatible
+  - '#gpio-cells'
+  - gpio-controller
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - maxim,max77620
+              - rockchip,rk3328-grf-gpio
+              - ti,lp3943-gpio
+              - ti,palmas-gpio
+              - ti,tps80036-gpio
+              - ti,tps65913-gpio
+              - ti,tps65914-gpio
+    then:
+      properties:
+        reg: false
+    else:
+      required:
+        - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    gpio@1701c000 {
+        compatible = "apm,xgene-gpio";
+        reg = <0x1701c000 0x40>;
+        gpio-controller;
+        #gpio-cells = <2>;
+    };
index 8fbf12ca067eebba8c77fe3f0df363ba0e4b1eee..7af4eb2d18588e30f55f5794ef0264481525d475 100644 (file)
@@ -117,6 +117,7 @@ properties:
 required:
   - reg
   - compatible
+  - clocks
   - gpio-controller
   - "#gpio-cells"
 
diff --git a/Bindings/gpu/apple,agx.yaml b/Bindings/gpu/apple,agx.yaml
new file mode 100644 (file)
index 0000000..51629b3
--- /dev/null
@@ -0,0 +1,94 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpu/apple,agx.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple SoC GPU
+
+maintainers:
+  - Sasha Finkelstein <fnkl.kernel@gmail.com>
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - apple,agx-g13g
+          - apple,agx-g13s
+          - apple,agx-g14g
+      - items:
+          - enum:
+              - apple,agx-g13c
+              - apple,agx-g13d
+          - const: apple,agx-g13s
+
+  reg:
+    items:
+      - description: GPU coprocessor control registers
+      - description: GPU block MMIO registers
+
+  reg-names:
+    items:
+      - const: asc
+      - const: sgx
+
+  power-domains:
+    maxItems: 1
+
+  mboxes:
+    maxItems: 1
+
+  memory-region:
+    items:
+      - description: Region containing GPU MMU TTBs
+      - description: Region containing GPU MMU page tables
+      - description:
+          Region containing a shared handoff structure for VM
+          management coordination
+      - description: Calibration blob. Mostly power-related configuration
+      - description: Calibration blob. Mostly GPU-related configuration
+      - description: Shared global variables with GPU firmware
+
+  memory-region-names:
+    items:
+      - const: ttbs
+      - const: pagetables
+      - const: handoff
+      - const: hw-cal-a
+      - const: hw-cal-b
+      - const: globals
+
+  apple,firmware-abi:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 3
+    description:
+      macOS version the current firmware is paired with, used to pick
+      the version of firmware ABI to be used.
+      Bootloader will overwrite this
+
+required:
+  - compatible
+  - reg
+  - mboxes
+  - memory-region
+  - apple,firmware-abi
+
+additionalProperties: false
+
+examples:
+  - |
+    gpu@6400000 {
+        compatible = "apple,agx-g13g";
+        reg = <0x6400000 0x40000>,
+              <0x4000000 0x1000000>;
+        reg-names = "asc", "sgx";
+        mboxes = <&agx_mbox>;
+        power-domains = <&ps_gfx>;
+        memory-region = <&uat_ttbs>, <&uat_pagetables>, <&uat_handoff>,
+                        <&gpu_hw_cal_a>, <&gpu_hw_cal_b>, <&gpu_globals>;
+        memory-region-names = "ttbs", "pagetables", "handoff",
+                              "hw-cal-a", "hw-cal-b", "globals";
+
+        apple,firmware-abi = <0 0 0>;
+    };
+...
index b8d659d272d060bf850be34f760495b401a19adf..be198182dbfe0dba61176f7205b08be131f4845c 100644 (file)
@@ -40,8 +40,10 @@ properties:
           - const: arm,mali-valhall-jm # Mali Valhall GPU model/revision is fully discoverable
       - items:
           - enum:
+              - allwinner,sun55i-a523-mali
               - mediatek,mt8188-mali
               - mediatek,mt8192-mali
+              - mediatek,mt8370-mali
           - const: arm,mali-valhall-jm # Mali Valhall GPU model/revision is fully discoverable
 
   reg:
@@ -225,7 +227,9 @@ allOf:
       properties:
         compatible:
           contains:
-            const: mediatek,mt8186-mali
+            enum:
+              - mediatek,mt8186-mali
+              - mediatek,mt8370-mali
     then:
       properties:
         power-domains:
index 9318817ea1357d4d66db951513d9bc033b222190..c8d0d9192d92caf8e10acd75e9c3dd728c08e315 100644 (file)
@@ -47,6 +47,7 @@ properties:
               - hisilicon,hi6220-mali
               - mediatek,mt7623-mali
               - rockchip,rk3328-mali
+              - rockchip,rk3528-mali
           - const: arm,mali-450
 
       # "arm,mali-300"
@@ -148,6 +149,7 @@ allOf:
               - rockchip,rk3188-mali
               - rockchip,rk3228-mali
               - rockchip,rk3328-mali
+              - rockchip,rk3528-mali
     then:
       required:
         - resets
index 4f8e11bd5142bb424167c8d012de16b3e62e21d2..fe87a592de451964bc04510d32e8b7e4685dc024 100644 (file)
@@ -8,7 +8,7 @@ title: Analog Devices ADM1266 Cascadable Super Sequencer with Margin
   Control and Fault Recording
 
 maintainers:
-  - Alexandru Tachici <alexandru.tachici@analog.com>
+  - Cedric Encarnacion <cedricjustine.encarnacion@analog.com>
 
 description: |
   Analog Devices ADM1266 Cascadable Super Sequencer with Margin
index 0ad12d2456564ee507c8a61602aea34061201f8a..38a8f3a14c02ef63f6033ff0b0c43b07b9989e16 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Linear Technology 2992 Power Monitor
 
 maintainers:
-  - Alexandru Tachici <alexandru.tachici@analog.com>
+  - Cedric Encarnacion <cedricjustine.encarnacion@analog.com>
 
 description: |
   Linear Technology 2992 Dual Wide Range Power Monitor
index 79e8d62fa3b3dd9495b1d707f76f13d352f13a86..43e9fe2258704ccd3e80fcea3fd2ed8da7923bf8 100644 (file)
@@ -53,7 +53,10 @@ properties:
       default: 1
 
   "#pwm-cells":
-    const: 4
+    oneOf:
+      - const: 3
+      - const: 4
+        deprecated: true
     description: |
       Number of cells in a PWM specifier.
       - 0: The PWM channel
@@ -68,7 +71,7 @@ properties:
            - 11363636 (88 Hz)
            - 44444 (22 kHz)
       - 2: PWM flags 0 or PWM_POLARITY_INVERTED
-      - 3: The default PWM duty cycle in nanoseconds
+      - 3: The default PWM duty cycle in nanoseconds, defaults to period.
 
 patternProperties:
   "^adi,bypass-attenuator-in[0-4]$":
@@ -124,15 +127,15 @@ examples:
         adi,bypass-attenuator-in1 = <0>;
         adi,pin10-function = "smbalert#";
         adi,pin14-function = "tach4";
-        #pwm-cells = <4>;
+        #pwm-cells = <3>;
 
-        /* PWMs at 22.5 kHz frequency, 50% duty*/
+        /* PWMs at 22.5 kHz frequency */
         fan-0 {
-          pwms = <&pwm 0 44444 0 22222>;
+          pwms = <&pwm 0 44444 0>;
         };
 
         fan-1 {
-          pwms = <&pwm 2 44444 0 22222>;
+          pwms = <&pwm 2 44444 0>;
         };
       };
     };
index aa801ef1640b177ee55181c724b024b4857e0252..ea8b1553a3e9e739ac408a73a6a7783a7e655264 100644 (file)
@@ -28,6 +28,7 @@ properties:
       - lltc,ltc3886
       - lltc,ltc3887
       - lltc,ltc3889
+      - lltc,ltc7132
       - lltc,ltc7841
       - lltc,ltc7880
       - lltc,ltm2987
@@ -55,6 +56,7 @@ properties:
       * ltc2977, ltc2979, ltc2980, ltm2987 : vout0 - vout7
       * ltc2978 : vout0 - vout7
       * ltc3880, ltc3882, ltc3884, ltc3886, ltc3887, ltc3889 : vout0 - vout1
+      * ltc7132 : vout0 - vout1
       * ltc7841 : vout0
       * ltc7880 : vout0 - vout1
       * ltc3883 : vout0
index 8af0d7458e6224c1482a3d2552d0386124b1ece7..8588d97ba6ecc8285531d06f55a2c5e85f76b0dc 100644 (file)
@@ -25,6 +25,7 @@ description: |
 properties:
   compatible:
     enum:
+      - maxim,max20710
       - maxim,max20730
       - maxim,max20734
       - maxim,max20743
index 4feb76919404ecf022729cf1a5c641e5798c5ade..1b871f166e7914a9366d0fa5aac4a1f933c4ce50 100644 (file)
@@ -20,6 +20,7 @@ properties:
       - dallas,max6646
       - dallas,max6647
       - dallas,max6649
+      - dallas,max6654
       - dallas,max6657
       - dallas,max6658
       - dallas,max6659
@@ -36,6 +37,9 @@ properties:
       - nuvoton,nct7717
       - nuvoton,nct7718
       - nxp,sa56004
+      - onnn,nct72
+      - onnn,nct214
+      - onnn,nct218
       - onnn,nct1008
       - ti,tmp451
       - ti,tmp461
@@ -118,6 +122,7 @@ allOf:
               - dallas,max6646
               - dallas,max6647
               - dallas,max6649
+              - dallas,max6654
               - dallas,max6657
               - dallas,max6658
               - dallas,max6659
@@ -139,6 +144,9 @@ allOf:
               - adi,adt7461
               - adi,adt7461a
               - adi,adt7481
+              - onnn,nct72
+              - onnn,nct214
+              - onnn,nct218
               - onnn,nct1008
     then:
       patternProperties:
index 10c2204bc3df3eaa98881085247ad2ff87f96645..af75300939429975e7151be943e976e265c45f02 100644 (file)
@@ -10,16 +10,27 @@ maintainers:
   - Radu Sabau <radu.sabau@analog.com>
 
 description: |
-   The ADP1050 is used to monitor system voltages, currents and temperatures.
+   The ADP1050 and similar devices are used to monitor system voltages,
+   currents, power, and temperatures.
+
    Through the PMBus interface, the ADP1050 targets isolated power supplies
    and has four individual monitors for input/output voltage, input current
    and temperature.
    Datasheet:
      https://www.analog.com/en/products/adp1050.html
+     https://www.analog.com/en/products/adp1051.html
+     https://www.analog.com/en/products/adp1055.html
+     https://www.analog.com/en/products/ltp8800-1a.html
+     https://www.analog.com/en/products/ltp8800-2.html
+     https://www.analog.com/en/products/ltp8800-4a.html
 
 properties:
   compatible:
-    const: adi,adp1050
+    enum:
+      - adi,adp1050
+      - adi,adp1051
+      - adi,adp1055
+      - adi,ltp8800
 
   reg:
     maxItems: 1
index bac5f8e352aa468f7856f4e4d4c5ddfcf4661cad..3dc7f15484d2878dddbfcdb2013d1eec74fa7dc0 100644 (file)
@@ -56,6 +56,7 @@ properties:
       - renesas,raa228228
       - renesas,raa229001
       - renesas,raa229004
+      - renesas,raa229621
 
   reg:
     maxItems: 1
index f8bea1c0e94ad1920660c7bd5fac023ccae86ffc..8f9ce00079df1c65ee7e68714b25d8b000d495fb 100644 (file)
@@ -23,7 +23,13 @@ description: |
 properties:
   compatible:
     enum:
+      - ti,ucd9000
+      - ti,ucd9090
+      - ti,ucd90120
+      - ti,ucd90124
+      - ti,ucd90160
       - ti,ucd90320
+      - ti,ucd90910
 
   reg:
     maxItems: 1
index 9ca7356760a74b1ab5e6c5a4966ba30f050a1eed..eb00756988be158b104642707d96e371930c9fd7 100644 (file)
@@ -32,6 +32,12 @@ properties:
     $ref: fan-common.yaml#
     unevaluatedProperties: false
 
+    properties:
+      cooling-levels:
+        description: PWM duty cycle values corresponding to thermal cooling states.
+        items:
+          maximum: 255
+
   "#pwm-cells":
     const: 2
     description: |
index d1fb7b9abda081113ac28ed999d9c28da9d4daf9..fa68b99ef2e292c0b7d618c14819fa2bd64db7b8 100644 (file)
@@ -25,6 +25,7 @@ properties:
       - ti,ina219
       - ti,ina220
       - ti,ina226
+      - ti,ina228
       - ti,ina230
       - ti,ina231
       - ti,ina233
@@ -107,6 +108,7 @@ allOf:
               - ti,ina219
               - ti,ina220
               - ti,ina226
+              - ti,ina228
               - ti,ina230
               - ti,ina231
               - ti,ina237
index 63d8cf46780628c02f33f2a366de4161c7817556..5c0cdc0091b5c74ca8351e7cc4b1ea863eefd82f 100644 (file)
@@ -18,7 +18,9 @@ description: |
 
 properties:
   compatible:
-    const: ti,lm87
+    enum:
+      - adi,adm1024
+      - ti,lm87
 
   reg:
     maxItems: 1
index 077d2a539c832ea8dbf28d2f9b436cbee6fb5d8c..fed3e1b8c43f67b8f5a19e5c1e046b0e17ab8017 100644 (file)
@@ -22,6 +22,11 @@ properties:
   compatible:
     items:
       - enum:
+          - apple,s5l8960x-i2c
+          - apple,t7000-i2c
+          - apple,s8000-i2c
+          - apple,t8010-i2c
+          - apple,t8015-i2c
           - apple,t8103-i2c
           - apple,t8112-i2c
           - apple,t6000-i2c
index 8d47b290b4ed1c95b7237ce7881b40872cc7ada9..7ae8c7b1d0067e7e7a73a58e8bcb4aac71e87dd8 100644 (file)
@@ -36,6 +36,7 @@ properties:
       - items:
           - enum:
               - google,gs101-hsi2c
+              - samsung,exynos2200-hsi2c
               - samsung,exynos850-hsi2c
           - const: samsung,exynosautov9-hsi2c
       - const: samsung,exynos5-hsi2c    # Exynos5250 and Exynos5420
index 2f1e97969c3f7cb8bda2c7c7a2019c92a1d339e7..4ac5a40a3886f4bab9580d5bf7a4296a941c1b45 100644 (file)
@@ -105,6 +105,9 @@ properties:
       (t(f) in the I2C specification). If not specified we will use the SCL
       value since they are the same in nearly all cases.
 
+  power-domains:
+    maxItems: 1
+
 required:
   - compatible
   - reg
index 798a6939b8948d68aef573a41fb500721d03bd42..e645784b77d3ab170b3dbdab774b8e6b41a357ac 100644 (file)
@@ -22,6 +22,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  clocks:
+    maxItems: 1
+
   clock-frequency:
     default: 100000
 
index cc39511a49d639b9b37ebcbe99db9460059ca869..6876eade431bc20f3b37fc440f0b885808639c08 100644 (file)
@@ -10,9 +10,6 @@ maintainers:
   - Chris Brandt <chris.brandt@renesas.com>
   - Wolfram Sang <wsa+renesas@sang-engineering.com>
 
-allOf:
-  - $ref: /schemas/i2c/i2c-controller.yaml#
-
 properties:
   compatible:
     oneOf:
@@ -32,32 +29,50 @@ properties:
               - renesas,riic-r9a09g056   # RZ/V2N
           - const: renesas,riic-r9a09g057   # RZ/V2H(P)
 
-      - const: renesas,riic-r9a09g057   # RZ/V2H(P)
+      - enum:
+          - renesas,riic-r9a09g057   # RZ/V2H(P)
+          - renesas,riic-r9a09g077   # RZ/T2H
+
+      - items:
+          - const: renesas,riic-r9a09g087  # RZ/N2H
+          - const: renesas,riic-r9a09g077  # RZ/T2H
 
   reg:
     maxItems: 1
 
   interrupts:
-    items:
-      - description: Transmit End Interrupt
-      - description: Receive Data Full Interrupt
-      - description: Transmit Data Empty Interrupt
-      - description: Stop Condition Detection Interrupt
-      - description: Start Condition Detection Interrupt
-      - description: NACK Reception Interrupt
-      - description: Arbitration-Lost Interrupt
-      - description: Timeout Interrupt
+    oneOf:
+      - items:
+          - description: Transmit End Interrupt
+          - description: Receive Data Full Interrupt
+          - description: Transmit Data Empty Interrupt
+          - description: Stop Condition Detection Interrupt
+          - description: Start Condition Detection Interrupt
+          - description: NACK Reception Interrupt
+          - description: Arbitration-Lost Interrupt
+          - description: Timeout Interrupt
+      - items:
+          - description: Transfer Error Or Event Generation
+          - description: Receive Data Full Interrupt
+          - description: Transmit Data Empty Interrupt
+          - description: Transmit End Interrupt
 
   interrupt-names:
-    items:
-      - const: tei
-      - const: ri
-      - const: ti
-      - const: spi
-      - const: sti
-      - const: naki
-      - const: ali
-      - const: tmoi
+    oneOf:
+      - items:
+          - const: tei
+          - const: ri
+          - const: ti
+          - const: spi
+          - const: sti
+          - const: naki
+          - const: ali
+          - const: tmoi
+      - items:
+          - const: eei
+          - const: rxi
+          - const: txi
+          - const: tei
 
   clock-frequency:
     description:
@@ -84,18 +99,40 @@ required:
   - '#address-cells'
   - '#size-cells'
 
-if:
-  properties:
-    compatible:
-      contains:
-        enum:
-          - renesas,riic-r9a07g043
-          - renesas,riic-r9a07g044
-          - renesas,riic-r9a07g054
-          - renesas,riic-r9a09g057
-then:
-  required:
-    - resets
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,riic-r9a09g077
+    then:
+      properties:
+        interrupts:
+          maxItems: 4
+        interrupt-names:
+          maxItems: 4
+        resets: false
+    else:
+      properties:
+        interrupts:
+          minItems: 8
+        interrupt-names:
+          minItems: 8
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,riic-r9a07g043
+              - renesas,riic-r9a07g044
+              - renesas,riic-r9a07g054
+              - renesas,riic-r9a09g057
+    then:
+      required:
+        - resets
 
 unevaluatedProperties: false
 
index 3d6aefb0d0f185ba64e414ac7f5b96cd18659fd3..226c600deae142413277117e25baae09f0918381 100644 (file)
@@ -9,6 +9,9 @@ title: I2C controller embedded in SpacemiT's K1 SoC
 maintainers:
   - Troy Mitchell <troymitchell988@gmail.com>
 
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
 properties:
   compatible:
     const: spacemit,k1-i2c
index cad6d53d0e2e35ddaaad35215ec93dd182f28319..6fa3078074d0298d9786a26d7f1f2dd2c15329a7 100644 (file)
@@ -14,7 +14,12 @@ allOf:
 
 properties:
   compatible:
-    const: cdns,i3c-master
+    oneOf:
+      - const: cdns,i3c-master
+      - items:
+          - enum:
+              - axiado,ax3000-i3c
+          - const: cdns,i3c-master
 
   reg:
     maxItems: 1
diff --git a/Bindings/i3c/renesas,i3c.yaml b/Bindings/i3c/renesas,i3c.yaml
new file mode 100644 (file)
index 0000000..fe2e963
--- /dev/null
@@ -0,0 +1,179 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i3c/renesas,i3c.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas RZ/G3S and RZ/G3E I3C Bus Interface
+
+maintainers:
+  - Wolfram Sang <wsa+renesas@sang-engineering.com>
+  - Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - renesas,r9a08g045-i3c # RZ/G3S
+          - renesas,r9a09g047-i3c # RZ/G3E
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: Non-recoverable internal error interrupt
+      - description: Normal transfer error interrupt
+      - description: Normal transfer abort interrupt
+      - description: Normal response status buffer full interrupt
+      - description: Normal command buffer empty interrupt
+      - description: Normal IBI status buffer full interrupt
+      - description: Normal Rx data buffer full interrupt
+      - description: Normal Tx data buffer empty interrupt
+      - description: Normal receive status buffer full interrupt
+      - description: START condition detection interrupt
+      - description: STOP condition detection interrupt
+      - description: Transmit end interrupt
+      - description: NACK detection interrupt
+      - description: Arbitration lost interrupt
+      - description: Timeout detection interrupt
+      - description: Wake-up condition detection interrupt
+      - description: HDR Exit Pattern detection interrupt
+    minItems: 16
+
+  interrupt-names:
+    items:
+      - const: ierr
+      - const: terr
+      - const: abort
+      - const: resp
+      - const: cmd
+      - const: ibi
+      - const: rx
+      - const: tx
+      - const: rcv
+      - const: st
+      - const: sp
+      - const: tend
+      - const: nack
+      - const: al
+      - const: tmo
+      - const: wu
+      - const: exit
+    minItems: 16
+
+  clocks:
+    items:
+      - description: APB bus clock
+      - description: transfer clock
+      - description: SFRs clock
+    minItems: 2
+
+  clock-names:
+    items:
+      - const: pclk
+      - const: tclk
+      - const: pclkrw
+    minItems: 2
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    items:
+      - description: Reset signal
+      - description: APB interface reset signal/SCAN reset signal
+
+  reset-names:
+    items:
+      - const: presetn
+      - const: tresetn
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+  - clock-names
+  - clocks
+  - power-domains
+  - resets
+  - reset-names
+
+allOf:
+  - $ref: i3c.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r9a08g045-i3c
+    then:
+      properties:
+        clocks:
+          maxItems: 2
+        clock-names:
+          maxItems: 2
+        interrupts:
+          minItems: 17
+        interrupt-names:
+          minItems: 17
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r9a09g047-i3c
+    then:
+      properties:
+        clocks:
+          minItems: 3
+        clock-names:
+          minItems: 3
+        interrupts:
+          maxItems: 16
+        interrupt-names:
+          maxItems: 16
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/r9a08g045-cpg.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    i3c@1005b000 {
+        compatible = "renesas,r9a08g045-i3c";
+        reg = <0x1005b000 0x1000>;
+        clocks = <&cpg CPG_MOD R9A08G045_I3C_PCLK>,
+                 <&cpg CPG_MOD R9A08G045_I3C_TCLK>;
+        clock-names = "pclk", "tclk";
+        interrupts = <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 294 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 295 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 296 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 297 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 298 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 299 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "ierr", "terr", "abort", "resp",
+                          "cmd", "ibi", "rx", "tx", "rcv",
+                          "st", "sp", "tend", "nack",
+                          "al", "tmo", "wu", "exit";
+        resets = <&cpg R9A08G045_I3C_PRESETN>,
+                 <&cpg R9A08G045_I3C_TRESETN>;
+        reset-names = "presetn", "tresetn";
+        power-domains = <&cpg>;
+        #address-cells = <3>;
+        #size-cells = <0>;
+    };
+...
diff --git a/Bindings/iio/adc/adi,ad4080.yaml b/Bindings/iio/adc/adi,ad4080.yaml
new file mode 100644 (file)
index 0000000..ed849ba
--- /dev/null
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2025 Analog Devices Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/adi,ad4080.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD4080 20-Bit, 40 MSPS, Differential SAR ADC
+
+maintainers:
+  - Antoniu Miclaus <antoniu.miclaus@analog.com>
+
+description: |
+  The AD4080 is a high speed, low noise, low distortion, 20-bit, Easy Drive,
+  successive approximation register (SAR) analog-to-digital converter (ADC).
+  Maintaining high performance (signal-to-noise and distortion (SINAD) ratio
+  > 90 dBFS) at signal frequencies in excess of 1 MHz enables the AD4080 to
+  service a wide variety of precision, wide bandwidth data acquisition
+  applications.
+
+  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4080.pdf
+
+$ref: /schemas/spi/spi-peripheral-props.yaml#
+
+properties:
+  compatible:
+    enum:
+      - adi,ad4080
+
+  reg:
+    maxItems: 1
+
+  spi-max-frequency:
+    description: Configuration of the SPI bus.
+    maximum: 50000000
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: cnv
+
+  vdd33-supply: true
+
+  vdd11-supply: true
+
+  vddldo-supply: true
+
+  iovdd-supply: true
+
+  vrefin-supply: true
+
+  io-backends:
+    maxItems: 1
+
+  adi,lvds-cnv-enable:
+    description: Enable the LVDS signal type on the CNV pin. Default is CMOS.
+    type: boolean
+
+  adi,num-lanes:
+    description:
+      Number of lanes on which the data is sent on the output (DA, DB pins).
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [1, 2]
+    default: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - vdd33-supply
+  - vrefin-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@0 {
+          compatible = "adi,ad4080";
+          reg = <0>;
+          spi-max-frequency = <10000000>;
+          vdd33-supply = <&vdd33>;
+          vddldo-supply = <&vddldo>;
+          vrefin-supply = <&vrefin>;
+          clocks = <&cnv>;
+          clock-names = "cnv";
+          io-backends = <&iio_backend>;
+        };
+    };
+...
diff --git a/Bindings/iio/adc/adi,ad4170-4.yaml b/Bindings/iio/adc/adi,ad4170-4.yaml
new file mode 100644 (file)
index 0000000..da93213
--- /dev/null
@@ -0,0 +1,554 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/adi,ad4170-4.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD4170-4 and similar Analog to Digital Converters
+
+maintainers:
+  - Marcelo Schmitt <marcelo.schmitt@analog.com>
+
+description: |
+  Analog Devices AD4170-4 series of Sigma-delta Analog to Digital Converters.
+  Specifications can be found at:
+    https://www.analog.com/media/en/technical-documentation/data-sheets/ad4170-4.pdf
+    https://www.analog.com/media/en/technical-documentation/data-sheets/ad4190-4.pdf
+    https://www.analog.com/media/en/technical-documentation/data-sheets/ad4195-4.pdf
+
+$ref: /schemas/spi/spi-peripheral-props.yaml#
+
+$defs:
+  reference-buffer:
+    description: |
+      Enable precharge buffer, full buffer, or skip reference buffering of
+      the positive/negative voltage reference. Because the output impedance
+      of the source driving the voltage reference inputs may be dynamic,
+      resistive/capacitive combinations of those inputs can cause DC gain
+      errors if the reference inputs go unbuffered into the ADC. Enable
+      reference buffering if the provided reference source has dynamic high
+      impedance output. Note the absolute voltage allowed on REFINn+ and REFINn-
+      inputs is from AVSS - 50 mV to AVDD + 50 mV when the reference buffers are
+      disabled but narrows to AVSS to AVDD when reference buffering is enabled
+      or in precharge mode.
+    $ref: /schemas/types.yaml#/definitions/string
+    enum: [ precharge, full, disabled ]
+    default: full
+
+properties:
+  compatible:
+    enum:
+      - adi,ad4170-4
+      - adi,ad4190-4
+      - adi,ad4195-4
+
+  avss-supply:
+    description:
+      Reference voltage supply for AVSS. A −2.625V minimum and 0V maximum supply
+      that powers the chip. If not provided, AVSS is assumed to be at system
+      ground (0V).
+
+  avdd-supply:
+    description:
+      A supply of 4.75V to 5.25V relative to AVSS that powers the chip (AVDD).
+
+  iovdd-supply:
+    description: 1.7V to 5.25V reference supply to the serial interface (IOVDD).
+
+  refin1p-supply:
+    description: REFIN+ supply that can be used as reference for conversion.
+
+  refin1n-supply:
+    description: REFIN- supply that can be used as reference for conversion.
+
+  refin2p-supply:
+    description: REFIN2+ supply that can be used as reference for conversion.
+
+  refin2n-supply:
+    description: REFIN2- supply that can be used as reference for conversion.
+
+  spi-cpol: true
+
+  spi-cpha: true
+
+  interrupts:
+    description:
+      Interrupt for signaling the completion of conversion results. The data
+      ready signal (RDY) used as interrupt is by default provided on the SDO
+      pin. Alternatively, it can be provided on the DIG_AUX1 pin in which case
+      the chip disables the RDY function on SDO. Thus, there can be only one
+      data ready interrupt enabled at a time.
+
+  interrupt-names:
+    description:
+      Specify which pin should be configured as Data Ready interrupt.
+    enum:
+      - sdo
+      - dig_aux1
+
+  clocks:
+    maxItems: 1
+    description:
+      Optional external clock source. Can specify either an external clock or
+      external crystal.
+
+  clock-names:
+    enum:
+      - ext-clk
+      - xtal
+    default: ext-clk
+
+  '#clock-cells':
+    const: 0
+
+  clock-output-names:
+    maxItems: 1
+
+  gpio-controller: true
+
+  "#gpio-cells":
+    const: 2
+    description: |
+      The first cell is for the GPIO number: 0 to 3.
+      The second cell takes standard GPIO flags.
+
+  ldac-gpios:
+    description:
+      GPIO connected to DIG_AUX2 pin to be used as LDAC toggle to control the
+      transfer of data from the DAC_INPUT_A register to the DAC.
+    maxItems: 1
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  adi,vbias-pins:
+    description: Analog inputs to apply a voltage bias of (AVDD − AVSS) / 2 to.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 1
+    maxItems: 9
+    items:
+      minimum: 0
+      maximum: 8
+
+allOf:
+  # Some devices don't have integrated DAC
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - adi,ad4190-4
+              - adi,ad4195-4
+    then:
+      properties:
+        ldac-gpios: false
+
+  # Require to specify the interrupt pin when using interrupts
+  - if:
+      required:
+        - interrupts
+    then:
+      required:
+        - interrupt-names
+
+  # If an external clock is set, the internal clock cannot go out and vice versa
+  - oneOf:
+      - required: [clocks]
+        properties:
+          '#clock-cells': false
+      - required: ['#clock-cells']
+        properties:
+          clocks: false
+
+required:
+  - compatible
+  - reg
+  - avdd-supply
+  - iovdd-supply
+  - spi-cpol
+  - spi-cpha
+
+unevaluatedProperties: false
+
+patternProperties:
+  "^channel@[0-9a-f]$":
+    $ref: /schemas/iio/adc/adc.yaml#
+    unevaluatedProperties: false
+    description:
+      Represents the external channels which are connected to the ADC.
+
+    properties:
+      reg:
+        description:
+          The channel number.
+        minimum: 0
+        maximum: 15
+
+      diff-channels:
+        description: |
+          This property is used for defining the inputs of a differential
+          voltage channel. The first value is the positive input and the second
+          value is the negative input of the channel.
+
+          Besides the analog input pins AIN0 to AIN8, there are special inputs
+          that can be selected with the following values:
+          17: Internal temperature sensor
+          18: (AVDD-AVSS)/5
+          19: (IOVDD-DGND)/5
+          20: DAC output
+          21: ALDO
+          22: DLDO
+          23: AVSS
+          24: DGND
+          25: REFIN+
+          26: REFIN-
+          27: REFIN2+
+          28: REFIN2-
+          29: REFOUT
+          For the internal temperature sensor, use the input number for both
+          inputs (i.e. diff-channels = <17 17>).
+        items:
+          enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+                 26, 27, 28, 29]
+
+      adi,reference-select:
+        description: |
+          Select the reference source to use when converting on the
+          specific channel. Valid values are:
+          0: REFIN+/REFIN-
+          1: REFIN2+/REFIN2−
+          2: REFOUT/AVSS (internal reference)
+          3: AVDD/AVSS
+          If not specified, REFOUT/AVSS is used.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [0, 1, 2, 3]
+        default: 1
+
+      adi,positive-reference-buffer:
+        $ref: '#/$defs/reference-buffer'
+
+      adi,negative-reference-buffer:
+        $ref: '#/$defs/reference-buffer'
+
+      adi,sensor-type:
+        description:
+          The AD4170-4 and similar designs have features to aid interfacing with
+          load cell weigh scale, RTD, and thermocouple sensors. Each of those
+          sensor types requires either distinct wiring configuration or
+          external circuitry for proper sensor operation and can use different
+          ADC chip functionality on their setups. A key characteristic of those
+          external sensors is that they must be excited either by voltage supply
+          or by ADC chip excitation signals. The sensor can then be read through
+          a pair of analog inputs. This property specifies which particular
+          sensor type is connected to the ADC so it can be properly setup and
+          handled. Omit this property for conventional (not weigh scale, RTD, or
+          thermocouple) ADC channel setups.
+        $ref: /schemas/types.yaml#/definitions/string
+        enum: [ weighscale, rtd, thermocouple ]
+
+      adi,excitation-pin-0:
+        description:
+          Analog input to apply excitation current to while the channel
+          is active.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 0
+        maximum: 20
+        default: 0
+
+      adi,excitation-pin-1:
+        description:
+          Analog input to apply excitation current to while the channel
+          is active.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 0
+        maximum: 20
+        default: 0
+
+      adi,excitation-pin-2:
+        description:
+          Analog input to apply excitation current to while the channel
+          is active.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 0
+        maximum: 20
+        default: 0
+
+      adi,excitation-pin-3:
+        description:
+          Analog input to apply excitation current to while the channel
+          is active.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 0
+        maximum: 20
+        default: 0
+
+      adi,excitation-current-0-microamp:
+        description:
+          Excitation current in microamperes to be applied to pin specified in
+          adi,excitation-pin-0 while this channel is active.
+        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
+        default: 0
+
+      adi,excitation-current-1-microamp:
+        description:
+          Excitation current in microamperes to be applied to pin specified in
+          adi,excitation-pin-1 while this channel is active.
+        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
+        default: 0
+
+      adi,excitation-current-2-microamp:
+        description:
+          Excitation current in microamperes to be applied to pin specified in
+          adi,excitation-pin-2 while this channel is active.
+        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
+        default: 0
+
+      adi,excitation-current-3-microamp:
+        description:
+          Excitation current in microamperes to be applied to pin specified in
+          adi,excitation-pin-3 while this channel is active.
+        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
+        default: 0
+
+      adi,excitation-ac:
+        type: boolean
+        description:
+          Whether the external sensor has to be AC or DC excited. When omitted,
+          it is DC excited.
+
+    allOf:
+      - oneOf:
+          - required: [single-channel, common-mode-channel]
+            properties:
+              diff-channels: false
+          - required: [diff-channels]
+            properties:
+              single-channel: false
+              common-mode-channel: false
+      # Usual ADC channels don't need external circuitry excitation.
+      - if:
+          not:
+            required:
+              - adi,sensor-type
+        then:
+          properties:
+            adi,excitation-pin-0: false
+            adi,excitation-pin-1: false
+            adi,excitation-pin-2: false
+            adi,excitation-pin-3: false
+            adi,excitation-current-0-microamp: false
+            adi,excitation-current-1-microamp: false
+            adi,excitation-current-2-microamp: false
+            adi,excitation-current-3-microamp: false
+            adi,excitation-ac: false
+      # Weigh scale bridge AC excited with one pair of predefined signals.
+      - if:
+          allOf:
+            - properties:
+                adi,sensor-type:
+                  contains:
+                    const: weighscale
+            - required:
+                - adi,excitation-ac
+                - adi,excitation-pin-2
+                - adi,excitation-pin-3
+            - not:
+                required:
+                  - adi,excitation-current-2-microamp
+                  - adi,excitation-current-3-microamp
+        then:
+          properties:
+            adi,excitation-pin-2:
+              const: 19
+            adi,excitation-pin-3:
+              const: 20
+      # Weigh scale bridge AC excited with two pairs of predefined signals.
+      - if:
+          allOf:
+            - properties:
+                adi,sensor-type:
+                  contains:
+                    const: weighscale
+            - required:
+                - adi,excitation-ac
+                - adi,excitation-pin-0
+                - adi,excitation-pin-1
+                - adi,excitation-pin-2
+                - adi,excitation-pin-3
+            - not:
+                required:
+                  - adi,excitation-current-0-microamp
+                  - adi,excitation-current-1-microamp
+                  - adi,excitation-current-2-microamp
+                  - adi,excitation-current-3-microamp
+        then:
+          properties:
+            adi,excitation-pin-0:
+              const: 17
+            adi,excitation-pin-1:
+              const: 18
+            adi,excitation-pin-2:
+              const: 19
+            adi,excitation-pin-3:
+              const: 20
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@0 {
+            compatible = "adi,ad4170-4";
+            reg = <0>;
+            spi-max-frequency = <20000000>;
+            spi-cpol;
+            spi-cpha;
+            avdd-supply = <&avdd>;
+            iovdd-supply = <&iovdd>;
+            clocks = <&clk>;
+            clock-names = "xtal";
+            interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
+            interrupt-names = "dig_aux1";
+            adi,vbias-pins = <8>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            // Sample AIN0 with respect to DGND throughout AVDD/DGND input range
+            // Pseudo-differential unipolar
+            channel@0 {
+                reg = <0>;
+                single-channel = <0>;
+                common-mode-channel = <24>;
+                adi,reference-select = <3>;
+            };
+            // Weigh scale sensor
+            channel@1 {
+                reg = <1>;
+                bipolar;
+                diff-channels = <1 2>;
+                adi,reference-select = <0>;
+                adi,positive-reference-buffer = "precharge";
+                adi,negative-reference-buffer = "precharge";
+                adi,sensor-type = "weighscale";
+                adi,excitation-pin-2 = <19>;
+                adi,excitation-pin-3 = <20>;
+                adi,excitation-ac;
+            };
+            // RTD sensor
+            channel@2 {
+                reg = <2>;
+                bipolar;
+                diff-channels = <3 4>;
+                adi,reference-select = <0>;
+                adi,sensor-type = "rtd";
+                adi,excitation-pin-0 = <5>;
+                adi,excitation-pin-1 = <6>;
+                adi,excitation-current-0-microamp = <500>;
+                adi,excitation-current-1-microamp = <500>;
+                adi,excitation-ac;
+            };
+            // Thermocouple sensor
+            channel@3 {
+                reg = <3>;
+                bipolar;
+                diff-channels = <7 8>;
+                adi,reference-select = <0>;
+                adi,sensor-type = "thermocouple";
+                adi,excitation-pin-0 = <18>;
+                adi,excitation-current-0-microamp = <500>;
+            };
+        };
+    };
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@0 {
+            compatible = "adi,ad4170-4";
+            reg = <0>;
+            spi-max-frequency = <20000000>;
+            spi-cpol;
+            spi-cpha;
+            avdd-supply = <&avdd>;
+            iovdd-supply = <&iovdd>;
+            #clock-cells = <0>;
+            clock-output-names = "ad4170-clk16mhz";
+            interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
+            interrupt-names = "dig_aux1";
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            // Sample AIN0 with respect to AIN1 throughout AVDD/AVSS input range
+            // Differential bipolar. If AVSS < 0V, differential true bipolar
+            channel@0 {
+                reg = <0>;
+                bipolar;
+                diff-channels = <0 1>;
+                adi,reference-select = <3>;
+            };
+            // Sample AIN2 with respect to DGND throughout AVDD/DGND input range
+            // Pseudo-differential unipolar
+            channel@1 {
+                reg = <1>;
+                single-channel = <2>;
+                common-mode-channel = <24>;
+                adi,reference-select = <3>;
+            };
+            // Sample AIN3 with respect to 2.5V throughout AVDD/AVSS input range
+            // Pseudo-differential bipolar
+            channel@2 {
+                reg = <2>;
+                bipolar;
+                single-channel = <3>;
+                common-mode-channel = <29>;
+                adi,reference-select = <3>;
+            };
+            // Sample AIN4 with respect to DGND throughout AVDD/AVSS input range
+            // Pseudo-differential bipolar
+            channel@3 {
+                reg = <3>;
+                bipolar;
+                single-channel = <4>;
+                common-mode-channel = <24>;
+                adi,reference-select = <3>;
+            };
+            // Sample AIN5 with respect to 2.5V throughout AVDD/AVSS input range
+            // Pseudo-differential unipolar (AD4170-4 datasheet page 46 example)
+            channel@4 {
+                reg = <4>;
+                single-channel = <5>;
+                common-mode-channel = <29>;
+                adi,reference-select = <3>;
+            };
+            // Sample AIN6 with respect to 2.5V throughout REFIN+/REFIN- input range
+            // Pseudo-differential bipolar
+            channel@5 {
+                reg = <5>;
+                bipolar;
+                single-channel = <6>;
+                common-mode-channel = <29>;
+                adi,reference-select = <0>;
+            };
+            // Weigh scale sensor
+            channel@6 {
+                reg = <6>;
+                bipolar;
+                diff-channels = <7 8>;
+                adi,reference-select = <0>;
+                adi,sensor-type = "weighscale";
+                adi,excitation-pin-0 = <17>;
+                adi,excitation-pin-1 = <18>;
+                adi,excitation-pin-2 = <19>;
+                adi,excitation-pin-3 = <20>;
+                adi,excitation-ac;
+            };
+        };
+    };
+...
index c6676d91b4e62b1ec9a24db4ef48d8521961bd09..b107322e0ea391143e25644dc572bbefcd49d984 100644 (file)
@@ -69,6 +69,8 @@ properties:
   spi-max-frequency:
     maximum: 25000000
 
+  spi-3wire: true
+
   '#address-cells':
     const: 1
 
diff --git a/Bindings/iio/adc/adi,ad7405.yaml b/Bindings/iio/adc/adi,ad7405.yaml
new file mode 100644 (file)
index 0000000..57f0970
--- /dev/null
@@ -0,0 +1,60 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2025 Analog Devices Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/adi,ad7405.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD7405 family
+
+maintainers:
+  - Dragos Bogdan <dragos.bogdan@analog.com>
+  - Pop Ioan Daniel <pop.ioan-daniel@analog.com>
+
+description: |
+  Analog Devices AD7405 is a high performance isolated ADC, 1-channel,
+  16-bit with a second-order Σ-Δ modulator that converts an analog input signal
+  into a high speed, single-bit data stream.
+
+  https://www.analog.com/media/en/technical-documentation/data-sheets/ad7405.pdf
+  https://www.analog.com/media/en/technical-documentation/data-sheets/adum7701.pdf
+  https://www.analog.com/media/en/technical-documentation/data-sheets/adum7702.pdf
+  https://www.analog.com/media/en/technical-documentation/data-sheets/ADuM7703.pdf
+
+properties:
+  compatible:
+    enum:
+      - adi,ad7405
+      - adi,adum7701
+      - adi,adum7702
+      - adi,adum7703
+
+  clocks:
+    maxItems: 1
+
+  vdd1-supply: true
+
+  vdd2-supply: true
+
+  io-backends:
+    maxItems: 1
+
+required:
+  - compatible
+  - clocks
+  - vdd1-supply
+  - vdd2-supply
+  - io-backends
+
+additionalProperties: false
+
+examples:
+  - |
+    adc {
+        compatible = "adi,ad7405";
+        clocks = <&axi_clk_gen 0>;
+        vdd1-supply = <&vdd1>;
+        vdd2-supply = <&vdd2>;
+        io-backends = <&axi_adc>;
+    };
+...
index 1a5209139e1338f803c66ad2b4d63ad53cc11d96..1180d2ffbf846e006eead8df6279561f5a5620f0 100644 (file)
@@ -204,6 +204,15 @@ patternProperties:
           considered a bipolar differential channel. Otherwise it is bipolar
           single-ended.
 
+      adi,rfilter-ohms:
+        description:
+          For ADCs that supports gain calibration, this property must be set to
+          the value of the external RFilter resistor. Proper gain error
+          correction is applied based on this value.
+        default: 0
+        minimum: 0
+        maximum: 64512
+
     required:
       - reg
       - bipolar
@@ -250,6 +259,25 @@ allOf:
       properties:
         adi,oversampling-ratio-gpios: false
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - adi,ad7605-4
+              - adi,ad7606-4
+              - adi,ad7606-6
+              - adi,ad7606-8
+              - adi,ad7607
+              - adi,ad7608
+              - adi,ad7609
+              - adi,ad7616
+    then:
+      patternProperties:
+        "^channel@[0-9a-f]+$":
+          properties:
+            adi,rfilter-ohms: false
+
   - if:
       properties:
         compatible:
@@ -392,6 +420,7 @@ examples:
                 reg = <8>;
                 diff-channels = <8 8>;
                 bipolar;
+                adi,rfilter-ohms = <2048>;
             };
 
         };
index 3ce59d4d065f5d657404f9709df40beee3ae78a3..c06d0fc791d39348d1bb0f26d200ae0f1be7a6da 100644 (file)
@@ -26,7 +26,26 @@ properties:
   clock-names:
     const: mclk
 
+  trigger-sources:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    minItems: 1
+    maxItems: 2
+    description: |
+      A list of phandles referencing trigger source providers. Each entry
+      represents a trigger source for the ADC:
+
+        - First entry specifies the device responsible for driving the
+          synchronization (SYNC_IN) pin, as an alternative to adi,sync-in-gpios.
+          This can be a `gpio-trigger` or another `ad7768-1` device. If the
+          device's own SYNC_OUT pin is internally connected to its SYNC_IN pin,
+          reference the device itself or omit this property.
+        - Second entry optionally defines a GPIO3 pin used as a START signal trigger.
+
+      Use the accompanying trigger source cell to identify the type of each entry.
+
   interrupts:
+    description:
+      DRDY (Data Ready) pin, which signals conversion results are available.
     maxItems: 1
 
   '#address-cells':
@@ -47,6 +66,19 @@ properties:
       in any way, for example if the filter decimation rate changes.
       As the line is active low, it should be marked GPIO_ACTIVE_LOW.
 
+  regulators:
+    type: object
+    description:
+      list of regulators provided by this controller.
+
+    properties:
+      vcm-output:
+        $ref: /schemas/regulator/regulator.yaml#
+        type: object
+        unevaluatedProperties: false
+
+    additionalProperties: false
+
   reset-gpios:
     maxItems: 1
 
@@ -57,6 +89,23 @@ properties:
   "#io-channel-cells":
     const: 1
 
+  "#trigger-source-cells":
+    description: |
+      Cell indicates the trigger output signal: 0 = SYNC_OUT, 1 = GPIO3,
+      2 = DRDY.
+
+      For better readability, macros for these values are available in
+      dt-bindings/iio/adc/adi,ad7768-1.h.
+    const: 1
+
+  gpio-controller: true
+
+  "#gpio-cells":
+    const: 2
+    description: |
+      The first cell is for the GPIO number: 0 to 3.
+      The second cell takes standard GPIO flags.
+
 required:
   - compatible
   - reg
@@ -65,7 +114,16 @@ required:
   - vref-supply
   - spi-cpol
   - spi-cpha
-  - adi,sync-in-gpios
+
+dependencies:
+  adi,sync-in-gpios:
+    not:
+      required:
+        - trigger-sources
+  trigger-sources:
+    not:
+      required:
+        - adi,sync-in-gpios
 
 patternProperties:
   "^channel@([0-9]|1[0-5])$":
@@ -105,6 +163,8 @@ examples:
             spi-max-frequency = <2000000>;
             spi-cpol;
             spi-cpha;
+            gpio-controller;
+            #gpio-cells = <2>;
             vref-supply = <&adc_vref>;
             interrupts = <25 IRQ_TYPE_EDGE_RISING>;
             interrupt-parent = <&gpio>;
@@ -120,6 +180,12 @@ examples:
                 reg = <0>;
                 label = "channel_0";
             };
+
+            regulators {
+              vcm_reg: vcm-output {
+                regulator-name = "ad7768-1-vcm";
+              };
+            };
         };
     };
 ...
index cf74f84d6103f26604727107802d14a04fb3054e..e91e421a3d6b54cc04269dca82d4f4dd25914e48 100644 (file)
@@ -27,6 +27,7 @@ description: |
       the ad7606 family.
 
   https://wiki.analog.com/resources/fpga/docs/axi_adc_ip
+  https://analogdevicesinc.github.io/hdl/library/axi_ad408x/index.html
   https://analogdevicesinc.github.io/hdl/library/axi_ad485x/index.html
   http://analogdevicesinc.github.io/hdl/library/axi_ad7606x/index.html
 
@@ -34,6 +35,7 @@ properties:
   compatible:
     enum:
       - adi,axi-adc-10.0.a
+      - adi,axi-ad408x
       - adi,axi-ad7606x
       - adi,axi-ad485x
 
index b489c984c1bbff8f4ef835b8e886dcebd6a43294..14363389f30aef85c596251fca0fe800200e2b41 100644 (file)
@@ -32,6 +32,10 @@ properties:
           - enum:
               - mediatek,mt7623-auxadc
           - const: mediatek,mt2701-auxadc
+      - items:
+          - enum:
+              - mediatek,mt7981-auxadc
+          - const: mediatek,mt7986-auxadc
       - items:
           - enum:
               - mediatek,mt6893-auxadc
index 6497c416094d82c3d9a3a5b7f4afee2d3d27d822..5d4ab701f51a1edb6cd96ec50c53191681281e44 100644 (file)
@@ -22,6 +22,8 @@ properties:
       - mediatek,mt6357-auxadc
       - mediatek,mt6358-auxadc
       - mediatek,mt6359-auxadc
+      - mediatek,mt6363-auxadc
+      - mediatek,mt6373-auxadc
 
   "#io-channel-cells":
     const: 1
index 2c5032be83bd0e7351688fde680bf3ae62f87d79..fd815ab30df12e9a5681aac48b24be6d52499844 100644 (file)
@@ -22,6 +22,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  clocks:
+    maxItems: 1
+
   vref-supply: true
 
   "#io-channel-cells":
diff --git a/Bindings/iio/adc/st,spear600-adc.yaml b/Bindings/iio/adc/st,spear600-adc.yaml
new file mode 100644 (file)
index 0000000..dd9ec30
--- /dev/null
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/st,spear600-adc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ST SPEAr ADC device driver
+
+maintainers:
+  - Jonathan Cameron <jic23@kernel.org>
+
+description: |
+  Integrated ADC inside the ST SPEAr SoC, SPEAr600, supporting
+  10-bit resolution. Datasheet can be found here:
+  https://www.st.com/resource/en/datasheet/spear600.pdf
+
+properties:
+  compatible:
+    enum:
+      - st,spear600-adc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  sampling-frequency:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 2500000
+    maximum: 20000000
+    description:
+      Default sampling frequency of the ADC in Hz.
+
+  vref-external:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 1000
+    maximum: 2800
+    description:
+      External voltage reference in milli-volts. If omitted the internal voltage
+      reference will be used.
+
+  average-samples:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 15
+    default: 0
+    description:
+      Number of samples to generate an average value. If omitted, single data
+      conversion will be used.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - sampling-frequency
+
+additionalProperties: false
+
+examples:
+  - |
+    adc@d8200000 {
+        compatible = "st,spear600-adc";
+        reg = <0xd8200000 0x1000>;
+        interrupt-parent = <&vic1>;
+        interrupts = <6>;
+        sampling-frequency = <5000000>;
+        vref-external = <2500>;        /* 2.5V VRef */
+    };
diff --git a/Bindings/iio/gyroscope/invensense,itg3200.yaml b/Bindings/iio/gyroscope/invensense,itg3200.yaml
new file mode 100644 (file)
index 0000000..4d8abf8
--- /dev/null
@@ -0,0 +1,59 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/gyroscope/invensense,itg3200.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Invensense ITG-3200 Gyroscope
+
+maintainers:
+  - Jonathan Cameron <jic23@kernel.org>
+
+description: |
+  Triple-axis, digital output gyroscope with a three 16-bit analog-to-digital
+  converters (ADCs) for digitizing the gyro outputs, a user-selectable internal
+  low-pass filter bandwidth, and a Fast-Mode I2C.
+
+properties:
+  compatible:
+    const: invensense,itg3200
+
+  reg:
+    maxItems: 1
+
+  vdd-supply: true
+
+  vlogic-supply: true
+
+  interrupts:
+    maxItems: 1
+
+  mount-matrix:
+    description: an optional 3x3 mounting rotation matrix.
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: ext_clock
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        gyroscope@68 {
+            compatible = "invensense,itg3200";
+            reg = <0x68>;
+            interrupt-parent = <&gpio2>;
+            interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
+        };
+    };
diff --git a/Bindings/iio/proximity/nicera,d3323aa.yaml b/Bindings/iio/proximity/nicera,d3323aa.yaml
new file mode 100644 (file)
index 0000000..65d9b44
--- /dev/null
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/proximity/nicera,d3323aa.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nicera D3-323-AA PIR sensor
+
+maintainers:
+  - Waqar Hameed <waqar.hameed@axis.com>
+
+description: |
+  PIR sensor for human detection.
+  Datasheet: https://www.endrich.com/Datenbl%C3%A4tter/Sensoren/D3-323-AA_e.pdf
+
+properties:
+  compatible:
+    const: nicera,d3323aa
+
+  vdd-supply:
+    description:
+      Supply voltage (1.8 to 5.5 V).
+
+  vout-clk-gpios:
+    maxItems: 1
+    description:
+      GPIO for clock and detection.
+      After reset, the device signals with two falling edges on this pin that it
+      is ready for configuration (within 1.2 s).
+      During configuration, it is used as clock for data reading and writing (on
+      data-gpios).
+      After all this, when device is in operational mode, it signals on this pin
+      for any detections.
+
+  data-gpios:
+    maxItems: 1
+    description:
+      GPIO for data reading and writing. This is denoted "DO (SI)" in datasheet.
+      During configuration, this pin is used for writing and reading
+      configuration data (together with vout-clk-gpios as clock).
+      After this, during operational mode, the device will output serial data on
+      this GPIO.
+
+required:
+  - compatible
+  - vdd-supply
+  - vout-clk-gpios
+  - data-gpios
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    proximity {
+        compatible = "nicera,d3323aa";
+        vdd-supply = <&regulator_3v3>;
+        vout-clk-gpios = <&gpio 78 GPIO_ACTIVE_HIGH>;
+        data-gpios = <&gpio 76 GPIO_ACTIVE_HIGH>;
+    };
+...
index b522c8d3ce0db719ff379f2fefbdca79e73d027c..f369385ffaf0227412b908242de84cd7dbeb08f7 100644 (file)
@@ -89,6 +89,24 @@ properties:
     required:
       - reg
 
+  rmi4-f1a@1a:
+    type: object
+    additionalProperties: false
+    $ref: input.yaml#
+    description:
+      RMI4 Function 1A is for capacitive keys.
+
+    properties:
+      reg:
+        maxItems: 1
+
+      linux,keycodes:
+        minItems: 1
+        maxItems: 4
+
+    required:
+      - reg
+
 patternProperties:
   "^rmi4-f1[12]@1[12]$":
     type: object
@@ -201,6 +219,7 @@ allOf:
 
 examples:
   - |
+    #include <dt-bindings/input/linux-event-codes.h>
     #include <dt-bindings/interrupt-controller/irq.h>
 
     i2c {
@@ -234,6 +253,7 @@ examples:
 
             rmi4-f1a@1a {
                 reg = <0x1a>;
+                linux,keycodes = <KEY_BACK KEY_HOME KEY_MENU>;
             };
         };
     };
index ab821490284ac0ea13568cb9ee357aea3faaa1b7..7d3edb58f72d84ed19fb87fdd136c97f855aba00 100644 (file)
@@ -43,6 +43,7 @@ properties:
       - focaltech,ft5452
       - focaltech,ft6236
       - focaltech,ft8201
+      - focaltech,ft8716
       - focaltech,ft8719
 
   reg:
diff --git a/Bindings/input/touchscreen/lpc32xx-tsc.txt b/Bindings/input/touchscreen/lpc32xx-tsc.txt
deleted file mode 100644 (file)
index 41cbf4b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-* NXP LPC32xx SoC Touchscreen Controller (TSC)
-
-Required properties:
-- compatible: must be "nxp,lpc3220-tsc"
-- reg: physical base address of the controller and length of memory mapped
-  region.
-- interrupts: The TSC/ADC interrupt
-
-Example:
-
-       tsc@40048000 {
-               compatible = "nxp,lpc3220-tsc";
-               reg = <0x40048000 0x1000>;
-               interrupt-parent = <&mic>;
-               interrupts = <39 0>;
-       };
diff --git a/Bindings/input/touchscreen/nxp,lpc3220-tsc.yaml b/Bindings/input/touchscreen/nxp,lpc3220-tsc.yaml
new file mode 100644 (file)
index 0000000..b6feda1
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/touchscreen/nxp,lpc3220-tsc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC32xx SoC Touchscreen Controller (TSC)
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc3220-tsc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc32xx-clock.h>
+
+    touchscreen@40048000 {
+        compatible = "nxp,lpc3220-tsc";
+        reg = <0x40048000 0x1000>;
+        interrupt-parent = <&mic>;
+        interrupts = <39 0>;
+        clocks = <&clk LPC32XX_CLK_ADC>;
+    };
index 1d8ca19fd37ae3fc5a858e5aa1fe01ff5b227090..e7ee7a0d74c40a869fa2db0364fc8a47f4e7d212 100644 (file)
@@ -37,6 +37,7 @@ unevaluatedProperties: false
 
 examples:
   - |
+    #include <dt-bindings/input/linux-event-codes.h>
     i2c {
             #address-cells = <1>;
             #size-cells = <0>;
@@ -46,5 +47,33 @@ examples:
                     reg = <0x55>;
                     interrupts = <2 0>;
                     gpios = <&gpio1 166 0>;
+
+                    touch-overlay {
+                            segment-0 {
+                                    label = "Touchscreen";
+                                    x-origin = <0>;
+                                    x-size = <240>;
+                                    y-origin = <40>;
+                                    y-size = <280>;
+                            };
+
+                            segment-1a {
+                                    label = "Camera light";
+                                    linux,code = <KEY_LIGHTS_TOGGLE>;
+                                    x-origin = <40>;
+                                    x-size = <40>;
+                                    y-origin = <0>;
+                                    y-size = <40>;
+                            };
+
+                            segment-2a {
+                                    label = "Power";
+                                    linux,code = <KEY_POWER>;
+                                    x-origin = <160>;
+                                    x-size = <40>;
+                                    y-origin = <0>;
+                                    y-size = <40>;
+                            };
+                    };
             };
     };
diff --git a/Bindings/input/touchscreen/ti.tsc2007.yaml b/Bindings/input/touchscreen/ti.tsc2007.yaml
new file mode 100644 (file)
index 0000000..8bb4bc7
--- /dev/null
@@ -0,0 +1,75 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/touchscreen/ti.tsc2007.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments tsc2007 touchscreen controller
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: ti,tsc2007
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  ti,x-plate-ohms:
+    description: X-plate resistance in ohms.
+
+  gpios: true
+
+  pendown-gpio: true
+
+  ti,max-rt:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: maximum pressure.
+
+  ti,fuzzx:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      specifies the absolute input fuzz x value.
+      If set, it will permit noise in the data up to +- the value given to the fuzz
+      parameter, that is used to filter noise from the event stream.
+
+  ti,fuzzy:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: specifies the absolute input fuzz y value.
+
+  ti,fuzzz:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: specifies the absolute input fuzz z value.
+
+  ti,poll-period:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      how much time to wait (in milliseconds) before reading again the
+      values from the tsc2007.
+
+required:
+  - compatible
+  - reg
+  - ti,x-plate-ohms
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        touch@49 {
+           compatible = "ti,tsc2007";
+           reg = <0x49>;
+           interrupt-parent = <&gpio4>;
+           interrupts = <0x0 0x8>;
+           gpios = <&gpio4 0 0>;
+           ti,x-plate-ohms = <180>;
+        };
+    };
index 431c13335c402f50a770988676bb0c20fb76da7c..3e3572aa483ae7df9e85aaa026f00672ce0dadd6 100644 (file)
@@ -87,6 +87,125 @@ properties:
   touchscreen-y-plate-ohms:
     description: Resistance of the Y-plate in Ohms
 
+  touch-overlay:
+    description: |
+      List of nodes defining segments (touch areas) on the touchscreen.
+
+      This object can be used to describe a series of segments to restrict
+      the region within touch events are reported or buttons with a specific
+      functionality.
+
+      This is of special interest if the touchscreen is shipped with a physical
+      overlay on top of it with a frame that hides some part of the original
+      touchscreen area. Printed buttons on that overlay are also a typical
+      use case.
+
+      A new touchscreen area is defined as a sub-node without a key code. If a
+      key code is defined in the sub-node, it will be interpreted as a button.
+
+      The x-origin and y-origin properties of a touchscreen area define the
+      offset of a new origin from where the touchscreen events are referenced.
+      This offset is applied to the events accordingly. The x-size and y-size
+      properties define the size of the touchscreen effective area.
+
+      The following example shows a new touchscreen area with the new origin
+      (0',0') for the touch events generated by the device.
+
+                   Touchscreen (full area)
+         ┌────────────────────────────────────────┐
+         │    ┌───────────────────────────────┐   │
+         │    │                               │   │
+         │    ├ y-size                        │   │
+         │    │                               │   │
+         │    │       touchscreen area        │   │
+         │    │         (no key code)         │   │
+         │    │                               │   │
+         │    │            x-size             │   │
+         │   ┌└──────────────┴────────────────┘   │
+         │(0',0')                                 │
+        ┌└────────────────────────────────────────┘
+      (0,0)
+
+      where (0',0') = (0+x-origin,0+y-origin)
+
+      Sub-nodes with key codes report the touch events on their surface as key
+      events instead.
+
+      The following example shows a touchscreen with a single button on it.
+
+              Touchscreen (full area)
+        ┌───────────────────────────────────┐
+        │                                   │
+        │                                   │
+        │   ┌─────────┐                     │
+        │   │button 0 │                     │
+        │   │KEY_POWER│                     │
+        │   └─────────┘                     │
+        │                                   │
+        │                                   │
+       ┌└───────────────────────────────────┘
+      (0,0)
+
+      Segments defining buttons and clipped toushcreen areas can be combined
+      as shown in the following example.
+      In that case only the events within the touchscreen area are reported
+      as touch events. Events within the button areas report their associated
+      key code. Any events outside the defined areas are ignored.
+
+                  Touchscreen (full area)
+        ┌─────────┬──────────────────────────────┐
+        │         │                              │
+        │         │    ┌───────────────────────┐ │
+        │ button 0│    │                       │ │
+        │KEY_POWER│    │                       │ │
+        │         │    │                       │ │
+        ├─────────┤    │   touchscreen area    │ │
+        │         │    │     (no key code)     │ │
+        │         │    │                       │ │
+        │ button 1│    │                       │ │
+        │ KEY_INFO│   ┌└───────────────────────┘ │
+        │         │(0',0')                       │
+       ┌└─────────┴──────────────────────────────┘
+      (0,0)
+
+    type: object
+
+    patternProperties:
+      '^segment-':
+        type: object
+        description:
+          Each segment is represented as a sub-node.
+        properties:
+          x-origin:
+            description: horizontal origin of the node area
+            $ref: /schemas/types.yaml#/definitions/uint32
+
+          y-origin:
+            description: vertical origin of the node area
+            $ref: /schemas/types.yaml#/definitions/uint32
+
+          x-size:
+            description: horizontal resolution of the node area
+            $ref: /schemas/types.yaml#/definitions/uint32
+
+          y-size:
+            description: vertical resolution of the node area
+            $ref: /schemas/types.yaml#/definitions/uint32
+
+          label:
+            description: descriptive name of the segment
+            $ref: /schemas/types.yaml#/definitions/string
+
+          linux,code: true
+
+        required:
+          - x-origin
+          - y-origin
+          - x-size
+          - y-size
+
+        unevaluatedProperties: false
+
 dependencies:
   touchscreen-size-x: [ touchscreen-size-y ]
   touchscreen-size-y: [ touchscreen-size-x ]
diff --git a/Bindings/input/touchscreen/tsc2007.txt b/Bindings/input/touchscreen/tsc2007.txt
deleted file mode 100644 (file)
index 210486a..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-* Texas Instruments tsc2007 touchscreen controller
-
-Required properties:
-- compatible: must be "ti,tsc2007".
-- reg: I2C address of the chip.
-- ti,x-plate-ohms: X-plate resistance in ohms.
-
-Optional properties:
-- gpios: the interrupt gpio the chip is connected to (through the penirq pin).
-  The penirq pin goes to low when the panel is touched.
-  (see GPIO binding[1] for more details).
-- interrupts: (gpio) interrupt to which the chip is connected
-  (see interrupt binding[0]).
-- ti,max-rt: maximum pressure.
-- ti,fuzzx: specifies the absolute input fuzz x value.
-  If set, it will permit noise in the data up to +- the value given to the fuzz
-  parameter, that is used to filter noise from the event stream.
-- ti,fuzzy: specifies the absolute input fuzz y value.
-- ti,fuzzz: specifies the absolute input fuzz z value.
-- ti,poll-period: how much time to wait (in milliseconds) before reading again the
-  values from the tsc2007.
-
-[0]: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
-[1]: Documentation/devicetree/bindings/gpio/gpio.txt
-
-Example:
-       &i2c1 {
-               /* ... */
-               tsc2007@49 {
-                       compatible = "ti,tsc2007";
-                       reg = <0x49>;
-                       interrupt-parent = <&gpio4>;
-                       interrupts = <0x0 0x8>;
-                       gpios = <&gpio4 0 0>;
-                       ti,x-plate-ohms = <180>;
-               };
-
-               /* ... */
-       };
index 58611ba2a0f440b25aa8aa37c36ca339eecbbc85..4d72525f407eccc188341c5a0fc88cab6338f401 100644 (file)
@@ -17,9 +17,14 @@ description: |
 
 properties:
   compatible:
-    enum:
-      - mediatek,mt8183-cci
-      - mediatek,mt8186-cci
+    oneOf:
+      - enum:
+          - mediatek,mt8183-cci
+          - mediatek,mt8186-cci
+      - items:
+          - enum:
+              - mediatek,mt7988-cci
+          - const: mediatek,mt8183-cci
 
   clocks:
     items:
diff --git a/Bindings/interconnect/qcom,milos-rpmh.yaml b/Bindings/interconnect/qcom,milos-rpmh.yaml
new file mode 100644 (file)
index 0000000..00b7a41
--- /dev/null
@@ -0,0 +1,136 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interconnect/qcom,milos-rpmh.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm RPMh Network-On-Chip Interconnect on Milos SoC
+
+maintainers:
+  - Luca Weiss <luca.weiss@fairphone.com>
+
+description: |
+  RPMh interconnect providers support system bandwidth requirements through
+  RPMh hardware accelerators known as Bus Clock Manager (BCM). The provider is
+  able to communicate with the BCM through the Resource State Coordinator (RSC)
+  associated with each execution environment. Provider nodes must point to at
+  least one RPMh device child node pertaining to their RSC and each provider
+  can map to multiple RPMh resources.
+
+  See also: include/dt-bindings/interconnect/qcom,milos-rpmh.h
+
+properties:
+  compatible:
+    enum:
+      - qcom,milos-aggre1-noc
+      - qcom,milos-aggre2-noc
+      - qcom,milos-clk-virt
+      - qcom,milos-cnoc-cfg
+      - qcom,milos-cnoc-main
+      - qcom,milos-gem-noc
+      - qcom,milos-lpass-ag-noc
+      - qcom,milos-mc-virt
+      - qcom,milos-mmss-noc
+      - qcom,milos-nsp-noc
+      - qcom,milos-pcie-anoc
+      - qcom,milos-system-noc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+required:
+  - compatible
+
+allOf:
+  - $ref: qcom,rpmh-common.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,milos-clk-virt
+              - qcom,milos-mc-virt
+    then:
+      properties:
+        reg: false
+    else:
+      required:
+        - reg
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,milos-pcie-anoc
+    then:
+      properties:
+        clocks:
+          items:
+            - description: aggre-NOC PCIe AXI clock
+            - description: cfg-NOC PCIe a-NOC AHB clock
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,milos-aggre1-noc
+    then:
+      properties:
+        clocks:
+          items:
+            - description: aggre USB3 PRIM AXI clock
+            - description: aggre UFS PHY AXI clock
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,milos-aggre2-noc
+    then:
+      properties:
+        clocks:
+          items:
+            - description: RPMH CC IPA clock
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,milos-aggre1-noc
+              - qcom,milos-aggre2-noc
+              - qcom,milos-pcie-anoc
+    then:
+      required:
+        - clocks
+    else:
+      properties:
+        clocks: false
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,milos-gcc.h>
+
+    interconnect-0 {
+        compatible = "qcom,milos-clk-virt";
+        #interconnect-cells = <2>;
+        qcom,bcm-voters = <&apps_bcm_voter>;
+    };
+
+    interconnect@16e0000 {
+        compatible = "qcom,milos-aggre1-noc";
+        reg = <0x016e0000 0x16400>;
+        #interconnect-cells = <2>;
+        clocks = <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
+                 <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>;
+        qcom,bcm-voters = <&apps_bcm_voter>;
+    };
index 83bcf0575cd372926102e2764055c3576822c915..256de140c03dc50cb77bc38a6bbc2ff96b910207 100644 (file)
@@ -76,6 +76,8 @@ properties:
     minItems: 1
     maxItems: 2
 
+  nonposted-mmio: true
+
 required:
   - compatible
   - interconnects
index cd4bb912e0dc556b3b2125fb44531f9028133b23..ab5a921c3495298546e4bd34ed3b9e4e85d3c747 100644 (file)
@@ -36,6 +36,11 @@ properties:
               - qcom,sm8350-epss-l3
               - qcom,sm8650-epss-l3
           - const: qcom,epss-l3
+      - items:
+          - enum:
+              - qcom,qcs8300-epss-l3
+          - const: qcom,sa8775p-epss-l3
+          - const: qcom,epss-l3
 
   reg:
     maxItems: 1
index 2e0c0bc7a37659621f25a2a6c6487a7185ad83a3..db19fd5c570865535fabbe54a39183e2f493bb9f 100644 (file)
@@ -13,7 +13,7 @@ description: |
   RPMh interconnect providers support system bandwidth requirements through
   RPMh hardware accelerators known as Bus Clock Manager (BCM).
 
-  See also:: include/dt-bindings/interconnect/qcom,sa8775p.h
+  See also: include/dt-bindings/interconnect/qcom,sa8775p.h
 
 properties:
   compatible:
index 4647dac740e9b8bf308470255ba92066fb2903c0..f5d3d0c5df7335911c4fbc92d5c97bc50f019e2e 100644 (file)
@@ -18,7 +18,7 @@ description: |
   least one RPMh device child node pertaining to their RSC and each provider
   can map to multiple RPMh resources.
 
-  See also:: include/dt-bindings/interconnect/qcom,sar2130p-rpmh.h
+  See also: include/dt-bindings/interconnect/qcom,sar2130p-rpmh.h
 
 properties:
   compatible:
index 78210791496f84c49989d6cb99a328ad997025b1..81c3dff539926eead123f86c12426931de1f7463 100644 (file)
@@ -14,7 +14,7 @@ description: |
   RPMh interconnect providers support system bandwidth requirements through
   RPMh hardware accelerators known as Bus Clock Manager (BCM).
 
-  See also:: include/dt-bindings/interconnect/qcom,sc7280.h
+  See also: include/dt-bindings/interconnect/qcom,sc7280.h
 
 properties:
   compatible:
index 100c686369092687e78f7c039135d63b5a02343b..2a5a7594bafdc36c8a26eaca5a4b0548d3f23dc1 100644 (file)
@@ -14,7 +14,7 @@ description: |
   RPMh interconnect providers support system bandwidth requirements through
   RPMh hardware accelerators known as Bus Clock Manager (BCM).
 
-  See also:: include/dt-bindings/interconnect/qcom,sc8280xp.h
+  See also: include/dt-bindings/interconnect/qcom,sc8280xp.h
 
 properties:
   compatible:
index b565d1a382f65f7fee5c071f0a46f79e7d03fbbb..978930324bbf05adf1f1f7932b695cc418efe7f9 100644 (file)
@@ -13,7 +13,7 @@ description: |
   RPMh interconnect providers support system bandwidth requirements through
   RPMh hardware accelerators known as Bus Clock Manager (BCM).
 
-  See also:: include/dt-bindings/interconnect/qcom,sm7150-rpmh.h
+  See also: include/dt-bindings/interconnect/qcom,sm7150-rpmh.h
 
 allOf:
   - $ref: qcom,rpmh-common.yaml#
index 300640a533dd67e59aa9d16f06500c152b1510ef..6a46dc7d473ec39f95990fd30f39fe2bc6ed4c3f 100644 (file)
@@ -14,7 +14,7 @@ description: |
   RPMh interconnect providers support system bandwidth requirements through
   RPMh hardware accelerators known as Bus Clock Manager (BCM).
 
-  See also:: include/dt-bindings/interconnect/qcom,sm8450.h
+  See also: include/dt-bindings/interconnect/qcom,sm8450.h
 
 properties:
   compatible:
index 716bd21f6041404522d17c232c301cfa49eca042..5325ebe23c771d571ef7f80326632d4511c641b4 100644 (file)
@@ -18,7 +18,7 @@ description: |
   least one RPMh device child node pertaining to their RSC and each provider
   can map to multiple RPMh resources.
 
-  See also:: include/dt-bindings/interconnect/qcom,sm8550-rpmh.h
+  See also: include/dt-bindings/interconnect/qcom,sm8550-rpmh.h
 
 properties:
   compatible:
index f9322de7cd61e677545f20ec913e21d541ff02f2..199fe7b232af39b96f9e0c97137cc9902f5062f0 100644 (file)
@@ -18,7 +18,7 @@ description: |
   least one RPMh device child node pertaining to their RSC and each provider
   can map to multiple RPMh resources.
 
-  See also:: include/dt-bindings/interconnect/qcom,sm8650-rpmh.h
+  See also: include/dt-bindings/interconnect/qcom,sm8650-rpmh.h
 
 properties:
   compatible:
index a816acc301e1fe5dce9316ef7c44b62b7fbd6758..366f40d980c2af9918cd6f9436a1c8ba6c771beb 100644 (file)
@@ -18,7 +18,7 @@ description: |
   least one RPMh device child node pertaining to their RSC and each provider
   can map to multiple RPMh resources.
 
-  See also:: include/dt-bindings/interconnect/qcom,sm8750-rpmh.h
+  See also: include/dt-bindings/interconnect/qcom,sm8750-rpmh.h
 
 properties:
   compatible:
index 08b0210e0e5960221c95177fe7e383d355096cb7..0840b0ec6e27619d87506f98c7e5c2dd17314cfd 100644 (file)
@@ -18,7 +18,7 @@ description: |
   least one RPMh device child node pertaining to their RSC and each provider
   can map to multiple RPMh resources.
 
-  See also:: include/dt-bindings/interconnect/qcom,x1e80100-rpmh.h
+  See also: include/dt-bindings/interconnect/qcom,x1e80100-rpmh.h
 
 properties:
   compatible:
diff --git a/Bindings/interrupt-controller/andestech,plicsw.yaml b/Bindings/interrupt-controller/andestech,plicsw.yaml
new file mode 100644 (file)
index 0000000..eb2eb61
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/andestech,plicsw.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Andes machine-level software interrupt controller
+
+description:
+  In the Andes platform such as QiLai SoC, the PLIC module is instantiated a
+  second time with all interrupt sources tied to zero as the software interrupt
+  controller (PLIC_SW). PLIC_SW directly connects to the machine-mode
+  inter-processor interrupt lines of CPUs, so RISC-V per-CPU local interrupt
+  controller is the parent interrupt controller for PLIC_SW. PLIC_SW can
+  generate machine-mode inter-processor interrupts through programming its
+  registers.
+
+maintainers:
+  - Ben Zong-You Xie <ben717@andestech.com>
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - andestech,qilai-plicsw
+      - const: andestech,plicsw
+
+  reg:
+    maxItems: 1
+
+  interrupts-extended:
+    minItems: 1
+    maxItems: 15872
+    description:
+      Specifies which harts are connected to the PLIC_SW. Each item must points
+      to a riscv,cpu-intc node, which has a riscv cpu node as parent.
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts-extended
+
+examples:
+  - |
+    interrupt-controller@400000 {
+      compatible = "andestech,qilai-plicsw", "andestech,plicsw";
+      reg = <0x400000 0x400000>;
+      interrupts-extended = <&cpu0intc 3>,
+                            <&cpu1intc 3>,
+                            <&cpu2intc 3>,
+                            <&cpu3intc 3>;
+    };
diff --git a/Bindings/interrupt-controller/apm,xgene1-msi.yaml b/Bindings/interrupt-controller/apm,xgene1-msi.yaml
new file mode 100644 (file)
index 0000000..49db952
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/apm,xgene1-msi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: AppliedMicro X-Gene v1 PCIe MSI controller
+
+maintainers:
+  - Toan Le <toan@os.amperecomputing.com>
+
+properties:
+  compatible:
+    const: apm,xgene1-msi
+
+  msi-controller: true
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 16
+
+required:
+  - compatible
+  - msi-controller
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    msi@79000000 {
+        compatible = "apm,xgene1-msi";
+        msi-controller;
+        reg = <0x79000000 0x900000>;
+        interrupts = <0x0 0x10 0x4>,
+                     <0x0 0x11 0x4>,
+                     <0x0 0x12 0x4>,
+                     <0x0 0x13 0x4>,
+                     <0x0 0x14 0x4>,
+                     <0x0 0x15 0x4>,
+                     <0x0 0x16 0x4>,
+                     <0x0 0x17 0x4>,
+                     <0x0 0x18 0x4>,
+                     <0x0 0x19 0x4>,
+                     <0x0 0x1a 0x4>,
+                     <0x0 0x1b 0x4>,
+                     <0x0 0x1c 0x4>,
+                     <0x0 0x1d 0x4>,
+                     <0x0 0x1e 0x4>,
+                     <0x0 0x1f 0x4>;
+    };
diff --git a/Bindings/interrupt-controller/arm,gic-v5-iwb.yaml b/Bindings/interrupt-controller/arm,gic-v5-iwb.yaml
new file mode 100644 (file)
index 0000000..99a266a
--- /dev/null
@@ -0,0 +1,78 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/arm,gic-v5-iwb.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM Generic Interrupt Controller, version 5 Interrupt Wire Bridge (IWB)
+
+maintainers:
+  - Lorenzo Pieralisi <lpieralisi@kernel.org>
+  - Marc Zyngier <maz@kernel.org>
+
+description: |
+  The GICv5 architecture defines the guidelines to implement GICv5
+  compliant interrupt controllers for AArch64 systems.
+
+  The GICv5 specification can be found at
+  https://developer.arm.com/documentation/aes0070
+
+  GICv5 has zero or more Interrupt Wire Bridges (IWB) that are responsible
+  for translating wire signals into interrupt messages to the GICv5 ITS.
+
+allOf:
+  - $ref: /schemas/interrupt-controller.yaml#
+
+properties:
+  compatible:
+    const: arm,gic-v5-iwb
+
+  reg:
+    items:
+      - description: IWB control frame
+
+  "#address-cells":
+    const: 0
+
+  "#interrupt-cells":
+    description: |
+      The 1st cell corresponds to the IWB wire.
+
+      The 2nd cell is the flags, encoded as follows:
+      bits[3:0] trigger type and level flags.
+
+      1 = low-to-high edge triggered
+      2 = high-to-low edge triggered
+      4 = active high level-sensitive
+      8 = active low level-sensitive
+
+    const: 2
+
+  interrupt-controller: true
+
+  msi-parent:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - "#interrupt-cells"
+  - interrupt-controller
+  - msi-parent
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@2f000000 {
+      compatible = "arm,gic-v5-iwb";
+      reg = <0x2f000000 0x10000>;
+
+      #address-cells = <0>;
+
+      #interrupt-cells = <2>;
+      interrupt-controller;
+
+      msi-parent = <&its0 64>;
+    };
+...
diff --git a/Bindings/interrupt-controller/arm,gic-v5.yaml b/Bindings/interrupt-controller/arm,gic-v5.yaml
new file mode 100644 (file)
index 0000000..86ca7f3
--- /dev/null
@@ -0,0 +1,267 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/arm,gic-v5.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM Generic Interrupt Controller, version 5
+
+maintainers:
+  - Lorenzo Pieralisi <lpieralisi@kernel.org>
+  - Marc Zyngier <maz@kernel.org>
+
+description: |
+  The GICv5 architecture defines the guidelines to implement GICv5
+  compliant interrupt controllers for AArch64 systems.
+
+  The GICv5 specification can be found at
+  https://developer.arm.com/documentation/aes0070
+
+  The GICv5 architecture is composed of multiple components:
+    - one or more IRS (Interrupt Routing Service)
+    - zero or more ITS (Interrupt Translation Service)
+
+  The architecture defines:
+    - PE-Private Peripheral Interrupts (PPI)
+    - Shared Peripheral Interrupts (SPI)
+    - Logical Peripheral Interrupts (LPI)
+
+allOf:
+  - $ref: /schemas/interrupt-controller.yaml#
+
+properties:
+  compatible:
+    const: arm,gic-v5
+
+  "#address-cells":
+    enum: [ 1, 2 ]
+
+  "#size-cells":
+    enum: [ 1, 2 ]
+
+  ranges: true
+
+  "#interrupt-cells":
+    description: |
+      The 1st cell corresponds to the INTID.Type field in the INTID; 1 for PPI,
+      3 for SPI. LPI interrupts must not be described in the bindings since
+      they are allocated dynamically by the software component managing them.
+
+      The 2nd cell contains the interrupt INTID.ID field.
+
+      The 3rd cell is the flags, encoded as follows:
+      bits[3:0] trigger type and level flags.
+
+        1 = low-to-high edge triggered
+        2 = high-to-low edge triggered
+        4 = active high level-sensitive
+        8 = active low level-sensitive
+
+    const: 3
+
+  interrupt-controller: true
+
+  interrupts:
+    description:
+      The VGIC maintenance interrupt.
+    maxItems: 1
+
+required:
+  - compatible
+  - "#address-cells"
+  - "#size-cells"
+  - ranges
+  - "#interrupt-cells"
+  - interrupt-controller
+
+patternProperties:
+  "^irs@[0-9a-f]+$":
+    type: object
+    description:
+      GICv5 has one or more Interrupt Routing Services (IRS) that are
+      responsible for handling IRQ state and routing.
+
+    additionalProperties: false
+
+    properties:
+      compatible:
+        const: arm,gic-v5-irs
+
+      reg:
+        minItems: 1
+        items:
+          - description: IRS config frames
+          - description: IRS setlpi frames
+
+      reg-names:
+        description:
+          Describe config and setlpi frames that are present.
+          "ns-" stands for non-secure, "s-" for secure, "realm-" for realm
+          and "el3-" for EL3.
+        minItems: 1
+        maxItems: 8
+        items:
+          enum: [ ns-config, s-config, realm-config, el3-config, ns-setlpi,
+                  s-setlpi, realm-setlpi, el3-setlpi ]
+
+      "#address-cells":
+        enum: [ 1, 2 ]
+
+      "#size-cells":
+        enum: [ 1, 2 ]
+
+      ranges: true
+
+      dma-noncoherent:
+        description:
+          Present if the GIC IRS permits programming shareability and
+          cacheability attributes but is connected to a non-coherent
+          downstream interconnect.
+
+      cpus:
+        description:
+          CPUs managed by the IRS.
+
+      arm,iaffids:
+        $ref: /schemas/types.yaml#/definitions/uint16-array
+        description:
+          Interrupt AFFinity ID (IAFFID) associated with the CPU whose
+          CPU node phandle is at the same index in the cpus array.
+
+    patternProperties:
+      "^its@[0-9a-f]+$":
+        type: object
+        description:
+          GICv5 has zero or more Interrupt Translation Services (ITS) that are
+          used to route Message Signalled Interrupts (MSI) to the CPUs. Each
+          ITS is connected to an IRS.
+        additionalProperties: false
+
+        properties:
+          compatible:
+            const: arm,gic-v5-its
+
+          reg:
+            items:
+              - description: ITS config frames
+
+          reg-names:
+            description:
+              Describe config frames that are present.
+              "ns-" stands for non-secure, "s-" for secure, "realm-" for realm
+              and "el3-" for EL3.
+            minItems: 1
+            maxItems: 4
+            items:
+              enum: [ ns-config, s-config, realm-config, el3-config ]
+
+          "#address-cells":
+            enum: [ 1, 2 ]
+
+          "#size-cells":
+            enum: [ 1, 2 ]
+
+          ranges: true
+
+          dma-noncoherent:
+            description:
+              Present if the GIC ITS permits programming shareability and
+              cacheability attributes but is connected to a non-coherent
+              downstream interconnect.
+
+        patternProperties:
+          "^msi-controller@[0-9a-f]+$":
+            type: object
+            description:
+              GICv5 ITS has one or more translate register frames.
+            additionalProperties: false
+
+            properties:
+              reg:
+                items:
+                  - description: ITS translate frames
+
+              reg-names:
+                description:
+                  Describe translate frames that are present.
+                  "ns-" stands for non-secure, "s-" for secure, "realm-" for realm
+                  and "el3-" for EL3.
+                minItems: 1
+                maxItems: 4
+                items:
+                  enum: [ ns-translate, s-translate, realm-translate, el3-translate ]
+
+              "#msi-cells":
+                description:
+                  The single msi-cell is the DeviceID of the device which will
+                  generate the MSI.
+                const: 1
+
+              msi-controller: true
+
+            required:
+              - reg
+              - reg-names
+              - "#msi-cells"
+              - msi-controller
+
+        required:
+          - compatible
+          - reg
+          - reg-names
+
+    required:
+      - compatible
+      - reg
+      - reg-names
+      - cpus
+      - arm,iaffids
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller {
+      compatible = "arm,gic-v5";
+
+      #interrupt-cells = <3>;
+      interrupt-controller;
+
+      #address-cells = <1>;
+      #size-cells = <1>;
+      ranges;
+
+      interrupts = <1 25 4>;
+
+      irs@2f1a0000 {
+        compatible = "arm,gic-v5-irs";
+        reg = <0x2f1a0000 0x10000>;  // IRS_CONFIG_FRAME
+        reg-names = "ns-config";
+
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges;
+
+        cpus = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>, <&cpu4>, <&cpu5>, <&cpu6>, <&cpu7>;
+        arm,iaffids = /bits/ 16 <0 1 2 3 4 5 6 7>;
+
+        its@2f120000 {
+          compatible = "arm,gic-v5-its";
+          reg = <0x2f120000 0x10000>;   // ITS_CONFIG_FRAME
+          reg-names = "ns-config";
+
+          #address-cells = <1>;
+          #size-cells = <1>;
+          ranges;
+
+          msi-controller@2f130000 {
+            reg = <0x2f130000 0x10000>;   // ITS_TRANSLATE_FRAME
+            reg-names = "ns-translate";
+
+            #msi-cells = <1>;
+            msi-controller;
+          };
+        };
+      };
+    };
+...
index d89eca956c5faaada7c1ab6ff94c6cf47724cebd..32dfa2bf05d84fdd78c6f7f14d6e8e7718e45f22 100644 (file)
@@ -17,6 +17,7 @@ description:
 properties:
   compatible:
     enum:
+      - arm,armv7m-nvic # deprecated
       - arm,v6m-nvic
       - arm,v7m-nvic
       - arm,v8m-nvic
@@ -30,7 +31,7 @@ properties:
   interrupt-controller: true
 
   '#interrupt-cells':
-    const: 2
+    enum: [1, 2]
     description: |
       Number of cells to encode an interrupt source:
       first = interrupt number, second = priority.
diff --git a/Bindings/interrupt-controller/fsl,icoll.yaml b/Bindings/interrupt-controller/fsl,icoll.yaml
new file mode 100644 (file)
index 0000000..7b09fd7
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/fsl,icoll.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale MXS icoll Interrupt controller
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - fsl,imx23-icoll
+              - fsl,imx28-icoll
+          - const: fsl,icoll
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@80000000 {
+        compatible = "fsl,imx28-icoll", "fsl,icoll";
+        reg = <0x80000000 0x2000>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
+
diff --git a/Bindings/interrupt-controller/fsl,imx8qxp-dc-intc.yaml b/Bindings/interrupt-controller/fsl,imx8qxp-dc-intc.yaml
new file mode 100644 (file)
index 0000000..6985ee6
--- /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/interrupt-controller/fsl,imx8qxp-dc-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX8qxp Display Controller interrupt controller
+
+description: |
+  The Display Controller has a built-in interrupt controller with the following
+  features for all relevant HW events:
+
+  * Enable bit (mask)
+  * Status bit (set by an HW event)
+  * Preset bit (can be used by SW to set status)
+  * Clear bit (used by SW to reset the status)
+
+  Each interrupt can be connected as IRQ (maskable) and/or NMI (non-maskable).
+  Alternatively the un-masked trigger signals for all HW events are provided,
+  allowing it to use a global interrupt controller instead.
+
+  Each interrupt can be protected against SW running in user mode. In that case,
+  only privileged AHB access can control the interrupt status.
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx8qxp-dc-intc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 1
+
+  interrupts:
+    items:
+      - description: store9 shadow load interrupt(blit engine)
+      - description: store9 frame complete interrupt(blit engine)
+      - description: store9 sequence complete interrupt(blit engine)
+      - description:
+          extdst0 shadow load interrupt
+          (display controller, content stream 0)
+      - description:
+          extdst0 frame complete interrupt
+          (display controller, content stream 0)
+      - description:
+          extdst0 sequence complete interrupt
+          (display controller, content stream 0)
+      - description:
+          extdst4 shadow load interrupt
+          (display controller, safety stream 0)
+      - description:
+          extdst4 frame complete interrupt
+          (display controller, safety stream 0)
+      - description:
+          extdst4 sequence complete interrupt
+          (display controller, safety stream 0)
+      - description:
+          extdst1 shadow load interrupt
+          (display controller, content stream 1)
+      - description:
+          extdst1 frame complete interrupt
+          (display controller, content stream 1)
+      - description:
+          extdst1 sequence complete interrupt
+          (display controller, content stream 1)
+      - description:
+          extdst5 shadow load interrupt
+          (display controller, safety stream 1)
+      - description:
+          extdst5 frame complete interrupt
+          (display controller, safety stream 1)
+      - description:
+          extdst5 sequence complete interrupt
+          (display controller, safety stream 1)
+      - description:
+          disengcfg0 shadow load interrupt
+          (display controller, display stream 0)
+      - description:
+          disengcfg0 frame complete interrupt
+          (display controller, display stream 0)
+      - description:
+          disengcfg0 sequence complete interrupt
+          (display controller, display stream 0)
+      - description:
+          framegen0 programmable interrupt0
+          (display controller, display stream 0)
+      - description:
+          framegen0 programmable interrupt1
+          (display controller, display stream 0)
+      - description:
+          framegen0 programmable interrupt2
+          (display controller, display stream 0)
+      - description:
+          framegen0 programmable interrupt3
+          (display controller, display stream 0)
+      - description:
+          signature0 shadow load interrupt
+          (display controller, display stream 0)
+      - description:
+          signature0 measurement valid interrupt
+          (display controller, display stream 0)
+      - description:
+          signature0 error condition interrupt
+          (display controller, display stream 0)
+      - description:
+          disengcfg1 shadow load interrupt
+          (display controller, display stream 1)
+      - description:
+          disengcfg1 frame complete interrupt
+          (display controller, display stream 1)
+      - description:
+          disengcfg1 sequence complete interrupt
+          (display controller, display stream 1)
+      - description:
+          framegen1 programmable interrupt0
+          (display controller, display stream 1)
+      - description:
+          framegen1 programmable interrupt1
+          (display controller, display stream 1)
+      - description:
+          framegen1 programmable interrupt2
+          (display controller, display stream 1)
+      - description:
+          framegen1 programmable interrupt3
+          (display controller, display stream 1)
+      - description:
+          signature1 shadow load interrupt
+          (display controller, display stream 1)
+      - description:
+          signature1 measurement valid interrupt
+          (display controller, display stream 1)
+      - description:
+          signature1 error condition interrupt
+          (display controller, display stream 1)
+      - description: reserved
+      - description:
+          command sequencer error condition interrupt(command sequencer)
+      - description:
+          common control software interrupt0(common control)
+      - description:
+          common control software interrupt1(common control)
+      - description:
+          common control software interrupt2(common control)
+      - description:
+          common control software interrupt3(common control)
+      - description:
+          framegen0 synchronization status activated interrupt
+          (display controller, safety stream 0)
+      - description:
+          framegen0 synchronization status deactivated interrupt
+          (display controller, safety stream 0)
+      - description:
+          framegen0 synchronization status activated interrupt
+          (display controller, content stream 0)
+      - description:
+          framegen0 synchronization status deactivated interrupt
+          (display controller, content stream 0)
+      - description:
+          framegen1 synchronization status activated interrupt
+          (display controller, safety stream 1)
+      - description:
+          framegen1 synchronization status deactivated interrupt
+          (display controller, safety stream 1)
+      - description:
+          framegen1 synchronization status activated interrupt
+          (display controller, content stream 1)
+      - description:
+          framegen1 synchronization status deactivated interrupt
+          (display controller, content stream 1)
+    minItems: 49
+
+  interrupt-names:
+    items:
+      - const: store9_shdload
+      - const: store9_framecomplete
+      - const: store9_seqcomplete
+      - const: extdst0_shdload
+      - const: extdst0_framecomplete
+      - const: extdst0_seqcomplete
+      - const: extdst4_shdload
+      - const: extdst4_framecomplete
+      - const: extdst4_seqcomplete
+      - const: extdst1_shdload
+      - const: extdst1_framecomplete
+      - const: extdst1_seqcomplete
+      - const: extdst5_shdload
+      - const: extdst5_framecomplete
+      - const: extdst5_seqcomplete
+      - const: disengcfg_shdload0
+      - const: disengcfg_framecomplete0
+      - const: disengcfg_seqcomplete0
+      - const: framegen0_int0
+      - const: framegen0_int1
+      - const: framegen0_int2
+      - const: framegen0_int3
+      - const: sig0_shdload
+      - const: sig0_valid
+      - const: sig0_error
+      - const: disengcfg_shdload1
+      - const: disengcfg_framecomplete1
+      - const: disengcfg_seqcomplete1
+      - const: framegen1_int0
+      - const: framegen1_int1
+      - const: framegen1_int2
+      - const: framegen1_int3
+      - const: sig1_shdload
+      - const: sig1_valid
+      - const: sig1_error
+      - const: reserved
+      - const: cmdseq_error
+      - const: comctrl_sw0
+      - const: comctrl_sw1
+      - const: comctrl_sw2
+      - const: comctrl_sw3
+      - const: framegen0_primsync_on
+      - const: framegen0_primsync_off
+      - const: framegen0_secsync_on
+      - const: framegen0_secsync_off
+      - const: framegen1_primsync_on
+      - const: framegen1_primsync_off
+      - const: framegen1_secsync_on
+      - const: framegen1_secsync_off
+    minItems: 49
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupt-controller
+  - "#interrupt-cells"
+  - interrupts
+  - interrupt-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8-lpcg.h>
+
+    interrupt-controller@56180040 {
+        compatible = "fsl,imx8qxp-dc-intc";
+        reg = <0x56180040 0x60>;
+        clocks = <&dc0_lpcg IMX_LPCG_CLK_5>;
+        interrupt-controller;
+        interrupt-parent = <&dc0_irqsteer>;
+        #interrupt-cells = <1>;
+        interrupts = <448>, <449>, <450>,  <64>,
+                      <65>,  <66>,  <67>,  <68>,
+                      <69>,  <70>, <193>, <194>,
+                     <195>, <196>, <197>,  <72>,
+                      <73>,  <74>,  <75>,  <76>,
+                      <77>,  <78>,  <79>,  <80>,
+                      <81>, <199>, <200>, <201>,
+                     <202>, <203>, <204>, <205>,
+                     <206>, <207>, <208>,   <5>,
+                       <0>,   <1>,   <2>,   <3>,
+                       <4>,  <82>,  <83>,  <84>,
+                      <85>, <209>, <210>, <211>,
+                     <212>;
+        interrupt-names = "store9_shdload",
+                          "store9_framecomplete",
+                          "store9_seqcomplete",
+                          "extdst0_shdload",
+                          "extdst0_framecomplete",
+                          "extdst0_seqcomplete",
+                          "extdst4_shdload",
+                          "extdst4_framecomplete",
+                          "extdst4_seqcomplete",
+                          "extdst1_shdload",
+                          "extdst1_framecomplete",
+                          "extdst1_seqcomplete",
+                          "extdst5_shdload",
+                          "extdst5_framecomplete",
+                          "extdst5_seqcomplete",
+                          "disengcfg_shdload0",
+                          "disengcfg_framecomplete0",
+                          "disengcfg_seqcomplete0",
+                          "framegen0_int0",
+                          "framegen0_int1",
+                          "framegen0_int2",
+                          "framegen0_int3",
+                          "sig0_shdload",
+                          "sig0_valid",
+                          "sig0_error",
+                          "disengcfg_shdload1",
+                          "disengcfg_framecomplete1",
+                          "disengcfg_seqcomplete1",
+                          "framegen1_int0",
+                          "framegen1_int1",
+                          "framegen1_int2",
+                          "framegen1_int3",
+                          "sig1_shdload",
+                          "sig1_valid",
+                          "sig1_error",
+                          "reserved",
+                          "cmdseq_error",
+                          "comctrl_sw0",
+                          "comctrl_sw1",
+                          "comctrl_sw2",
+                          "comctrl_sw3",
+                          "framegen0_primsync_on",
+                          "framegen0_primsync_off",
+                          "framegen0_secsync_on",
+                          "framegen0_secsync_off",
+                          "framegen1_primsync_on",
+                          "framegen1_primsync_off",
+                          "framegen1_secsync_on",
+                          "framegen1_secsync_off";
+    };
diff --git a/Bindings/interrupt-controller/fsl,mpic-msi.yaml b/Bindings/interrupt-controller/fsl,mpic-msi.yaml
new file mode 100644 (file)
index 0000000..78d7849
--- /dev/null
@@ -0,0 +1,161 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/fsl,mpic-msi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale MSI interrupt controller
+
+description: |
+  The Freescale hypervisor and msi-address-64
+  -------------------------------------------
+
+  Normally, PCI devices have access to all of CCSR via an ATMU mapping.  The
+  Freescale MSI driver calculates the address of MSIIR (in the MSI register
+  block) and sets that address as the MSI message address.
+
+  In a virtualized environment, the hypervisor may need to create an IOMMU
+  mapping for MSIIR.  The Freescale ePAPR hypervisor has this requirement
+  because of hardware limitations of the Peripheral Access Management Unit
+  (PAMU), which is currently the only IOMMU that the hypervisor supports.
+  The ATMU is programmed with the guest physical address, and the PAMU
+  intercepts transactions and reroutes them to the true physical address.
+
+  In the PAMU, each PCI controller is given only one primary window.  The
+  PAMU restricts DMA operations so that they can only occur within a window.
+  Because PCI devices must be able to DMA to memory, the primary window must
+  be used to cover all of the guest's memory space.
+
+  PAMU primary windows can be divided into 256 subwindows, and each
+  subwindow can have its own address mapping ("guest physical" to "true
+  physical").  However, each subwindow has to have the same alignment, which
+  means they cannot be located at just any address.  Because of these
+  restrictions, it is usually impossible to create a 4KB subwindow that
+  covers MSIIR where it's normally located.
+
+  Therefore, the hypervisor has to create a subwindow inside the same
+  primary window used for memory, but mapped to the MSIR block (where MSIIR
+  lives).  The first subwindow after the end of guest memory is used for
+  this.  The address specified in the msi-address-64 property is the PCI
+  address of MSIIR.  The hypervisor configures the PAMU to map that address to
+  the true physical address of MSIIR.
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - fsl,mpic-msi
+          - fsl,mpic-msi-v4.3
+          - fsl,ipic-msi
+          - fsl,vmpic-msi
+          - fsl,vmpic-msi-v4.3
+      - items:
+          - enum:
+              - fsl,mpc8572-msi
+              - fsl,mpc8610-msi
+              - fsl,mpc8641-msi
+          - const: fsl,mpic-msi
+
+  reg:
+    minItems: 1
+    items:
+      - description: Address and length of the shared message interrupt
+          register set
+      - description: Address of aliased MSIIR or MSIIR1 register for platforms
+          that have such an alias. If using MSIIR1, the second region must be
+          added because different MSI group has different MSIIR1 offset.
+
+  interrupts:
+    minItems: 1
+    maxItems: 16
+    description:
+      Each one of the interrupts here is one entry per 32 MSIs, and routed to
+      the host interrupt controller. The interrupts should be set as edge
+      sensitive. If msi-available-ranges is present, only the interrupts that
+      correspond to available ranges shall be present.
+
+  msi-available-ranges:
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    items:
+      items:
+        - description: First MSI interrupt in this range
+        - description: Number of MSI interrupts in this range
+    description:
+      Define which MSI interrupt can be used in the 256 MSI interrupts.
+      If not specified, all the MSI interrupts can be used.
+      Each available range must begin and end on a multiple of 32 (i.e. no
+      splitting an individual MSI register or the associated PIC interrupt).
+
+  msi-address-64:
+    $ref: /schemas/types.yaml#/definitions/uint64
+    description:
+      64-bit PCI address of the MSIIR register. The MSIIR register is used for
+      MSI messaging.  The address of MSIIR in PCI address space is the MSI
+      message address.
+
+      This property may be used in virtualized environments where the hypervisor
+      has created an alternate mapping for the MSIR block.  See the top-level
+      description for an explanation.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,mpic-msi-v4.3
+              - fsl,vmpic-msi-v4.3
+    then:
+      properties:
+        interrupts:
+          minItems: 16
+          description:
+            Version 4.3 implies that there are 16 shared interrupts, and they
+            are configured through MSIIR1.
+
+        # MPIC v4.3 does not support this property because the 32 interrupts of
+        # an individual register are not continuous when using MSIIR1.
+        msi-available-ranges: false
+
+        reg:
+          minItems: 2
+
+    else:
+      properties:
+        interrupts:
+          maxItems: 8
+          description:
+            In versions before 4.3, only 8 shared interrupts are available, and
+            they are configured through MSIIR.
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    msi@41600 {
+            compatible = "fsl,mpc8610-msi", "fsl,mpic-msi";
+            reg = <0x41600 0x80>;
+            msi-available-ranges = <0 0x100>;
+            interrupts = <0xe0 0>, <0xe1 0>, <0xe2 0>, <0xe3 0>,
+                         <0xe4 0>, <0xe5 0>, <0xe6 0>, <0xe7 0>;
+    };
+
+  - |
+    msi@41600 {
+            compatible = "fsl,mpic-msi-v4.3";
+            reg = <0x41600 0x200>, <0x44148 4>;
+            interrupts = <0xe0 0 0 0>, <0xe1 0 0 0>, <0xe2 0 0 0>, <0xe3 0 0 0>,
+                         <0xe4 0 0 0>, <0xe5 0 0 0>, <0xe6 0 0 0>, <0xe7 0 0 0>,
+                         <0x100 0 0 0>, <0x101 0 0 0>, <0x102 0 0 0>, <0x103 0 0 0>,
+                         <0x104 0 0 0>, <0x105 0 0 0>, <0x106 0 0 0>, <0x107 0 0 0>;
+    };
+
+...
diff --git a/Bindings/interrupt-controller/fsl,vf610-mscm-ir.yaml b/Bindings/interrupt-controller/fsl,vf610-mscm-ir.yaml
new file mode 100644 (file)
index 0000000..fdc254f
--- /dev/null
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/fsl,vf610-mscm-ir.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale Vybrid Miscellaneous System Control - Interrupt Router
+
+description:
+  The MSCM IP contains multiple sub modules, this binding describes the second
+  block of registers which control the interrupt router. The interrupt router
+  allows to configure the recipient of each peripheral interrupt. Furthermore
+  it controls the directed processor interrupts. The module is available in all
+  Vybrid SoC's but is only really useful in dual core configurations (VF6xx
+  which comes with a Cortex-A5/Cortex-M4 combination).
+
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,vf610-mscm-ir
+
+  reg:
+    maxItems: 1
+
+  fsl,cpucfg:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      The handle to the MSCM CPU configuration node, required
+      to get the current CPU ID
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+    description:
+      Two cells, interrupt number and cells.
+      The hardware interrupt number according to interrupt
+      assignment of the interrupt router is required.
+      Flags get passed only when using GIC as parent. Flags
+      encoding as documented by the GIC bindings.
+
+required:
+  - compatible
+  - reg
+  - fsl,cpucfg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@40001800 {
+        compatible = "fsl,vf610-mscm-ir";
+        reg = <0x40001800 0x400>;
+        fsl,cpucfg = <&mscm_cpucfg>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        interrupt-parent = <&intc>;
+    };
index 123d24b05556c67374fbb87abe5e16c65031d2ed..30d76692ca87b507900076cd2f7d2e7ed2605b33 100644 (file)
@@ -21,6 +21,7 @@ properties:
           - enum:
               - mediatek,mt2701-sysirq
               - mediatek,mt2712-sysirq
+              - mediatek,mt6572-sysirq
               - mediatek,mt6580-sysirq
               - mediatek,mt6582-sysirq
               - mediatek,mt6589-sysirq
index ffc4768bad065276378d23d53d6e81efad0a6b66..5b827bc243011cda1fd45d739d34eca95c6e1ee2 100644 (file)
@@ -53,6 +53,7 @@ properties:
     oneOf:
       - items:
           - enum:
+              - andestech,qilai-plic
               - renesas,r9a07g043-plic
           - const: andestech,nceplic100
       - items:
index 8d330906bbbd192dbcd5c2a13339b693218ef5aa..c1ab865fcd64f1347e7eda7f538c7669f55ff906 100644 (file)
@@ -4,23 +4,32 @@
 $id: http://devicetree.org/schemas/interrupt-controller/thead,c900-aclint-sswi.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: T-HEAD C900 ACLINT Supervisor-level Software Interrupt Device
+title: ACLINT Supervisor-level Software Interrupt Device
 
 maintainers:
   - Inochi Amaoto <inochiama@outlook.com>
 
 description:
-  The SSWI device is a part of the THEAD ACLINT device. It provides
-  supervisor-level IPI functionality for a set of HARTs on a THEAD
-  platform. It provides a register to set an IPI (SETSSIP) for each
-  HART connected to the SSWI device.
+  The SSWI device is a part of the ACLINT device. It provides
+  supervisor-level IPI functionality for a set of HARTs on a supported
+  platforms. It provides a register to set an IPI (SETSSIP) for each
+  HART connected to the SSWI device. See draft specification
+  https://github.com/riscvarchive/riscv-aclint
+
+  Following variants of the SSWI ACLINT supported, using dedicated
+  compatible string
+  - THEAD C900
+  - MIPS P8700
 
 properties:
   compatible:
-    items:
-      - enum:
-          - sophgo,sg2044-aclint-sswi
-      - const: thead,c900-aclint-sswi
+    oneOf:
+      - items:
+          - enum:
+              - sophgo,sg2044-aclint-sswi
+          - const: thead,c900-aclint-sswi
+      - items:
+          - const: mips,p8700-aclint-sswi
 
   reg:
     maxItems: 1
@@ -34,6 +43,14 @@ properties:
     minItems: 1
     maxItems: 4095
 
+  riscv,hart-indexes:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 1
+    maxItems: 4095
+    description:
+      A list of hart indexes that APLIC should use to address each hart
+      that is mentioned in the "interrupts-extended"
+
 additionalProperties: false
 
 required:
@@ -43,8 +60,22 @@ required:
   - interrupt-controller
   - interrupts-extended
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: mips,p8700-aclint-sswi
+    then:
+      required:
+        - riscv,hart-indexes
+    else:
+      properties:
+        riscv,hart-indexes: false
+
 examples:
   - |
+    //Example 1
     interrupt-controller@94000000 {
       compatible = "sophgo,sg2044-aclint-sswi", "thead,c900-aclint-sswi";
       reg = <0x94000000 0x00004000>;
@@ -55,4 +86,19 @@ examples:
                             <&cpu3intc 1>,
                             <&cpu4intc 1>;
     };
+
+  - |
+    //Example 2
+    interrupt-controller@94000000 {
+      compatible = "mips,p8700-aclint-sswi";
+      reg = <0x94000000 0x00004000>;
+      #interrupt-cells = <0>;
+      interrupt-controller;
+      interrupts-extended = <&cpu1intc 1>,
+                            <&cpu2intc 1>,
+                            <&cpu3intc 1>,
+                            <&cpu4intc 1>;
+      riscv,hart-indexes = <0x0 0x1 0x10 0x11>;
+    };
+
 ...
diff --git a/Bindings/interrupt-controller/xlnx,intc.yaml b/Bindings/interrupt-controller/xlnx,intc.yaml
new file mode 100644 (file)
index 0000000..b4f58ed
--- /dev/null
@@ -0,0 +1,82 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/xlnx,intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx Interrupt Controller
+
+maintainers:
+  - Michal Simek <michal.simek@amd.com>
+
+description:
+  The controller is a soft IP core that is configured at build time for the
+  number of interrupts and the type of each interrupt. These details cannot
+  be changed at run time.
+
+properties:
+  compatible:
+    const: xlnx,xps-intc-1.00.a
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  "#interrupt-cells":
+    const: 2
+    description:
+      Specifies the number of cells needed to encode an interrupt source.
+      The value shall be a minimum of 1. The Xilinx device trees typically
+      use 2 but the 2nd value is not used.
+
+  interrupt-controller: true
+
+  interrupts:
+    maxItems: 1
+    description:
+      Specifies the interrupt of the parent controller from which it is chained.
+
+  xlnx,kind-of-intr:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      A 32 bit value specifying the interrupt type for each possible interrupt
+      (1 = edge, 0 = level). The interrupt type typically comes in thru
+      the device tree node of the interrupt generating device, but in this case
+      the interrupt type is determined by the interrupt controller based on how
+      it was implemented.
+
+  xlnx,num-intr-inputs:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 1
+    maximum: 32
+    description:
+      Specifies the number of interrupts supported by the specific
+      implementation of the controller.
+
+required:
+  - reg
+  - "#interrupt-cells"
+  - interrupt-controller
+  - xlnx,kind-of-intr
+  - xlnx,num-intr-inputs
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@41800000 {
+      compatible = "xlnx,xps-intc-1.00.a";
+      reg = <0x41800000 0x10000>;
+      #interrupt-cells = <2>;
+      interrupt-controller;
+      xlnx,kind-of-intr = <0x1>;
+      xlnx,num-intr-inputs = <1>;
+    };
index 7b9d5507d6ccd6b845a57eeae59fe80ba75cc652..89495f094d52bc6719f51a04f9d7728812a9e648 100644 (file)
@@ -35,6 +35,7 @@ properties:
       - description: Qcom SoCs implementing "qcom,smmu-500" and "arm,mmu-500"
         items:
           - enum:
+              - qcom,milos-smmu-500
               - qcom,qcm2290-smmu-500
               - qcom,qcs615-smmu-500
               - qcom,qcs8300-smmu-500
@@ -88,6 +89,7 @@ properties:
       - description: Qcom Adreno GPUs implementing "qcom,smmu-500" and "arm,mmu-500"
         items:
           - enum:
+              - qcom,milos-smmu-500
               - qcom,qcm2290-smmu-500
               - qcom,qcs615-smmu-500
               - qcom,qcs8300-smmu-500
@@ -132,10 +134,6 @@ properties:
               - qcom,sm7150-smmu-v2
           - const: qcom,adreno-smmu
           - const: qcom,smmu-v2
-      - description: Qcom Adreno GPUs on Google Cheza platform
-        items:
-          - const: qcom,sdm845-smmu-v2
-          - const: qcom,smmu-v2
       - description: Marvell SoCs implementing "arm,mmu-500"
         items:
           - const: marvell,ap806-smmu-500
@@ -534,6 +532,7 @@ allOf:
         compatible:
           items:
             - enum:
+                - qcom,milos-smmu-500
                 - qcom,sar2130p-smmu-500
                 - qcom,sm8550-smmu-500
                 - qcom,sm8650-smmu-500
index 5d015eeb06d0309a44055dc01531e1a076d4573d..d4838c3b3741f0cc43ecd0fea5957814a528fde2 100644 (file)
@@ -139,9 +139,9 @@ examples:
 
             /* The IOMMU programming interface uses slot 00:01.0 */
             iommu0: iommu@1,0 {
-               compatible = "pci1efd,edf1", "riscv,pci-iommu";
-               reg = <0x800 0 0 0 0>;
-               #iommu-cells = <1>;
+                compatible = "pci1efd,edf1", "riscv,pci-iommu";
+                reg = <0x800 0 0 0 0>;
+                #iommu-cells = <1>;
             };
         };
     };
diff --git a/Bindings/ipmi/ipmb-dev.yaml b/Bindings/ipmi/ipmb-dev.yaml
new file mode 100644 (file)
index 0000000..8b0d719
--- /dev/null
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ipmi/ipmb-dev.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: The Intelligent Platform Management Bus(IPMB) Device
+
+description: |
+  The IPMB is an I2C bus which provides interconnection between a Baseboard
+  Management Controller(BMC) and chassis electronics. The BMC sends IPMI
+  requests to intelligent controllers like Satellite Management Controller(MC)
+  devices via IPMB and the device sends responses back to the BMC.
+  This device uses an I2C slave device to send and receive IPMB messages,
+  either on a BMC or other MC. A miscellaneous device provices a user space
+  program to communicate with the kernel and the backend device. Some IPMB
+  devices only support the I2C protocol and not the SMB protocol.
+
+  IPMB communications protocol Specification V1.0
+  https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmp-spec-v1.0.pdf
+
+maintainers:
+  - Ninad Palsule <ninad@linux.ibm.com>
+
+properties:
+  compatible:
+    enum:
+      - ipmb-dev
+
+  reg:
+    maxItems: 1
+
+  i2c-protocol:
+    description:
+      Use I2C block transfer instead of SMBUS block transfer.
+    type: boolean
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/i2c/i2c.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        ipmb-dev@10 {
+            compatible = "ipmb-dev";
+            reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
+            i2c-protocol;
+        };
+    };
index 402c25424525147952efb78819954e8211a0f10f..23f809906ba77bbd5147079609fece70813e178f 100644 (file)
@@ -81,7 +81,12 @@ patternProperties:
 
         properties:
           reg:
-            maxItems: 1
+            items:
+              - minimum: 0
+                maximum: 2
+
+            description:
+              This property denotes the index within the LED bank.
 
         required:
           - reg
@@ -138,18 +143,18 @@ examples:
                 color = <LED_COLOR_ID_RGB>;
                 function = LED_FUNCTION_STANDBY;
 
-                led@3 {
-                    reg = <0x3>;
+                led@0 {
+                    reg = <0x0>;
                     color = <LED_COLOR_ID_RED>;
                 };
 
-                led@4 {
-                    reg = <0x4>;
+                led@1 {
+                    reg = <0x1>;
                     color = <LED_COLOR_ID_GREEN>;
                 };
 
-                led@5 {
-                    reg = <0x5>;
+                led@2 {
+                    reg = <0x2>;
                     color = <LED_COLOR_ID_BLUE>;
                 };
             };
index d84e28e616d7e7d6e34db3bc9afb94e745abca67..d2e1d8afc302343ce877c117fb327b145f407754 100644 (file)
@@ -87,106 +87,105 @@ additionalProperties: false
 
 examples:
   - |
-   #include <dt-bindings/leds/common.h>
-   led-controller {
-     compatible = "mediatek,mt6360-led";
-     #address-cells = <1>;
-     #size-cells = <0>;
-
-     multi-led@0 {
-       reg = <0>;
-       function = LED_FUNCTION_INDICATOR;
-       color = <LED_COLOR_ID_RGB>;
-       led-max-microamp = <24000>;
-       #address-cells = <1>;
-       #size-cells = <0>;
-       led@0 {
-         reg = <0>;
-         color = <LED_COLOR_ID_RED>;
-       };
-       led@1 {
-         reg = <1>;
-         color = <LED_COLOR_ID_GREEN>;
-       };
-       led@2 {
-         reg = <2>;
-         color = <LED_COLOR_ID_BLUE>;
-       };
-     };
-     led@3 {
-       reg = <3>;
-       function = LED_FUNCTION_INDICATOR;
-       color = <LED_COLOR_ID_WHITE>;
-       led-max-microamp = <150000>;
-     };
-     led@4 {
-       reg = <4>;
-       function = LED_FUNCTION_FLASH;
-       color = <LED_COLOR_ID_WHITE>;
-       function-enumerator = <1>;
-       led-max-microamp = <200000>;
-       flash-max-microamp = <500000>;
-       flash-max-timeout-us = <1024000>;
-     };
-     led@5 {
-       reg = <5>;
-       function = LED_FUNCTION_FLASH;
-       color = <LED_COLOR_ID_WHITE>;
-       function-enumerator = <2>;
-       led-max-microamp = <200000>;
-       flash-max-microamp = <500000>;
-       flash-max-timeout-us = <1024000>;
-     };
-   };
+    #include <dt-bindings/leds/common.h>
+    led-controller {
+        compatible = "mediatek,mt6360-led";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        multi-led@0 {
+            reg = <0>;
+            function = LED_FUNCTION_INDICATOR;
+            color = <LED_COLOR_ID_RGB>;
+            led-max-microamp = <24000>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+            led@0 {
+                reg = <0>;
+                color = <LED_COLOR_ID_RED>;
+            };
+            led@1 {
+                reg = <1>;
+                color = <LED_COLOR_ID_GREEN>;
+            };
+            led@2 {
+                reg = <2>;
+                color = <LED_COLOR_ID_BLUE>;
+            };
+        };
+        led@3 {
+            reg = <3>;
+            function = LED_FUNCTION_INDICATOR;
+            color = <LED_COLOR_ID_WHITE>;
+            led-max-microamp = <150000>;
+        };
+        led@4 {
+            reg = <4>;
+            function = LED_FUNCTION_FLASH;
+            color = <LED_COLOR_ID_WHITE>;
+            function-enumerator = <1>;
+            led-max-microamp = <200000>;
+            flash-max-microamp = <500000>;
+            flash-max-timeout-us = <1024000>;
+        };
+        led@5 {
+            reg = <5>;
+            function = LED_FUNCTION_FLASH;
+            color = <LED_COLOR_ID_WHITE>;
+            function-enumerator = <2>;
+            led-max-microamp = <200000>;
+            flash-max-microamp = <500000>;
+            flash-max-timeout-us = <1024000>;
+        };
+    };
 
   - |
-
-   led-controller {
-     compatible = "mediatek,mt6360-led";
-     #address-cells = <1>;
-     #size-cells = <0>;
-
-     led@0 {
-       reg = <0>;
-       function = LED_FUNCTION_INDICATOR;
-       color = <LED_COLOR_ID_RED>;
-       led-max-microamp = <24000>;
-     };
-     led@1 {
-       reg = <1>;
-       function = LED_FUNCTION_INDICATOR;
-       color = <LED_COLOR_ID_GREEN>;
-       led-max-microamp = <24000>;
-     };
-     led@2 {
-       reg = <2>;
-       function = LED_FUNCTION_INDICATOR;
-       color = <LED_COLOR_ID_BLUE>;
-       led-max-microamp = <24000>;
-     };
-     led@3 {
-       reg = <3>;
-       function = LED_FUNCTION_INDICATOR;
-       color = <LED_COLOR_ID_WHITE>;
-       led-max-microamp = <150000>;
-     };
-     led@4 {
-       reg = <4>;
-       function = LED_FUNCTION_FLASH;
-       color = <LED_COLOR_ID_WHITE>;
-       function-enumerator = <1>;
-       led-max-microamp = <200000>;
-       flash-max-microamp = <500000>;
-       flash-max-timeout-us = <1024000>;
-     };
-     led@5 {
-       reg = <5>;
-       function = LED_FUNCTION_FLASH;
-       color = <LED_COLOR_ID_WHITE>;
-       function-enumerator = <2>;
-       led-max-microamp = <200000>;
-       flash-max-microamp = <500000>;
-       flash-max-timeout-us = <1024000>;
-     };
-   };
+    led-controller {
+        compatible = "mediatek,mt6360-led";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        led@0 {
+            reg = <0>;
+            function = LED_FUNCTION_INDICATOR;
+            color = <LED_COLOR_ID_RED>;
+            led-max-microamp = <24000>;
+        };
+        led@1 {
+            reg = <1>;
+            function = LED_FUNCTION_INDICATOR;
+            color = <LED_COLOR_ID_GREEN>;
+            led-max-microamp = <24000>;
+        };
+        led@2 {
+            reg = <2>;
+            function = LED_FUNCTION_INDICATOR;
+            color = <LED_COLOR_ID_BLUE>;
+            led-max-microamp = <24000>;
+        };
+        led@3 {
+            reg = <3>;
+            function = LED_FUNCTION_INDICATOR;
+            color = <LED_COLOR_ID_WHITE>;
+            led-max-microamp = <150000>;
+        };
+        led@4 {
+            reg = <4>;
+            function = LED_FUNCTION_FLASH;
+            color = <LED_COLOR_ID_WHITE>;
+            function-enumerator = <1>;
+            led-max-microamp = <200000>;
+            flash-max-microamp = <500000>;
+            flash-max-timeout-us = <1024000>;
+        };
+        led@5 {
+            reg = <5>;
+            function = LED_FUNCTION_FLASH;
+            color = <LED_COLOR_ID_WHITE>;
+            function-enumerator = <2>;
+            led-max-microamp = <200000>;
+            flash-max-microamp = <500000>;
+            flash-max-timeout-us = <1024000>;
+        };
+    };
 ...
index 9c9f3a682ba2096fe44da12bfdb87b015c37c6cb..11d45c7f741da05975358254cb3b4c02942c5ef0 100644 (file)
@@ -19,7 +19,9 @@ properties:
       - onnn,ncp5623
 
   reg:
-    const: 0x38
+    enum:
+      - 0x38
+      - 0x39
 
   multi-led:
     type: object
index 75d5d97305e19f50059e61a4db2632765885e850..87d31963c1b73c956b9782f029b1a5ad2654f507 100644 (file)
@@ -68,13 +68,13 @@ examples:
     #include <dt-bindings/reset/sun8i-h3-ccu.h>
 
     msgbox: mailbox@1c17000 {
-            compatible = "allwinner,sun8i-h3-msgbox",
-                         "allwinner,sun6i-a31-msgbox";
-            reg = <0x01c17000 0x1000>;
-            clocks = <&ccu CLK_BUS_MSGBOX>;
-            resets = <&ccu RST_BUS_MSGBOX>;
-            interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
-            #mbox-cells = <1>;
+        compatible = "allwinner,sun8i-h3-msgbox",
+                     "allwinner,sun6i-a31-msgbox";
+        reg = <0x01c17000 0x1000>;
+        clocks = <&ccu CLK_BUS_MSGBOX>;
+        resets = <&ccu RST_BUS_MSGBOX>;
+        interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+        #mbox-cells = <1>;
     };
 
 ...
index 385809ed1569206a7304b777ea42743321c899ad..79963c9878bad1684fa0810ad71554af2ceeb75d 100644 (file)
@@ -27,7 +27,7 @@ properties:
     maxItems: 1
 
   interrupts:
-    minItems: 3
+    maxItems: 3
     description:
       Contains the interrupt information corresponding to each of the 3 links
       of MHU.
@@ -46,8 +46,8 @@ additionalProperties: false
 examples:
   - |
     mailbox@c883c404 {
-          compatible = "amlogic,meson-gxbb-mhu";
-          reg = <0xc883c404 0x4c>;
-          interrupts = <208>, <209>, <210>;
-          #mbox-cells = <1>;
+        compatible = "amlogic,meson-gxbb-mhu";
+        reg = <0xc883c404 0x4c>;
+        interrupts = <208>, <209>, <210>;
+        #mbox-cells = <1>;
     };
index 4c0668e5f0bdc1e03404cbd58a392465d30b0e8e..474c1a0f99f34777e1bed7fc0a34f89320a93b7c 100644 (file)
@@ -78,11 +78,11 @@ additionalProperties: false
 
 examples:
   - |
-        mailbox@77408000 {
-                compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
-                reg = <0x77408000 0x4000>;
-                interrupts = <1 583 4>, <1 584 4>, <1 585 4>, <1 586 4>;
-                interrupt-names = "send-empty", "send-not-empty",
-                 "recv-empty", "recv-not-empty";
-                #mbox-cells = <0>;
-        };
+    mailbox@77408000 {
+        compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
+        reg = <0x77408000 0x4000>;
+        interrupts = <1 583 4>, <1 584 4>, <1 585 4>, <1 586 4>;
+        interrupt-names = "send-empty", "send-not-empty",
+                          "recv-empty", "recv-not-empty";
+        #mbox-cells = <0>;
+    };
diff --git a/Bindings/mailbox/aspeed,ast2700-mailbox.yaml b/Bindings/mailbox/aspeed,ast2700-mailbox.yaml
new file mode 100644 (file)
index 0000000..600e2d6
--- /dev/null
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mailbox/aspeed,ast2700-mailbox.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ASPEED AST2700 mailbox controller
+
+maintainers:
+  - Jammy Huang <jammy_huang@aspeedtech.com>
+
+description: >
+  ASPEED AST2700 has multiple processors that need to communicate with each
+  other. The mailbox controller provides a way for these processors to send
+  messages to each other. It is a hardware-based inter-processor communication
+  mechanism that allows processors to send and receive messages through
+  dedicated channels.
+
+  The mailbox's tx/rx are independent, meaning that one processor can send a
+  message while another processor is receiving a message simultaneously.
+  There are 4 channels available for both tx and rx operations. Each channel
+  has a FIFO buffer that can hold messages of a fixed size (32 bytes in this
+  case).
+
+  The mailbox controller also supports interrupt generation, allowing
+  processors to notify each other when a message is available or when an event
+  occurs.
+
+properties:
+  compatible:
+    const: aspeed,ast2700-mailbox
+
+  reg:
+    items:
+      - description: TX control register
+      - description: RX control register
+
+  reg-names:
+    items:
+      - const: tx
+      - const: rx
+
+  interrupts:
+    maxItems: 1
+
+  "#mbox-cells":
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - "#mbox-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    mailbox@12c1c200 {
+        compatible = "aspeed,ast2700-mailbox";
+        reg = <0x12c1c200 0x100>, <0x12c1c300 0x100>;
+        reg-names = "tx", "rx";
+        interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+        #mbox-cells = <1>;
+    };
diff --git a/Bindings/mailbox/brcm,bcm74110-mbox.yaml b/Bindings/mailbox/brcm,bcm74110-mbox.yaml
new file mode 100644 (file)
index 0000000..750cc96
--- /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/mailbox/brcm,bcm74110-mbox.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM74110 Mailbox
+
+maintainers:
+  - Justin Chen <justin.chen@broadcom.com>
+  - Florian Fainelli <florian.fainelli@broadcom.com>
+
+description: Broadcom mailbox hardware first introduced with 74110
+
+properties:
+  compatible:
+    enum:
+      - brcm,bcm74110-mbox
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: RX doorbell and watermark interrupts
+      - description: TX doorbell and watermark interrupts
+
+  "#mbox-cells":
+    const: 2
+    description:
+      The first cell is channel type and second cell is shared memory slot
+
+  brcm,rx:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: RX Mailbox number
+
+  brcm,tx:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: TX Mailbox number
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - "#mbox-cells"
+  - brcm,rx
+  - brcm,tx
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    mailbox@a552000 {
+        compatible = "brcm,bcm74110-mbox";
+        reg = <0xa552000 0x1104>;
+        interrupts = <GIC_SPI 0x67 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 0x66 IRQ_TYPE_LEVEL_HIGH>;
+        #mbox-cells = <0x2>;
+        brcm,rx = <0x7>;
+        brcm,tx = <0x6>;
+    };
diff --git a/Bindings/mailbox/cix,sky1-mbox.yaml b/Bindings/mailbox/cix,sky1-mbox.yaml
new file mode 100644 (file)
index 0000000..66d75b7
--- /dev/null
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mailbox/cix,sky1-mbox.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cixtech mailbox controller
+
+maintainers:
+  - Guomin Chen <Guomin.Chen@cixtech.com>
+
+description:
+  The Cixtech mailbox controller, used in the Cixtech Sky1 SoC,
+  is used for message transmission between multiple processors
+  within the SoC, such as the AP, PM, audio DSP, SensorHub MCU,
+  and others
+
+  Each Cixtech mailbox controller is unidirectional, so they are
+  typically used in pairs-one for receiving and one for transmitting.
+
+  Each Cixtech mailbox supports 11 channels with different transmission modes
+    channel 0-7 - Fast channel with 32bit transmit register and IRQ support
+    channel 8   - Doorbell mode,using the mailbox as an interrupt-generating
+                   mechanism.
+    channel 9   - Fifo based channel with 32*32bit depth fifo and IRQ support
+    channel 10  - Reg based channel with 32*32bit transmit register and
+                   Doorbell+transmit acknowledgment IRQ support
+
+  In the CIX Sky1 SoC use case, there are 4 pairs of mailbox controllers
+    AP <--> PM - using Doorbell transfer mode
+    AP <--> SE - using REG transfer mode
+    AP <--> DSP - using FIFO transfer mode
+    AP <--> SensorHub - using FIFO transfer mode
+
+properties:
+  compatible:
+    const: cix,sky1-mbox
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  "#mbox-cells":
+    const: 1
+
+  cix,mbox-dir:
+    $ref: /schemas/types.yaml#/definitions/string
+    description: Direction of the mailbox relative to the AP
+    enum: [tx, rx]
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - "#mbox-cells"
+  - cix,mbox-dir
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        mbox_ap2pm: mailbox@30000000 {
+            compatible = "cix,sky1-mbox";
+            reg = <0 0x30000000 0 0x10000>;
+            interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH 0>;
+            #mbox-cells = <1>;
+            cix,mbox-dir = "tx";
+        };
+    };
index 2d14fc9489998a8dbe5356e2422748a228693d7a..f833b845de0d7b37d567be62189de91ad0da736d 100644 (file)
@@ -59,14 +59,12 @@ description: |
         <dt-bindings/mailbox/tegra186-hsp.h>
 
 properties:
-  $nodename:
-    pattern: "^hsp@[0-9a-f]+$"
-
   compatible:
     oneOf:
-      - const: nvidia,tegra186-hsp
-      - const: nvidia,tegra194-hsp
-      - const: nvidia,tegra264-hsp
+      - enum:
+          - nvidia,tegra186-hsp
+          - nvidia,tegra194-hsp
+          - nvidia,tegra264-hsp
       - items:
           - const: nvidia,tegra234-hsp
           - const: nvidia,tegra194-hsp
@@ -76,7 +74,7 @@ properties:
 
   interrupts:
     minItems: 1
-    maxItems: 9
+    maxItems: 17
 
   interrupt-names:
     oneOf:
@@ -84,6 +82,25 @@ properties:
       - items:
           - const: doorbell
 
+      - items:
+          - const: doorbell
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+          - pattern: "^shared([0-9]|1[0-5])$"
+
       - items:
           - const: doorbell
           - pattern: "^shared[0-7]$"
@@ -111,14 +128,10 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/mailbox/tegra186-hsp.h>
 
-    hsp_top0: hsp@3c00000 {
+    mailbox@3c00000 {
         compatible = "nvidia,tegra186-hsp";
         reg = <0x03c00000 0xa0000>;
         interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
         interrupt-names = "doorbell";
         #mbox-cells = <2>;
     };
-
-    client {
-        mboxes = <&hsp_top0 TEGRA_HSP_MBOX_TYPE_DB TEGRA_HSP_DB_MASTER_CCPLEX>;
-    };
index ac726136f7e5aa1253929317e2190a5ef7485ede..615ed103b7e6f47c794ab156b14027134d49ca78 100644 (file)
@@ -251,7 +251,7 @@ examples:
   # Example apcs with msm8996
   - |
     #include <dt-bindings/interrupt-controller/arm-gic.h>
-    apcs_glb: mailbox@9820000 {
+    mailbox@9820000 {
         compatible = "qcom,msm8996-apcs-hmss-global";
         reg = <0x9820000 0x1000>;
 
@@ -259,13 +259,6 @@ examples:
         #clock-cells = <0>;
     };
 
-    rpm-glink {
-        compatible = "qcom,glink-rpm";
-        interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
-        qcom,rpm-msg-ram = <&rpm_msg_ram>;
-        mboxes = <&apcs_glb 0>;
-    };
-
   # Example apcs with qcs404
   - |
     #define GCC_APSS_AHB_CLK_SRC  1
index f69c0ec5d19d3dd726a42d86f8a77433267fdf28..e5c423130db67109355d7da3e51e1eeb008dee84 100644 (file)
@@ -24,6 +24,7 @@ properties:
   compatible:
     items:
       - enum:
+          - qcom,milos-ipcc
           - qcom,qcs8300-ipcc
           - qcom,qdu1000-ipcc
           - qcom,sa8255p-ipcc
index 1a2001e58880d2fc26954b26cff8ed53e7667f33..8504ceb64806bc7e25468597acdff99624571e9f 100644 (file)
@@ -242,7 +242,7 @@ examples:
   - |
     /* OMAP4 */
     #include <dt-bindings/interrupt-controller/arm-gic.h>
-    mailbox: mailbox@4a0f4000 {
+    mailbox@4a0f4000 {
         compatible = "ti,omap4-mailbox";
         reg = <0x4a0f4000 0x200>;
         interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
@@ -260,13 +260,9 @@ examples:
         };
     };
 
-    dsp {
-        mboxes = <&mailbox &mbox_dsp>;
-    };
-
   - |
     /* AM33xx */
-    mailbox1: mailbox@480c8000 {
+    mailbox@480c8000 {
         compatible = "ti,omap4-mailbox";
         reg = <0x480c8000 0x200>;
         interrupts = <77>;
@@ -283,7 +279,7 @@ examples:
 
   - |
     /* AM65x */
-    mailbox0_cluster0: mailbox@31f80000 {
+    mailbox@31f80000 {
         compatible = "ti,am654-mailbox";
         reg = <0x31f80000 0x200>;
         #mbox-cells = <1>;
index eea822861804c259068aa8c4598188db28895518..c321b69f0ccd3cdc7cedefadf46982b42cce915e 100644 (file)
@@ -36,7 +36,7 @@ properties:
       - const: scfg
 
   reg:
-    minItems: 3
+    maxItems: 3
 
   interrupt-names:
     minItems: 1
@@ -68,12 +68,12 @@ examples:
   - |
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     secure_proxy: mailbox@32c00000 {
-          compatible = "ti,am654-secure-proxy";
-          #mbox-cells = <1>;
-          reg-names = "target_data", "rt", "scfg";
-          reg = <0x32c00000 0x100000>,
-                <0x32400000 0x100000>,
-                <0x32800000 0x100000>;
-          interrupt-names = "rx_011";
-          interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+        compatible = "ti,am654-secure-proxy";
+        #mbox-cells = <1>;
+        reg-names = "target_data", "rt", "scfg";
+        reg = <0x32c00000 0x100000>,
+              <0x32400000 0x100000>,
+              <0x32800000 0x100000>;
+        interrupt-names = "rx_011";
+        interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
     };
index 2008a47c0580632e698a361c01e8e1a974ef9f2e..6ed9a5621064ae3b0c3b1591463952e580d4a971 100644 (file)
@@ -24,6 +24,14 @@ properties:
   reg:
     maxItems: 1
 
+  interrupts:
+    maxItems: 2
+
+  interrupt-names:
+    items:
+      - const: error_irq
+      - const: irq
+
   clocks:
     items:
       - description: CSI2Rx system clock
diff --git a/Bindings/media/fsl,imx6q-vdoa.yaml b/Bindings/media/fsl,imx6q-vdoa.yaml
new file mode 100644 (file)
index 0000000..511ac0d
--- /dev/null
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/fsl,imx6q-vdoa.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale Video Data Order Adapter
+
+description:
+  The Video Data Order Adapter (VDOA) is present on the i.MX6q. Its sole purpose
+  is to reorder video data from the macroblock tiled order produced by the CODA
+  960 VPU to the conventional raster-scan order for scanout.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: "fsl,imx6q-vdoa"
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/clock/imx6qdl-clock.h>
+
+    vdoa@21e4000 {
+        compatible = "fsl,imx6q-vdoa";
+        reg = <0x021e4000 0x4000>;
+        interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clks IMX6QDL_CLK_VDOA>;
+    };
diff --git a/Bindings/media/fsl,imx8qm-isi.yaml b/Bindings/media/fsl,imx8qm-isi.yaml
new file mode 100644 (file)
index 0000000..93f527e
--- /dev/null
@@ -0,0 +1,117 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/fsl,imx8qm-isi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: i.MX8QM Image Sensing Interface
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+description:
+  The Image Sensing Interface (ISI) combines image processing pipelines with
+  DMA engines to process and capture frames originating from a variety of
+  sources. The inputs to the ISI go through Pixel Link interfaces, and their
+  number and nature is SoC-dependent. They cover both capture interfaces (MIPI
+  CSI-2 RX, HDMI RX, ...) and display engine outputs for writeback support.
+
+properties:
+  compatible:
+    enum:
+      - fsl,imx8qm-isi
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 8
+
+  clock-names:
+    items:
+      - const: per0
+      - const: per1
+      - const: per2
+      - const: per3
+      - const: per4
+      - const: per5
+      - const: per6
+      - const: per7
+
+  interrupts:
+    maxItems: 8
+
+  power-domains:
+    maxItems: 8
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+    properties:
+      port@2:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: MIPI CSI-2 RX 0
+      port@3:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: MIPI CSI-2 RX 1
+      port@4:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: HDMI RX
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+  - power-domains
+  - ports
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/clock/imx8-clock.h>
+    #include <dt-bindings/clock/imx8-lpcg.h>
+    #include <dt-bindings/firmware/imx/rsrc.h>
+
+    image-controller@58100000 {
+        compatible = "fsl,imx8qm-isi";
+        reg = <0x58100000 0x80000>;
+        interrupts = <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 301 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 302 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&pdma0_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma1_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma2_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma3_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma4_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma5_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma6_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma7_lpcg IMX_LPCG_CLK_0>;
+        clock-names = "per0", "per1", "per2", "per3",
+                      "per4", "per5", "per6", "per7";
+        power-domains = <&pd IMX_SC_R_ISI_CH0>, <&pd IMX_SC_R_ISI_CH1>,
+                        <&pd IMX_SC_R_ISI_CH2>, <&pd IMX_SC_R_ISI_CH3>,
+                        <&pd IMX_SC_R_ISI_CH4>, <&pd IMX_SC_R_ISI_CH5>,
+                        <&pd IMX_SC_R_ISI_CH6>, <&pd IMX_SC_R_ISI_CH7>;
+
+        ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            port@2 {
+                reg = <2>;
+                endpoint {
+                    remote-endpoint = <&mipi_csi0_out>;
+                };
+            };
+        };
+    };
+...
diff --git a/Bindings/media/fsl,imx8qxp-isi.yaml b/Bindings/media/fsl,imx8qxp-isi.yaml
new file mode 100644 (file)
index 0000000..bb41996
--- /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/media/fsl,imx8qxp-isi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: i.MX8QXP Image Sensing Interface
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+description:
+  The Image Sensing Interface (ISI) combines image processing pipelines with
+  DMA engines to process and capture frames originating from a variety of
+  sources. The inputs to the ISI go through Pixel Link interfaces, and their
+  number and nature is SoC-dependent. They cover both capture interfaces (MIPI
+  CSI-2 RX, HDMI RX, ...) and display engine outputs for writeback support.
+
+properties:
+  compatible:
+    enum:
+      - fsl,imx8qxp-isi
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 6
+
+  clock-names:
+    items:
+      - const: per0
+      - const: per1
+      - const: per2
+      - const: per3
+      - const: per4
+      - const: per5
+
+  interrupts:
+    maxItems: 6
+
+  power-domains:
+    maxItems: 6
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+    properties:
+      port@2:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: MIPI CSI-2 RX 0
+      port@6:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: CSI-2 Parallel RX
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+  - power-domains
+  - ports
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/clock/imx8-clock.h>
+    #include <dt-bindings/clock/imx8-lpcg.h>
+    #include <dt-bindings/firmware/imx/rsrc.h>
+
+    image-controller@58100000 {
+        compatible = "fsl,imx8qxp-isi";
+        reg = <0x58100000 0x60000>;
+        interrupts = <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 301 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 302 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&pdma0_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma1_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma2_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma3_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma4_lpcg IMX_LPCG_CLK_0>,
+                 <&pdma5_lpcg IMX_LPCG_CLK_0>;
+        clock-names = "per0", "per1", "per2", "per3", "per4", "per5";
+        power-domains = <&pd IMX_SC_R_ISI_CH0>, <&pd IMX_SC_R_ISI_CH1>,
+                        <&pd IMX_SC_R_ISI_CH2>, <&pd IMX_SC_R_ISI_CH3>,
+                        <&pd IMX_SC_R_ISI_CH4>, <&pd IMX_SC_R_ISI_CH5>;
+
+        ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            port@2 {
+                reg = <2>;
+                endpoint {
+                    remote-endpoint = <&mipi_csi0_out>;
+                };
+            };
+        };
+    };
+...
diff --git a/Bindings/media/fsl-vdoa.txt b/Bindings/media/fsl-vdoa.txt
deleted file mode 100644 (file)
index 6c56285..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-Freescale Video Data Order Adapter
-==================================
-
-The Video Data Order Adapter (VDOA) is present on the i.MX6q. Its sole purpose
-is to reorder video data from the macroblock tiled order produced by the CODA
-960 VPU to the conventional raster-scan order for scanout.
-
-Required properties:
-- compatible: must be "fsl,imx6q-vdoa"
-- reg: the register base and size for the device registers
-- interrupts: the VDOA interrupt
-- clocks: the vdoa clock
-
-Example:
-
-vdoa@21e4000 {
-        compatible = "fsl,imx6q-vdoa";
-        reg = <0x021e4000 0x4000>;
-        interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>;
-        clocks = <&clks IMX6QDL_CLK_VDOA>;
-};
index f8ace8cbccdbac482ffba733d5b28a3a38aaf822..bc664a0163960b56029139dd7a1c0b6207e751ec 100644 (file)
@@ -23,6 +23,9 @@ description:
   More detailed documentation can be found in
   Documentation/devicetree/bindings/media/video-interfaces.txt .
 
+allOf:
+  - $ref: /schemas/media/video-interface-devices.yaml#
+
 properties:
   compatible:
     oneOf:
@@ -58,16 +61,10 @@ properties:
       documentation.
     maxItems: 1
 
-  flash-leds:
-    description: Flash LED phandles. See ../video-interfaces.txt for details.
-
-  lens-focus:
-    description: Lens focus controller phandles. See ../video-interfaces.txt
-      for details.
+  flash-leds: true
+  lens-focus: true
 
   rotation:
-    description: Rotation of the sensor.  See ../video-interfaces.txt for
-      details.
     enum: [ 0, 180 ]
 
   port:
index f6b87892068ac6989f82e1ee53bb795b307628ae..a89f740214f7503181737781c9bc254bedc12d1c 100644 (file)
@@ -70,6 +70,15 @@ properties:
           - bus-type
           - link-frequencies
 
+  slew-rate:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      Slew rate ot the output pads DOUT[7:0], LINE_VALID, FRAME_VALID and
+      PIXCLK. Higher values imply steeper voltage-flanks on the pads.
+    minimum: 0
+    maximum: 7
+    default: 7
+
 required:
   - compatible
   - reg
index a65f921ec0fd24e449331772e39a16cadd73a868..491f2931e6bcdf5a1ad2cd4f9eb187055c3a7a2d 100644 (file)
@@ -15,6 +15,8 @@ description: |
   controlled through an I2C-compatible SCCB bus. The sensor transmits images
   on a MIPI CSI-2 output interface with up to 4 data lanes.
 
+$ref: /schemas/media/video-interface-devices.yaml#
+
 properties:
   compatible:
     const: ovti,ov8858
@@ -69,7 +71,7 @@ required:
   - clocks
   - port
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index 0162eec8ca993a7614d29908f89fa9fe6d4b545d..aea99ebf8e9ed15f8066841228d9fdecc822b553 100644 (file)
@@ -33,20 +33,21 @@ properties:
 
   clock-frequency:
     description: Frequency of the xclk clock in Hz.
+    deprecated: true
 
   enable-gpios:
     description: GPIO descriptor for the enable pin.
     maxItems: 1
 
-  vdddo-supply:
-    description: Chip digital IO regulator (1.8V).
-
   vdda-supply:
     description: Chip analog regulator (2.7V).
 
   vddd-supply:
     description: Chip digital core regulator (1.12V).
 
+  vdddo-supply:
+    description: Chip digital IO regulator (1.8V).
+
   flash-leds: true
   lens-focus: true
 
@@ -84,11 +85,10 @@ required:
   - compatible
   - reg
   - clocks
-  - clock-frequency
   - enable-gpios
-  - vdddo-supply
   - vdda-supply
   - vddd-supply
+  - vdddo-supply
   - port
 
 unevaluatedProperties: false
@@ -104,22 +104,25 @@ examples:
         camera-sensor@1a {
             compatible = "sony,imx214";
             reg = <0x1a>;
-            vdddo-supply = <&pm8994_lvs1>;
-            vddd-supply = <&camera_vddd_1v12>;
+
+            clocks = <&camera_clk>;
+            assigned-clocks = <&camera_clk>;
+            assigned-clock-rates = <24000000>;
+
+            enable-gpios = <&msmgpio 25 GPIO_ACTIVE_HIGH>;
+
             vdda-supply = <&pm8994_l17>;
+            vddd-supply = <&camera_vddd_1v12>;
+            vdddo-supply = <&pm8994_lvs1>;
+
             lens-focus = <&ad5820>;
-            enable-gpios = <&msmgpio 25 GPIO_ACTIVE_HIGH>;
-            clocks = <&camera_clk>;
-            clock-frequency = <24000000>;
 
             port {
                 imx214_ep: endpoint {
                     data-lanes = <1 2 3 4>;
-                    link-frequencies = /bits/ 64 <480000000>;
+                    link-frequencies = /bits/ 64 <600000000>;
                     remote-endpoint = <&csiphy0_ep>;
                 };
             };
         };
     };
-
-...
index 975c1d77c8e5d24179e9cb8d92fe7b6798c4d2ec..421b935b52bcaafbee0aff5b5cebc6332409bd8b 100644 (file)
@@ -18,6 +18,8 @@ description: |-
   The camera module does not expose the model through registers, so the
   exact model needs to be specified.
 
+$ref: /schemas/media/video-interface-devices.yaml#
+
 properties:
   compatible:
     enum:
@@ -81,7 +83,7 @@ required:
   - reg
   - port
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index 2be30c5fdc8398e5390c1384c5dce173e8691d8b..4cba42ba7cf72d4d33b43ca80d28abf3aa88a470 100644 (file)
@@ -22,10 +22,14 @@ properties:
             - nxp,imx8qxp-jpgdec
             - nxp,imx8qxp-jpgenc
       - items:
-          - const: nxp,imx8qm-jpgdec
+          - enum:
+              - nxp,imx8qm-jpgdec
+              - nxp,imx95-jpgdec
           - const: nxp,imx8qxp-jpgdec
       - items:
-          - const: nxp,imx8qm-jpgenc
+          - enum:
+              - nxp,imx8qm-jpgenc
+              - nxp,imx95-jpgenc
           - const: nxp,imx8qxp-jpgenc
 
   reg:
@@ -48,7 +52,7 @@ properties:
     description:
       List of phandle and PM domain specifier as documented in
       Documentation/devicetree/bindings/power/power_domain.txt
-    minItems: 2               # Wrapper and 1 slot
+    minItems: 1               # Wrapper and all slots
     maxItems: 5               # Wrapper and 4 slots
 
 required:
@@ -58,6 +62,24 @@ required:
   - interrupts
   - power-domains
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - nxp,imx95-jpgenc
+              - nxp,imx95-jpgdec
+    then:
+      properties:
+        power-domains:
+          maxItems: 1
+    else:
+      properties:
+        power-domains:
+          minItems: 2        # Wrapper and 1 slot
+
+
 additionalProperties: false
 
 examples:
index 2a14e3b0e00401460ce7a0beb661e5966039f27b..3389bab266a9adbda313c8ad795b998641df12f3 100644 (file)
@@ -16,11 +16,19 @@ description: |-
 
 properties:
   compatible:
-    enum:
-      - fsl,imx8mq-mipi-csi2
+    oneOf:
+      - enum:
+          - fsl,imx8mq-mipi-csi2
+          - fsl,imx8qxp-mipi-csi2
+      - items:
+          - const: fsl,imx8qm-mipi-csi2
+          - const: fsl,imx8qxp-mipi-csi2
 
   reg:
-    maxItems: 1
+    items:
+      - description: MIPI CSI-2 RX host controller register.
+      - description: MIPI CSI-2 control and status register (csr).
+    minItems: 1
 
   clocks:
     items:
@@ -46,6 +54,7 @@ properties:
       - description: CORE_RESET reset register bit definition
       - description: PHY_REF_RESET reset register bit definition
       - description: ESC_RESET reset register bit definition
+    minItems: 1
 
   fsl,mipi-phy-gpr:
     description: |
@@ -113,9 +122,30 @@ required:
   - clock-names
   - power-domains
   - resets
-  - fsl,mipi-phy-gpr
   - ports
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,imx8qxp-mipi-csi2
+    then:
+      properties:
+        reg:
+          minItems: 2
+        resets:
+          maxItems: 1
+    else:
+      properties:
+        reg:
+          maxItems: 1
+        resets:
+          minItems: 3
+      required:
+        - fsl,mipi-phy-gpr
+
 additionalProperties: false
 
 examples:
index 113565cf2a991a8dcbc20889090e177e8bcadaac..b075341caafc1612e4faa3b7c1d0766e16646f7b 100644 (file)
@@ -133,7 +133,7 @@ properties:
       CSI input ports.
 
     patternProperties:
-      "^port@[0-3]+$":
+      "^port@[0-3]$":
         $ref: /schemas/graph.yaml#/$defs/port-base
         unevaluatedProperties: false
 
@@ -146,15 +146,16 @@ properties:
             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:
@@ -189,7 +190,7 @@ examples:
         #address-cells = <2>;
         #size-cells = <2>;
 
-        camss: isp@acb6000 {
+        camss: isp@acb7000 {
             compatible = "qcom,x1e80100-camss";
 
             reg = <0 0x0acb7000 0 0x2000>,
@@ -357,7 +358,6 @@ examples:
                 port@0 {
                     reg = <0>;
                     csiphy_ep0: endpoint {
-                        clock-lanes = <7>;
                         data-lanes = <0 1>;
                         remote-endpoint = <&sensor_ep>;
                     };
index 7bf1266223e8204428f7c3e06accdf90f365625b..cf92dfe69637c223eb4932d946313f551177add9 100644 (file)
@@ -30,6 +30,7 @@ properties:
               - renesas,r9a07g043u-fcpvd # RZ/G2UL
               - renesas,r9a07g044-fcpvd # RZ/G2{L,LC}
               - renesas,r9a07g054-fcpvd # RZ/V2L
+              - renesas,r9a09g056-fcpvd # RZ/V2N
               - renesas,r9a09g057-fcpvd # RZ/V2H(P)
           - const: renesas,fcpv         # Generic FCP for VSP fallback
 
index fcf7219b1f40a51b57c9ce1c6176e19adf1a418c..07a97dd87a5bccb690c39cee1fb9c3b00f1511ee 100644 (file)
@@ -25,6 +25,7 @@ properties:
           - enum:
               - renesas,r9a07g043u-vsp2   # RZ/G2UL
               - renesas,r9a07g054-vsp2    # RZ/V2L
+              - renesas,r9a09g056-vsp2    # RZ/V2N
               - renesas,r9a09g057-vsp2    # RZ/V2H(P)
           - const: renesas,r9a07g044-vsp2 # RZ/G2L fallback
 
index 08b02ec1675575e0cbf305fa9118c622696f83e5..96b6c89387683ba81a1dd20cc66ec72fec4823b4 100644 (file)
@@ -10,13 +10,15 @@ maintainers:
   - Heiko Stuebner <heiko@sntech.de>
 
 description: |-
-  The Rockchip rk3399 has a stateless Video Decoder that can decodes H.264,
-  HEVC an VP9 streams.
+  Rockchip SoCs have variants of the same stateless Video Decoder that can
+  decodes H.264, HEVC, VP9 and AV1 streams, depending on the variant.
 
 properties:
   compatible:
     oneOf:
       - const: rockchip,rk3399-vdec
+      - const: rockchip,rk3576-vdec
+      - const: rockchip,rk3588-vdec
       - items:
           - enum:
               - rockchip,rk3228-vdec
@@ -24,35 +26,72 @@ properties:
           - const: rockchip,rk3399-vdec
 
   reg:
-    maxItems: 1
+    minItems: 1
+    items:
+      - description: The function configuration registers base
+      - description: The link table configuration registers base
+      - description: The cache configuration registers base
+
+  reg-names:
+    items:
+      - const: function
+      - const: link
+      - const: cache
 
   interrupts:
     maxItems: 1
 
   clocks:
+    minItems: 4
     items:
       - description: The Video Decoder AXI interface clock
       - description: The Video Decoder AHB interface clock
       - description: The Video Decoded CABAC clock
       - description: The Video Decoder core clock
+      - description: The Video decoder HEVC CABAC clock
 
   clock-names:
+    minItems: 4
     items:
       - const: axi
       - const: ahb
       - const: cabac
       - const: core
+      - const: hevc_cabac
 
   assigned-clocks: true
 
   assigned-clock-rates: true
 
+  resets:
+    items:
+      - description: The Video Decoder AXI interface reset
+      - description: The Video Decoder AHB interface reset
+      - description: The Video Decoded CABAC reset
+      - description: The Video Decoder core reset
+      - description: The Video decoder HEVC CABAC reset
+
+  reset-names:
+    items:
+      - const: axi
+      - const: ahb
+      - const: cabac
+      - const: core
+      - const: hevc_cabac
+
   power-domains:
     maxItems: 1
 
   iommus:
     maxItems: 1
 
+  sram:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: |
+      phandle to a reserved on-chip SRAM regions.
+      Some SoCs, like rk3588 provide on-chip SRAM to store temporary
+      buffers during decoding.
+
 required:
   - compatible
   - reg
@@ -61,6 +100,41 @@ required:
   - clock-names
   - power-domains
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - rockchip,rk3576-vdec
+              - rockchip,rk3588-vdec
+    then:
+      properties:
+        reg:
+          minItems: 3
+        reg-names:
+          minItems: 3
+        clocks:
+          minItems: 5
+        clock-names:
+          minItems: 5
+        resets:
+          minItems: 5
+        reset-names:
+          minItems: 5
+    else:
+      properties:
+        reg:
+          maxItems: 1
+        reg-names: false
+        clocks:
+          maxItems: 4
+        clock-names:
+          maxItems: 4
+        resets: false
+        reset-names: false
+        sram: false
+
 additionalProperties: false
 
 examples:
diff --git a/Bindings/memory-controllers/arm,pl172.txt b/Bindings/memory-controllers/arm,pl172.txt
deleted file mode 100644 (file)
index 22b77ee..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-* Device tree bindings for ARM PL172/PL175/PL176 MultiPort Memory Controller
-
-Required properties:
-
-- compatible:          Must be "arm,primecell" and exactly one from
-                       "arm,pl172", "arm,pl175" or "arm,pl176".
-
-- reg:                 Must contains offset/length value for controller.
-
-- #address-cells:      Must be 2. The partition number has to be encoded in the
-                       first address cell and it may accept values 0..N-1
-                       (N - total number of partitions). The second cell is the
-                       offset into the partition.
-
-- #size-cells:         Must be set to 1.
-
-- ranges:              Must contain one or more chip select memory regions.
-
-- clocks:              Must contain references to controller clocks.
-
-- clock-names:         Must contain "mpmcclk" and "apb_pclk".
-
-- clock-ranges:                Empty property indicating that child nodes can inherit
-                       named clocks. Required only if clock tree data present
-                       in device tree.
-                       See clock-bindings.txt
-
-Child chip-select (cs) nodes contain the memory devices nodes connected to
-such as NOR (e.g. cfi-flash) and NAND.
-
-Required child cs node properties:
-
-- #address-cells:      Must be 2.
-
-- #size-cells:         Must be 1.
-
-- ranges:              Empty property indicating that child nodes can inherit
-                       memory layout.
-
-- clock-ranges:                Empty property indicating that child nodes can inherit
-                       named clocks. Required only if clock tree data present
-                       in device tree.
-
-- mpmc,cs:             Chip select number. Indicates to the pl0172 driver
-                       which chipselect is used for accessing the memory.
-
-- mpmc,memory-width:   Width of the chip select memory. Must be equal to
-                       either 8, 16 or 32.
-
-Optional child cs node config properties:
-
-- mpmc,async-page-mode:        Enable asynchronous page mode.
-
-- mpmc,cs-active-high: Set chip select polarity to active high.
-
-- mpmc,byte-lane-low:  Set byte lane state to low.
-
-- mpmc,extended-wait:  Enable extended wait.
-
-- mpmc,buffer-enable:  Enable write buffer, option is not supported by
-                       PL175 and PL176 controllers.
-
-- mpmc,write-protect:  Enable write protect.
-
-Optional child cs node timing properties:
-
-- mpmc,write-enable-delay:     Delay from chip select assertion to write
-                               enable (WE signal) in nano seconds.
-
-- mpmc,output-enable-delay:    Delay from chip select assertion to output
-                               enable (OE signal) in nano seconds.
-
-- mpmc,write-access-delay:     Delay from chip select assertion to write
-                               access in nano seconds.
-
-- mpmc,read-access-delay:      Delay from chip select assertion to read
-                               access in nano seconds.
-
-- mpmc,page-mode-read-delay:   Delay for asynchronous page mode sequential
-                               accesses in nano seconds.
-
-- mpmc,turn-round-delay:       Delay between access to memory banks in nano
-                               seconds.
-
-If any of the above timing parameters are absent, current parameter value will
-be taken from the corresponding HW reg.
-
-Example for pl172 with nor flash on chip select 0 shown below.
-
-emc: memory-controller@40005000 {
-       compatible = "arm,pl172", "arm,primecell";
-       reg = <0x40005000 0x1000>;
-       clocks = <&ccu1 CLK_CPU_EMCDIV>, <&ccu1 CLK_CPU_EMC>;
-       clock-names = "mpmcclk", "apb_pclk";
-       #address-cells = <2>;
-       #size-cells = <1>;
-       ranges = <0 0 0x1c000000 0x1000000
-                 1 0 0x1d000000 0x1000000
-                 2 0 0x1e000000 0x1000000
-                 3 0 0x1f000000 0x1000000>;
-
-       cs0 {
-               #address-cells = <2>;
-               #size-cells = <1>;
-               ranges;
-
-               mpmc,cs = <0>;
-               mpmc,memory-width = <16>;
-               mpmc,byte-lane-low;
-               mpmc,write-enable-delay = <0>;
-               mpmc,output-enable-delay = <0>;
-               mpmc,read-enable-delay = <70>;
-               mpmc,page-mode-read-delay = <70>;
-
-               flash@0,0 {
-                       compatible = "sst,sst39vf320", "cfi-flash";
-                       reg = <0 0 0x400000>;
-                       bank-width = <2>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       partition@0 {
-                               label = "data";
-                               reg = <0 0x400000>;
-                       };
-               };
-       };
-};
diff --git a/Bindings/memory-controllers/arm,pl172.yaml b/Bindings/memory-controllers/arm,pl172.yaml
new file mode 100644 (file)
index 0000000..c1b7026
--- /dev/null
@@ -0,0 +1,222 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/arm,pl172.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM PL172/PL175/PL176 MultiPort Memory Controller
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+# We need a select here so we don't match all nodes with 'arm,primecell'
+select:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - arm,pl172
+          - arm,pl175
+          - arm,pl176
+  required:
+    - compatible
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - arm,pl172
+          - arm,pl175
+          - arm,pl176
+      - const: arm,primecell
+
+  reg:
+    maxItems: 1
+
+  '#address-cells':
+    const: 2
+
+  '#size-cells':
+    const: 1
+
+  ranges: true
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: mpmcclk
+      - const: apb_pclk
+
+  clock-ranges: true
+
+  resets:
+    maxItems: 1
+
+patternProperties:
+  "^cs[0-9]$":
+    type: object
+    additionalProperties: false
+    patternProperties:
+      "^flash@[0-9],[0-9a-f]+$":
+        type: object
+        $ref: /schemas/mtd/mtd-physmap.yaml#
+        unevaluatedProperties: false
+
+      "^(gpio|sram)@[0-9],[0-9a-f]+$":
+        type: object
+        additionalProperties: true
+
+    properties:
+      '#address-cells':
+        const: 2
+
+      '#size-cells':
+        const: 1
+
+      ranges: true
+
+      clocks:
+        maxItems: 2
+
+      clock-ranges: true
+
+      mpmc,cs:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Chip select number. Indicates to the pl0172 driver
+          which chipselect is used for accessing the memory.
+
+      mpmc,memory-width:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [8, 16, 32]
+        description:
+          Width of the chip select memory. Must be equal to either 8, 16 or 32.
+
+      mpmc,async-page-mode:
+        $ref: /schemas/types.yaml#/definitions/flag
+        description:
+          Enable asynchronous page mode.
+
+      mpmc,cs-active-high:
+        $ref: /schemas/types.yaml#/definitions/flag
+        description:
+          Set chip select polarity to active high.
+
+      mpmc,byte-lane-low:
+        $ref: /schemas/types.yaml#/definitions/flag
+        description:
+          Set byte lane state to low.
+
+      mpmc,extended-wait:
+        $ref: /schemas/types.yaml#/definitions/flag
+        description:
+          Enable extended wait.
+
+      mpmc,buffer-enable:
+        $ref: /schemas/types.yaml#/definitions/flag
+        description:
+          Enable write buffer, option is not supported by
+          PL175 and PL176 controllers.
+
+      mpmc,write-protect:
+        $ref: /schemas/types.yaml#/definitions/flag
+        description:
+          Enable write protect.
+
+      mpmc,read-enable-delay:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Delay from chip select assertion to read
+          enable (RE signal) in nano seconds.
+
+      mpmc,write-enable-delay:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Delay from chip select assertion to write
+          enable (WE signal) in nano seconds.
+
+      mpmc,output-enable-delay:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Delay from chip select assertion to output
+          enable (OE signal) in nano seconds.
+
+      mpmc,write-access-delay:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Delay from chip select assertion to write
+          access in nano seconds.
+
+      mpmc,read-access-delay:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Delay from chip select assertion to read
+          access in nano seconds.
+
+      mpmc,page-mode-read-delay:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Delay for asynchronous page mode sequential
+          accesses in nano seconds.
+
+      mpmc,turn-round-delay:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Delay between access to memory banks in nano
+          seconds.
+
+required:
+  - compatible
+  - reg
+  - '#address-cells'
+  - '#size-cells'
+  - ranges
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc18xx-ccu.h>
+
+    memory-controller@40005000 {
+        compatible = "arm,pl172", "arm,primecell";
+        reg = <0x40005000 0x1000>;
+        clocks = <&ccu1 CLK_CPU_EMCDIV>, <&ccu1 CLK_CPU_EMC>;
+        clock-names = "mpmcclk", "apb_pclk";
+        #address-cells = <2>;
+        #size-cells = <1>;
+        ranges = <0 0 0x1c000000 0x1000000
+                  1 0 0x1d000000 0x1000000
+                  2 0 0x1e000000 0x1000000
+                  3 0 0x1f000000 0x1000000>;
+
+        cs0 {
+            #address-cells = <2>;
+            #size-cells = <1>;
+            ranges;
+
+            mpmc,cs = <0>;
+            mpmc,memory-width = <16>;
+            mpmc,byte-lane-low;
+            mpmc,write-enable-delay = <0>;
+            mpmc,output-enable-delay = <0>;
+            mpmc,read-enable-delay = <70>;
+            mpmc,page-mode-read-delay = <70>;
+
+            flash@0,0 {
+                compatible = "sst,sst39vf320", "cfi-flash";
+                reg = <0 0 0x400000>;
+                bank-width = <2>;
+                #address-cells = <1>;
+                #size-cells = <1>;
+                partition@0 {
+                    label = "data";
+                    reg = <0 0x400000>;
+                };
+            };
+        };
+    };
index 4b072c879b02de6b4c8a7c9c251320bdebeb7dbb..b935894bd4fcc133982d8acc8fd40dcf92c6899c 100644 (file)
@@ -11,25 +11,37 @@ maintainers:
 
 properties:
   compatible:
-    items:
-      - enum:
-          - brcm,brcmstb-memc-ddr-rev-b.1.x
-          - brcm,brcmstb-memc-ddr-rev-b.2.0
-          - brcm,brcmstb-memc-ddr-rev-b.2.1
-          - brcm,brcmstb-memc-ddr-rev-b.2.2
-          - brcm,brcmstb-memc-ddr-rev-b.2.3
-          - brcm,brcmstb-memc-ddr-rev-b.2.5
-          - brcm,brcmstb-memc-ddr-rev-b.2.6
-          - brcm,brcmstb-memc-ddr-rev-b.2.7
-          - brcm,brcmstb-memc-ddr-rev-b.2.8
-          - brcm,brcmstb-memc-ddr-rev-b.3.0
-          - brcm,brcmstb-memc-ddr-rev-b.3.1
-          - brcm,brcmstb-memc-ddr-rev-c.1.0
-          - brcm,brcmstb-memc-ddr-rev-c.1.1
-          - brcm,brcmstb-memc-ddr-rev-c.1.2
-          - brcm,brcmstb-memc-ddr-rev-c.1.3
-          - brcm,brcmstb-memc-ddr-rev-c.1.4
-      - const: brcm,brcmstb-memc-ddr
+    oneOf:
+      - description: Revision > 2.1 controllers
+        items:
+          - enum:
+              - brcm,brcmstb-memc-ddr-rev-b.2.2
+              - brcm,brcmstb-memc-ddr-rev-b.2.3
+              - brcm,brcmstb-memc-ddr-rev-b.2.5
+              - brcm,brcmstb-memc-ddr-rev-b.2.6
+              - brcm,brcmstb-memc-ddr-rev-b.2.7
+              - brcm,brcmstb-memc-ddr-rev-b.2.8
+              - brcm,brcmstb-memc-ddr-rev-b.3.0
+              - brcm,brcmstb-memc-ddr-rev-b.3.1
+              - brcm,brcmstb-memc-ddr-rev-c.1.0
+              - brcm,brcmstb-memc-ddr-rev-c.1.1
+              - brcm,brcmstb-memc-ddr-rev-c.1.2
+              - brcm,brcmstb-memc-ddr-rev-c.1.3
+              - brcm,brcmstb-memc-ddr-rev-c.1.4
+          - const: brcm,brcmstb-memc-ddr-rev-b.2.1
+          - const: brcm,brcmstb-memc-ddr
+      - description: Revision 2.1 controllers
+        items:
+          - const: brcm,brcmstb-memc-ddr-rev-b.2.1
+          - const: brcm,brcmstb-memc-ddr
+      - description: Revision 2.0 controllers
+        items:
+          - const: brcm,brcmstb-memc-ddr-rev-b.2.0
+          - const: brcm,brcmstb-memc-ddr
+      - description: Revision 1.x controllers
+        items:
+          - const: brcm,brcmstb-memc-ddr-rev-b.1.x
+          - const: brcm,brcmstb-memc-ddr
 
   reg:
     maxItems: 1
@@ -46,7 +58,9 @@ additionalProperties: false
 examples:
   - |
     memory-controller@9902000 {
-        compatible = "brcm,brcmstb-memc-ddr-rev-c.1.1", "brcm,brcmstb-memc-ddr";
+        compatible = "brcm,brcmstb-memc-ddr-rev-c.1.1",
+                     "brcm,brcmstb-memc-ddr-rev-b.2.1",
+                     "brcm,brcmstb-memc-ddr";
         reg = <0x9902000 0x600>;
         clock-frequency = <2133000000>;
     };
index 935d63d181d9ed4fa839f85eaf6111b6cd02fed2..b901f1b3e0fc332f2ad450a8d3cca132a6aa1f83 100644 (file)
@@ -32,6 +32,7 @@ properties:
           - nvidia,tegra186-mc
           - nvidia,tegra194-mc
           - nvidia,tegra234-mc
+          - nvidia,tegra264-mc
 
   reg:
     minItems: 6
@@ -42,8 +43,12 @@ properties:
     maxItems: 18
 
   interrupts:
-    items:
-      - description: MC general interrupt
+    minItems: 1
+    maxItems: 8
+
+  interrupt-names:
+    minItems: 1
+    maxItems: 8
 
   "#address-cells":
     const: 2
@@ -74,6 +79,7 @@ patternProperties:
               - nvidia,tegra186-emc
               - nvidia,tegra194-emc
               - nvidia,tegra234-emc
+              - nvidia,tegra264-emc
 
       reg:
         minItems: 1
@@ -127,6 +133,15 @@ patternProperties:
             reg:
               minItems: 2
 
+      - if:
+          properties:
+            compatible:
+              const: nvidia,tegra264-emc
+        then:
+          properties:
+            reg:
+              minItems: 2
+
     additionalProperties: false
 
     required:
@@ -158,6 +173,12 @@ allOf:
             - const: ch2
             - const: ch3
 
+        interrupts:
+          items:
+            - description: MC general interrupt
+
+        interrupt-names: false
+
   - if:
       properties:
         compatible:
@@ -189,6 +210,12 @@ allOf:
             - const: ch14
             - const: ch15
 
+        interrupts:
+          items:
+            - description: MC general interrupt
+
+        interrupt-names: false
+
   - if:
       properties:
         compatible:
@@ -220,6 +247,59 @@ allOf:
             - const: ch14
             - const: ch15
 
+        interrupts:
+          items:
+            - description: MC general interrupt
+
+        interrupt-names: false
+
+  - if:
+      properties:
+        compatible:
+          const: nvidia,tegra264-mc
+    then:
+      properties:
+        reg:
+          minItems: 17
+          maxItems: 17
+          description: 17 memory controller channels
+
+        reg-names:
+          items:
+            - const: broadcast
+            - const: ch0
+            - const: ch1
+            - const: ch2
+            - const: ch3
+            - const: ch4
+            - const: ch5
+            - const: ch6
+            - const: ch7
+            - const: ch8
+            - const: ch9
+            - const: ch10
+            - const: ch11
+            - const: ch12
+            - const: ch13
+            - const: ch14
+            - const: ch15
+
+        interrupts:
+          minItems: 8
+          maxItems: 8
+          description: One interrupt line for each MC component
+
+        interrupt-names:
+          items:
+            - const: mcf
+            - const: hub1
+            - const: hub2
+            - const: hub3
+            - const: hub4
+            - const: hub5
+            - const: sbs
+            - const: channel
+
 additionalProperties: false
 
 required:
index 2bfe63ec62dcbed8bd0992e035edd02c9e654eb4..7a84f5bb7284ed6cfe2f48d9af60fa4bb3c31f8b 100644 (file)
@@ -23,7 +23,14 @@ allOf:
 
 properties:
   compatible:
-    const: renesas,r9a09g047-xspi  # RZ/G3E
+    oneOf:
+      - const: renesas,r9a09g047-xspi  # RZ/G3E
+
+      - items:
+          - enum:
+              - renesas,r9a09g056-xspi  # RZ/V2N
+              - renesas,r9a09g057-xspi  # RZ/V2H(P)
+          - const: renesas,r9a09g047-xspi
 
   reg:
     items:
index ee2272f754a339569c793102928ddd13249f8fee..2d4ecee3f2547ad07a0ab8fcbe96f42f526d1619 100644 (file)
@@ -15,14 +15,21 @@ description:
 
 properties:
   compatible:
-    items:
-      - enum:
-          - adi,adp5585-00  # Default
-          - adi,adp5585-01  # 11 GPIOs
-          - adi,adp5585-02  # No pull-up resistors by default on special pins
-          - adi,adp5585-03  # Alternate I2C address
-          - adi,adp5585-04  # Pull-down resistors on all pins by default
-      - const: adi,adp5585
+    oneOf:
+      - items:
+          - enum:
+              - adi,adp5585-00  # Default
+              - adi,adp5585-01  # 11 GPIOs
+              - adi,adp5585-02  # No pull-up resistors by default on special pins
+              - adi,adp5585-03  # Alternate I2C address
+              - adi,adp5585-04  # Pull-down resistors on all pins by default
+          - const: adi,adp5585
+      - items:
+          - enum:
+              - adi,adp5589-00  # Default
+              - adi,adp5589-01  # R4 defaulted to RESET1 output
+              - adi,adp5589-02  # Pull-down resistors by default on special pins
+          - const: adi,adp5589
 
   reg:
     maxItems: 1
@@ -32,6 +39,9 @@ properties:
 
   vdd-supply: true
 
+  reset-gpios:
+    maxItems: 1
+
   gpio-controller: true
 
   '#gpio-cells':
@@ -42,6 +52,84 @@ properties:
   "#pwm-cells":
     const: 3
 
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+  poll-interval:
+    enum: [10, 20, 30, 40]
+    default: 10
+
+  adi,keypad-pins:
+    description: Specifies the pins used for the keypad matrix.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+
+  adi,unlock-events:
+    description:
+      Specifies a maximum of 2 events that can be used to unlock the keypad.
+      If this property is set, the keyboard will be locked and only unlocked
+      after these keys/gpis are pressed. The value 127 serves as a wildcard which
+      means any key can be used for unlocking.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 1
+    maxItems: 2
+    items:
+      anyOf:
+        - minimum: 1
+          maximum: 88
+        - minimum: 97
+          maximum: 115
+        - const: 127
+
+  adi,unlock-trigger-sec:
+    description:
+      Defines the time in which the second unlock event must occur after the
+      first unlock event has occurred.
+    maximum: 7
+    default: 0
+
+  adi,reset1-events:
+    description:
+      Defines the trigger events (key/gpi presses) that can generate reset
+      conditions one the reset1 block.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 1
+    maxItems: 3
+
+  adi,reset2-events:
+    description:
+      Defines the trigger events (key/gpi presses) that can generate reset
+      conditions one the reset2 block.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 1
+    maxItems: 2
+
+  adi,reset1-active-high:
+    description: Sets the reset1 signal as active high.
+    type: boolean
+
+  adi,reset2-active-high:
+    description: Sets the reset2 signal as active high.
+    type: boolean
+
+  adi,rst-passthrough-enable:
+    description: Allows the RST pin to override (OR with) the reset1 signal.
+    type: boolean
+
+  adi,reset-trigger-ms:
+    description:
+      Defines the length of time that the reset events must be active before a
+      reset signal is generated. All events must be active at the same time for
+      the same duration.
+    enum: [0, 1000, 1500, 2000, 2500, 3000, 3500, 4000]
+    default: 0
+
+  adi,reset-pulse-width-us:
+    description: Defines the pulse width of the reset signals.
+    enum: [500, 1000, 2000, 10000]
+    default: 500
+
 patternProperties:
   "-hog(-[0-9]+)?$":
     type: object
@@ -49,14 +137,28 @@ patternProperties:
     required:
       - gpio-hog
 
+dependencies:
+  linux,keymap:
+    - adi,keypad-pins
+    - interrupts
+  interrupt-controller:
+    - interrupts
+  adi,unlock-trigger-sec:
+    - adi,unlock-events
+  adi,reset1-active-high:
+    - adi,reset1-events
+  adi,rst-passtrough-enable:
+    - adi,reset1-events
+  adi,reset2-active-high:
+    - adi,reset2-events
+
 required:
   - compatible
   - reg
-  - gpio-controller
-  - "#gpio-cells"
-  - "#pwm-cells"
 
 allOf:
+  - $ref: /schemas/input/matrix-keymap.yaml#
+  - $ref: /schemas/input/input.yaml#
   - if:
       properties:
         compatible:
@@ -64,9 +166,60 @@ allOf:
             const: adi,adp5585-01
     then:
       properties:
+        adi,unlock-events: false
+        adi,unlock-trigger-sec: false
         gpio-reserved-ranges: false
-    else:
+        reset-gpios: false
+        adi,keypad-pins:
+          minItems: 2
+          maxItems: 11
+          items:
+            minimum: 0
+            maximum: 10
+        adi,reset1-events:
+          items:
+            anyOf:
+              - minimum: 1
+                maximum: 30
+              - minimum: 37
+                maximum: 47
+        adi,reset2-events:
+          items:
+            anyOf:
+              - minimum: 1
+                maximum: 30
+              - minimum: 37
+                maximum: 47
+  - if:
       properties:
+        compatible:
+          contains:
+            enum:
+              - adi,adp5585-00
+              - adi,adp5585-02
+              - adi,adp5585-03
+              - adi,adp5585-04
+    then:
+      properties:
+        adi,unlock-events: false
+        adi,unlock-trigger-sec: false
+        adi,keypad-pins:
+          minItems: 2
+          maxItems: 10
+          items:
+            enum: [0, 1, 2, 3, 4, 6, 7, 8, 9, 10]
+        adi,reset1-events:
+          items:
+            anyOf:
+              - minimum: 1
+                maximum: 25
+              - enum: [37, 38, 39, 40, 41, 43, 44, 45, 46, 47]
+        adi,reset2-events:
+          items:
+            anyOf:
+              - minimum: 1
+                maximum: 25
+              - enum: [37, 38, 39, 40, 41, 43, 44, 45, 46, 47]
         gpio-reserved-ranges:
           maxItems: 1
           items:
@@ -74,10 +227,44 @@ allOf:
               - const: 5
               - const: 1
 
-additionalProperties: false
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - adi,adp5589-00
+              - adi,adp5589-01
+              - adi,adp5589-02
+    then:
+      properties:
+        gpio-reserved-ranges: false
+        adi,keypad-pins:
+          minItems: 2
+          maxItems: 19
+          items:
+            minimum: 0
+            maximum: 18
+        adi,reset1-events:
+          items:
+            anyOf:
+              - minimum: 1
+                maximum: 88
+              - minimum: 97
+                maximum: 115
+        adi,reset2-events:
+          items:
+            anyOf:
+              - minimum: 1
+                maximum: 88
+              - minimum: 97
+                maximum: 115
+
+unevaluatedProperties: false
 
 examples:
   - |
+    #include <dt-bindings/input/input.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
     i2c {
         #address-cells = <1>;
         #size-cells = <0>;
@@ -93,6 +280,33 @@ examples:
             gpio-reserved-ranges = <5 1>;
 
             #pwm-cells = <3>;
+
+            interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
+            interrupt-parent = <&gpio>;
+
+            adi,reset1-events = <1 43>;
+            adi,reset2-events = <2 3>;
+            adi,reset-trigger-ms = <2000>;
+
+            /*
+             * col0, col1, col2
+             * row0, row1, row2
+             */
+            adi,keypad-pins = <0 1 2 6 7 8>;
+
+            linux,keymap = <
+                MATRIX_KEY(0x00, 0x00, KEY_1)
+                MATRIX_KEY(0x00, 0x01, KEY_2)
+                MATRIX_KEY(0x00, 0x02, KEY_3)
+
+                MATRIX_KEY(0x01, 0x00, KEY_A)
+                MATRIX_KEY(0x01, 0x01, KEY_B)
+                MATRIX_KEY(0x01, 0x02, KEY_C)
+
+                MATRIX_KEY(0x02, 0x00, BTN_1)
+                MATRIX_KEY(0x02, 0x01, BTN_2)
+                MATRIX_KEY(0x02, 0x02, BTN_3)
+            >;
         };
     };
 
diff --git a/Bindings/mfd/apple,smc.yaml b/Bindings/mfd/apple,smc.yaml
new file mode 100644 (file)
index 0000000..8a10e27
--- /dev/null
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/apple,smc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple Mac System Management Controller
+
+maintainers:
+  - Sven Peter <sven@kernel.org>
+
+description:
+  Apple Mac System Management Controller implements various functions
+  such as GPIO, RTC, power, reboot.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - apple,t6000-smc
+          - apple,t8103-smc
+          - apple,t8112-smc
+      - const: apple,smc
+
+  reg:
+    items:
+      - description: SMC area
+      - description: SRAM area
+
+  reg-names:
+    items:
+      - const: smc
+      - const: sram
+
+  mboxes:
+    maxItems: 1
+
+  gpio:
+    $ref: /schemas/gpio/apple,smc-gpio.yaml
+
+  reboot:
+    $ref: /schemas/power/reset/apple,smc-reboot.yaml
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - mboxes
+
+examples:
+  - |
+    soc {
+      #address-cells = <2>;
+      #size-cells = <2>;
+
+      smc@23e400000 {
+        compatible = "apple,t8103-smc", "apple,smc";
+        reg = <0x2 0x3e400000 0x0 0x4000>,
+               <0x2 0x3fe00000 0x0 0x100000>;
+        reg-names = "smc", "sram";
+        mboxes = <&smc_mbox>;
+
+        smc_gpio: gpio {
+          compatible = "apple,smc-gpio";
+          gpio-controller;
+          #gpio-cells = <2>;
+        };
+
+        reboot {
+          compatible = "apple,smc-reboot";
+          nvmem-cells = <&shutdown_flag>, <&boot_stage>,
+                        <&boot_error_count>, <&panic_count>;
+          nvmem-cell-names = "shutdown_flag", "boot_stage",
+                             "boot_error_count", "panic_count";
+        };
+      };
+    };
diff --git a/Bindings/mfd/fsl,imx8qxp-csr.yaml b/Bindings/mfd/fsl,imx8qxp-csr.yaml
deleted file mode 100644 (file)
index 2006700..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/mfd/fsl,imx8qxp-csr.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Freescale i.MX8qm/qxp Control and Status Registers Module
-
-maintainers:
-  - Liu Ying <victor.liu@nxp.com>
-
-description: |
-  As a system controller, the Freescale i.MX8qm/qxp Control and Status
-  Registers(CSR) module represents a set of miscellaneous registers of a
-  specific subsystem.  It may provide control and/or status report interfaces
-  to a mix of standalone hardware devices within that subsystem.  One typical
-  use-case is for some other nodes to acquire a reference to the syscon node
-  by phandle, and the other typical use-case is that the operating system
-  should consider all subnodes of the CSR module as separate child devices.
-
-properties:
-  $nodename:
-    pattern: "^syscon@[0-9a-f]+$"
-
-  compatible:
-    items:
-      - enum:
-          - fsl,imx8qxp-mipi-lvds-csr
-          - fsl,imx8qm-lvds-csr
-      - const: syscon
-      - const: simple-mfd
-
-  reg:
-    maxItems: 1
-
-  clocks:
-    maxItems: 1
-
-  clock-names:
-    const: ipg
-
-patternProperties:
-  "^(ldb|phy|pxl2dpi)$":
-    type: object
-    description: The possible child devices of the CSR module.
-
-required:
-  - compatible
-  - reg
-  - clocks
-  - clock-names
-
-allOf:
-  - if:
-      properties:
-        compatible:
-          contains:
-            const: fsl,imx8qxp-mipi-lvds-csr
-    then:
-      required:
-        - pxl2dpi
-        - ldb
-
-  - if:
-      properties:
-        compatible:
-          contains:
-            const: fsl,imx8qm-lvds-csr
-    then:
-      required:
-        - phy
-        - ldb
-
-additionalProperties: false
-
-examples:
-  - |
-    #include <dt-bindings/clock/imx8-lpcg.h>
-    #include <dt-bindings/firmware/imx/rsrc.h>
-    mipi_lvds_0_csr: syscon@56221000 {
-        compatible = "fsl,imx8qxp-mipi-lvds-csr", "syscon", "simple-mfd";
-        reg = <0x56221000 0x1000>;
-        clocks = <&mipi_lvds_0_di_mipi_lvds_regs_lpcg IMX_LPCG_CLK_4>;
-        clock-names = "ipg";
-
-        mipi_lvds_0_pxl2dpi: pxl2dpi {
-            compatible = "fsl,imx8qxp-pxl2dpi";
-            fsl,sc-resource = <IMX_SC_R_MIPI_0>;
-            power-domains = <&pd IMX_SC_R_MIPI_0>;
-
-            ports {
-                #address-cells = <1>;
-                #size-cells = <0>;
-
-                port@0 {
-                    #address-cells = <1>;
-                    #size-cells = <0>;
-                    reg = <0>;
-
-                    mipi_lvds_0_pxl2dpi_dc0_pixel_link0: endpoint@0 {
-                        reg = <0>;
-                        remote-endpoint = <&dc0_pixel_link0_mipi_lvds_0_pxl2dpi>;
-                    };
-
-                    mipi_lvds_0_pxl2dpi_dc0_pixel_link1: endpoint@1 {
-                        reg = <1>;
-                        remote-endpoint = <&dc0_pixel_link1_mipi_lvds_0_pxl2dpi>;
-                    };
-                };
-
-                port@1 {
-                    #address-cells = <1>;
-                    #size-cells = <0>;
-                    reg = <1>;
-
-                    mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0: endpoint@0 {
-                        reg = <0>;
-                        remote-endpoint = <&mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi>;
-                    };
-
-                    mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1: endpoint@1 {
-                        reg = <1>;
-                        remote-endpoint = <&mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi>;
-                    };
-                };
-            };
-        };
-
-        mipi_lvds_0_ldb: ldb {
-            #address-cells = <1>;
-            #size-cells = <0>;
-            compatible = "fsl,imx8qxp-ldb";
-            clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_MISC2>,
-                     <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_BYPASS>;
-            clock-names = "pixel", "bypass";
-            power-domains = <&pd IMX_SC_R_LVDS_0>;
-
-            channel@0 {
-                #address-cells = <1>;
-                #size-cells = <0>;
-                reg = <0>;
-                phys = <&mipi_lvds_0_phy>;
-                phy-names = "lvds_phy";
-
-                port@0 {
-                    reg = <0>;
-
-                    mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi: endpoint {
-                        remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0>;
-                    };
-                };
-
-                port@1 {
-                    reg = <1>;
-
-                    /* ... */
-                };
-            };
-
-            channel@1 {
-                #address-cells = <1>;
-                #size-cells = <0>;
-                reg = <1>;
-                phys = <&mipi_lvds_0_phy>;
-                phy-names = "lvds_phy";
-
-                port@0 {
-                    reg = <0>;
-
-                    mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi: endpoint {
-                        remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1>;
-                    };
-                };
-
-                port@1 {
-                    reg = <1>;
-
-                    /* ... */
-                };
-            };
-        };
-    };
-
-    mipi_lvds_0_phy: phy@56228300 {
-        compatible = "fsl,imx8qxp-mipi-dphy";
-        reg = <0x56228300 0x100>;
-        clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_PHY>;
-        clock-names = "phy_ref";
-        #phy-cells = <0>;
-        fsl,syscon = <&mipi_lvds_0_csr>;
-        power-domains = <&pd IMX_SC_R_MIPI_0>;
-    };
index e8591d6b11b49ddbfc6ab428be0e9601153ece59..ca5324ed0df4cc87de351a10520ef25a16c092a8 100644 (file)
@@ -7,7 +7,7 @@ Required properties:
 LP3943 consists of two sub-devices, lp3943-gpio and lp3943-pwm.
 
 For the LP3943 GPIO properties please refer to:
-Documentation/devicetree/bindings/gpio/gpio-lp3943.txt
+Documentation/devicetree/bindings/gpio/trivial-gpio.yaml
 
 For the LP3943 PWM properties please refer to:
 Documentation/devicetree/bindings/pwm/pwm-lp3943.txt
index f00827c9b67ffc303fd027058aacc30be161a544..18c3fc26ca9323b5ff2b041a377422ad0f2d6fcf 100644 (file)
@@ -19,7 +19,7 @@ which are described in the following files:
 - Documentation/devicetree/bindings/power/supply/cpcap-battery.yaml
 - Documentation/devicetree/bindings/power/supply/cpcap-charger.yaml
 - Documentation/devicetree/bindings/regulator/cpcap-regulator.txt
-- Documentation/devicetree/bindings/phy/phy-cpcap-usb.txt
+- Documentation/devicetree/bindings/phy/motorola,cpcap-usb-phy.yaml
 - Documentation/devicetree/bindings/input/cpcap-pwrbutton.txt
 - Documentation/devicetree/bindings/rtc/cpcap-rtc.txt
 - Documentation/devicetree/bindings/leds/leds-cpcap.txt
diff --git a/Bindings/mfd/mxs-lradc.txt b/Bindings/mfd/mxs-lradc.txt
deleted file mode 100644 (file)
index 755cbef..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-* Freescale MXS LRADC device driver
-
-Required properties:
-- compatible: Should be "fsl,imx23-lradc" for i.MX23 SoC and "fsl,imx28-lradc"
-              for i.MX28 SoC
-- reg: Address and length of the register set for the device
-- interrupts: Should contain the LRADC interrupts
-
-Optional properties:
-- fsl,lradc-touchscreen-wires: Number of wires used to connect the touchscreen
-                               to LRADC. Valid value is either 4 or 5. If this
-                               property is not present, then the touchscreen is
-                               disabled. 5 wires is valid for i.MX28 SoC only.
-- fsl,ave-ctrl: number of samples per direction to calculate an average value.
-                Allowed value is 1 ... 32, default is 4
-- fsl,ave-delay: delay between consecutive samples. Allowed value is
-                 2 ... 2048. It is used if 'fsl,ave-ctrl' > 1, counts at
-                 2 kHz and its default is 2 (= 1 ms)
-- fsl,settling: delay between plate switch to next sample. Allowed value is
-                1 ... 2047. It counts at 2 kHz and its default is
-                10 (= 5 ms)
-
-Example for i.MX23 SoC:
-
-       lradc@80050000 {
-               compatible = "fsl,imx23-lradc";
-               reg = <0x80050000 0x2000>;
-               interrupts = <36 37 38 39 40 41 42 43 44>;
-               fsl,lradc-touchscreen-wires = <4>;
-               fsl,ave-ctrl = <4>;
-               fsl,ave-delay = <2>;
-               fsl,settling = <10>;
-       };
-
-Example for i.MX28 SoC:
-
-       lradc@80050000 {
-               compatible = "fsl,imx28-lradc";
-               reg = <0x80050000 0x2000>;
-               interrupts = <10 14 15 16 17 18 19 20 21 22 23 24 25>;
-               fsl,lradc-touchscreen-wires = <5>;
-               fsl,ave-ctrl = <4>;
-               fsl,ave-delay = <2>;
-               fsl,settling = <10>;
-       };
diff --git a/Bindings/mfd/mxs-lradc.yaml b/Bindings/mfd/mxs-lradc.yaml
new file mode 100644 (file)
index 0000000..782b2f4
--- /dev/null
@@ -0,0 +1,134 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/mxs-lradc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale MXS Low-Resolution ADC (LRADC)
+
+maintainers:
+  - Dario Binacchi <dario.binacchi@amarulasolutions.com>
+
+description:
+  The LRADC provides 16 physical channels of 12-bit resolution for
+  analog-to-digital conversion and includes an integrated 4-wire/5-wire
+  touchscreen controller.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - fsl,imx23-lradc
+          - fsl,imx28-lradc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    minItems: 1
+
+  interrupts:
+    minItems: 9
+    maxItems: 13
+
+  fsl,lradc-touchscreen-wires:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [4, 5]
+    description: >
+      Number of wires used to connect the touchscreen to LRADC.
+
+      If this property is not present, then the touchscreen is disabled.
+
+  fsl,ave-ctrl:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 1
+    maximum: 32
+    default: 4
+    description:
+      Number of samples per direction to calculate an average value.
+
+  fsl,ave-delay:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 2
+    maximum: 2048
+    default: 2
+    description: >
+      Delay between consecutive samples.
+
+      It is used if 'fsl,ave-ctrl' > 1, counts at 2 kHz and its default value (2)
+      is 1 ms.
+
+  fsl,settling:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 1
+    maximum: 2047
+    default: 10
+    description: >
+      Delay between plate switch to next sample.
+
+      It counts at 2 kHz and its default (10) is 5 ms.
+
+  "#io-channel-cells":
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+
+if:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - fsl,imx23-lradc
+then:
+  properties:
+    interrupts:
+      items:
+        - description: channel 0
+        - description: channel 1
+        - description: channel 2
+        - description: channel 3
+        - description: channel 4
+        - description: channel 5
+        - description: touchscreen
+        - description: channel 6
+        - description: channel 7
+    fsl,lradc-touchscreen-wires:
+      const: 4
+else:
+  properties:
+    interrupts:
+      items:
+        - description: threshold 0
+        - description: threshold 1
+        - description: channel 0
+        - description: channel 1
+        - description: channel 2
+        - description: channel 3
+        - description: channel 4
+        - description: channel 5
+        - description: button 0
+        - description: button 1
+        - description: touchscreen
+        - description: channel 6
+        - description: channel 7
+
+additionalProperties: false
+
+examples:
+  - |
+    lradc@80050000 {
+        compatible = "fsl,imx23-lradc";
+        reg = <0x80050000 0x2000>;
+        interrupts = <36>, <37>, <38>, <39>, <40>,
+                     <41>, <42>, <43>, <44>;
+        clocks = <&clks 26>;
+        #io-channel-cells = <1>;
+        fsl,lradc-touchscreen-wires = <4>;
+        fsl,ave-ctrl = <4>;
+        fsl,ave-delay = <2>;
+        fsl,settling = <10>;
+    };
diff --git a/Bindings/mfd/nxp,lpc1850-creg.yaml b/Bindings/mfd/nxp,lpc1850-creg.yaml
new file mode 100644 (file)
index 0000000..89b4892
--- /dev/null
@@ -0,0 +1,148 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/nxp,lpc1850-creg.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: The NXP LPC18xx/43xx CREG (Configuration Registers) block
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - nxp,lpc1850-creg
+      - const: syscon
+      - const: simple-mfd
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  clock-controller:
+    type: object
+    description:
+      The NXP LPC18xx/43xx CREG (Configuration Registers) block contains
+      control registers for two low speed clocks. One of the clocks is a
+      32 kHz oscillator driver with power up/down and clock gating. Next
+      is a fixed divider that creates a 1 kHz clock from the 32 kHz osc.
+
+      These clocks are used by the RTC and the Event Router peripherals.
+      The 32 kHz can also be routed to other peripherals to enable low
+      power modes.
+
+    properties:
+      compatible:
+        const: nxp,lpc1850-creg-clk
+
+      clocks:
+        maxItems: 1
+
+      '#clock-cells':
+        const: 1
+        description: |
+          0            1 kHz clock
+          1           32 kHz Oscillator
+
+    required:
+      - compatible
+      - clocks
+      - '#clock-cells'
+
+    additionalProperties: false
+
+  phy:
+    type: object
+    description: the internal USB OTG PHY in NXP LPC18xx and LPC43xx SoCs
+    properties:
+      compatible:
+        const: nxp,lpc1850-usb-otg-phy
+
+      clocks:
+        maxItems: 1
+
+      '#phy-cells':
+        const: 0
+
+    required:
+      - compatible
+      - clocks
+      - '#phy-cells'
+
+    additionalProperties: false
+
+  dma-mux:
+    type: object
+    description: NXP LPC18xx/43xx DMA MUX (DMA request router)
+    properties:
+      compatible:
+        const: nxp,lpc1850-dmamux
+
+      '#dma-cells':
+        const: 3
+        description: |
+          Should be set to <3>.
+          * 1st cell contain the master dma request signal
+          * 2nd cell contain the mux value (0-3) for the peripheral
+          * 3rd cell contain either 1 or 2 depending on the AHB  master used.
+
+      dma-requests:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 64
+        description: Number of DMA requests the controller can handle
+
+      dma-masters:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description: phandle pointing to the DMA controller
+
+    required:
+      - compatible
+      - '#dma-cells'
+      - dma-masters
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - resets
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc18xx-ccu.h>
+
+    syscon@40043000 {
+        compatible = "nxp,lpc1850-creg", "syscon", "simple-mfd";
+        reg = <0x40043000 0x1000>;
+        clocks = <&ccu1 CLK_CPU_CREG>;
+        resets = <&rgu 5>;
+
+        clock-controller {
+            compatible = "nxp,lpc1850-creg-clk";
+            clocks = <&xtal32>;
+            #clock-cells = <1>;
+        };
+
+        phy {
+            compatible = "nxp,lpc1850-usb-otg-phy";
+            clocks = <&ccu1 CLK_USB0>;
+            #phy-cells = <0>;
+        };
+
+        dma-mux {
+            compatible = "nxp,lpc1850-dmamux";
+            #dma-cells = <3>;
+            dma-requests = <64>;
+            dma-masters = <&dmac>;
+        };
+    };
index 3c2b06629b75ea94f90712470bf14ed7fc16d68d..eb5bca31948ef0d39c46025d0cca65b8b4105a50 100644 (file)
@@ -31,6 +31,27 @@ properties:
 
   system-power-controller: true
 
+  rockchip,reset-mode:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [0, 1, 2]
+    description:
+      Mode to use when a reset of the PMIC is triggered.
+
+      The reset can be triggered either programmatically, via one of
+      the PWRCTRL pins (provided additional configuration) or
+      asserting RESETB pin low.
+
+      The following modes are supported
+
+      - 0; restart PMU,
+      - 1; reset all power off reset registers and force state to
+        switch to ACTIVE mode,
+      - 2; same as mode 1 and also pull RESETB pin down for 5ms,
+
+      For example, some hardware may require a full restart (mode 0)
+      in order to function properly as regulators are shortly
+      interrupted in this mode.
+
   vcc1-supply:
     description:
       The input supply for dcdc-reg1.
index d6b9e29147965b6d8eef786b0fb5b5f198ab69ab..31d544a9c05cad878d10a0ae9b99631f08eb04a8 100644 (file)
@@ -81,6 +81,9 @@ allOf:
         samsung,s2mps11-acokb-ground: false
         samsung,s2mps11-wrstbi-ground: false
 
+      # oneOf is required, because dtschema's fixups.py doesn't handle this
+      # nesting here. Its special treatment to allow either interrupt property
+      # when only one is specified in the binding works at the top level only.
       oneOf:
         - required: [interrupts]
         - required: [interrupts-extended]
diff --git a/Bindings/mfd/ti,tps65910.yaml b/Bindings/mfd/ti,tps65910.yaml
new file mode 100644 (file)
index 0000000..a2668fc
--- /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/mfd/ti,tps65910.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI TPS65910 Power Management Integrated Circuit
+
+maintainers:
+  - Shree Ramamoorthy <s-ramamoorthy@ti.com>
+
+description:
+  TPS65910 device is a Power Management IC that provides 3 step-down converters,
+  1 stepup converter, and 8 LDOs. The device contains an embedded power controller (EPC),
+  1 GPIO, and an RTC.
+
+properties:
+  compatible:
+    enum:
+      - ti,tps65910
+      - ti,tps65911
+
+  reg:
+    description: I2C slave address
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+    description: |
+      The first cell is the GPIO number.
+      The second cell is used to specify additional options <unused>.
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    description: Specifies the IRQ number and flags
+    const: 2
+
+  ti,vmbch-threshold:
+    description: |
+      (TPS65911) Main battery charged threshold comparator.
+      See VMBCH_VSEL in TPS65910 datasheet.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [0, 1, 2, 3]
+
+  ti,vmbch2-threshold:
+    description: |
+      (TPS65911) Main battery discharged threshold comparator.
+      See VMBCH_VSEL in TPS65910 datasheet.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [0, 1, 2, 3]
+
+  ti,en-ck32k-xtal:
+    type: boolean
+    description: Enable external 32-kHz crystal oscillator.
+
+  ti,en-gpio-sleep:
+    description: |
+      Enable sleep control for gpios.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 9
+    maxItems: 9
+    items:
+      minimum: 0
+      maximum: 1
+
+  ti,system-power-controller:
+    type: boolean
+    description: Identify whether or not this pmic controls the system power
+
+  ti,sleep-enable:
+    type: boolean
+    description: Enable SLEEP state.
+
+  ti,sleep-keep-therm:
+    type: boolean
+    description: Keep thermal monitoring on in sleep state.
+
+  ti,sleep-keep-ck32k:
+    type: boolean
+    description: Keep the 32KHz clock output on in sleep state.
+
+  ti,sleep-keep-hsclk:
+    type: boolean
+    description: Keep high speed internal clock on in sleep state.
+
+  regulators:
+    type: object
+    additionalProperties: false
+    description: List of regulators provided by this controller.
+
+    patternProperties:
+      "^(vrtc|vio|vpll|vdac|vmmc|vbb|vddctrl)$":
+        type: object
+        $ref: /schemas/regulator/regulator.yaml#
+        properties:
+          ti,regulator-ext-sleep-control:
+            description: |
+              Enable external sleep control through external inputs:
+              [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)].
+              If this property is not defined, it defaults to 0 (not enabled).
+            $ref: /schemas/types.yaml#/definitions/uint32
+            enum: [0, 1, 2, 4, 8]
+        unevaluatedProperties: false
+
+      "^(vdd[1-3]|vaux([1-2]|33)|vdig[1-2])$":
+        type: object
+        $ref: /schemas/regulator/regulator.yaml#
+        properties:
+          ti,regulator-ext-sleep-control:
+            description: |
+              Enable external sleep control through external inputs:
+              [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)].
+              If this property is not defined, it defaults to 0 (not enabled).
+            $ref: /schemas/types.yaml#/definitions/uint32
+            enum: [0, 1, 2, 4, 8]
+        unevaluatedProperties: false
+
+      "^ldo[1-8]$":
+        type: object
+        $ref: /schemas/regulator/regulator.yaml#
+        properties:
+          ti,regulator-ext-sleep-control:
+            description: |
+              Enable external sleep control through external inputs:
+              [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)].
+              If this property is not defined, it defaults to 0 (not enabled).
+            $ref: /schemas/types.yaml#/definitions/uint32
+            enum: [0, 1, 2, 4, 8]
+        unevaluatedProperties: false
+
+patternProperties:
+  "^(vcc(io|[1-7])-supply)$":
+    description: |
+      Input voltage supply phandle for regulators.
+      These entries are required if PMIC regulators are enabled, or else it
+      can cause the regulator registration to fail.
+
+      If some input supply is powered through battery or always-on supply, then
+      it is also required to have these parameters with the proper node handle for always-on
+      power supply.
+      tps65910:
+        vcc1-supply: VDD1 input.
+        vcc2-supply: VDD2 input.
+        vcc3-supply: VAUX33 and VMMC input.
+        vcc4-supply: VAUX1 and VAUX2 input.
+        vcc5-supply: VPLL and VDAC input.
+        vcc6-supply: VDIG1 and VDIG2 input.
+        vcc7-supply: VRTC and VBB input.
+        vccio-supply: VIO input.
+      tps65911:
+        vcc1-supply: VDD1 input.
+        vcc2-supply: VDD2 input.
+        vcc3-supply: LDO6, LDO7 and LDO8 input.
+        vcc4-supply: LDO5 input.
+        vcc5-supply: LDO3 and LDO4 input.
+        vcc6-supply: LDO1 and LDO2 input.
+        vcc7-supply: VRTC input.
+        vccio-supply: VIO input.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-controller
+  - '#interrupt-cells'
+  - gpio-controller
+  - '#gpio-cells'
+  - regulators
+
+additionalProperties: false
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - ti,tps65910
+    then:
+      properties:
+        regulators:
+          patternProperties:
+            "^(ldo[1-8]|vddctrl)$": false
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - ti,tps65911
+    then:
+      properties:
+        regulators:
+          patternProperties:
+            "^(vdd3|vaux([1-2]|33)|vdig[1-2])$": false
+            "^(vpll|vdac|vmmc|vbb)$": false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        pmic: tps65910@2d {
+            compatible = "ti,tps65910";
+            reg = <0x2d>;
+            interrupt-parent = <&intc>;
+            interrupts = < 0 118 0x04 >;
+
+            #gpio-cells = <2>;
+            gpio-controller;
+
+            #interrupt-cells = <2>;
+            interrupt-controller;
+
+            ti,system-power-controller;
+
+            ti,vmbch-threshold = <0>;
+            ti,vmbch2-threshold = <0>;
+            ti,en-ck32k-xtal;
+            ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
+
+            vcc1-supply = <&reg_parent>;
+            vcc2-supply = <&some_reg>;
+            vcc3-supply = <&vbat>;
+            vcc4-supply = <&vbat>;
+            vcc5-supply = <&vbat>;
+            vcc6-supply = <&vbat>;
+            vcc7-supply = <&vbat>;
+            vccio-supply = <&vbat>;
+
+            regulators {
+                vio_reg: vio {
+                    regulator-name = "vio";
+                    regulator-min-microvolt = <1500000>;
+                    regulator-max-microvolt = <3300000>;
+                    regulator-always-on;
+                    regulator-boot-on;
+                };
+                vdd1_reg: vdd1 {
+                    regulator-name = "vdd1";
+                    regulator-min-microvolt = < 600000>;
+                    regulator-max-microvolt = <1500000>;
+                    regulator-always-on;
+                    regulator-boot-on;
+                    ti,regulator-ext-sleep-control = <0>;
+                };
+                vdd2_reg: vdd2 {
+                    regulator-name = "vdd2";
+                    regulator-min-microvolt = < 600000>;
+                    regulator-max-microvolt = <1500000>;
+                    regulator-always-on;
+                    regulator-boot-on;
+                };
+                vdd3_reg: vdd3 {
+                    regulator-name = "vdd3";
+                    regulator-min-microvolt = <5000000>;
+                    regulator-max-microvolt = <5000000>;
+                    regulator-always-on;
+                };
+                vdig1_reg: vdig1 {
+                    regulator-name = "vdig1";
+                    regulator-min-microvolt = <1200000>;
+                    regulator-max-microvolt = <2700000>;
+                    regulator-always-on;
+                };
+                vdig2_reg: vdig2 {
+                    regulator-name = "vdig2";
+                    regulator-min-microvolt = <1000000>;
+                    regulator-max-microvolt = <1800000>;
+                    regulator-always-on;
+                };
+                vpll_reg: vpll {
+                    regulator-name = "vpll";
+                    regulator-min-microvolt = <1000000>;
+                    regulator-max-microvolt = <2500000>;
+                    regulator-always-on;
+                };
+                vdac_reg: vdac {
+                    regulator-name = "vdac";
+                    regulator-min-microvolt = <1800000>;
+                    regulator-max-microvolt = <2850000>;
+                    regulator-always-on;
+                };
+                vaux1_reg: vaux1 {
+                    regulator-name = "vaux1";
+                    regulator-min-microvolt = <1800000>;
+                    regulator-max-microvolt = <2850000>;
+                    regulator-always-on;
+                };
+                vaux2_reg: vaux2 {
+                    regulator-name = "vaux2";
+                    regulator-min-microvolt = <1800000>;
+                    regulator-max-microvolt = <3300000>;
+                    regulator-always-on;
+                };
+                vaux33_reg: vaux33 {
+                    regulator-name = "vaux33";
+                    regulator-min-microvolt = <1800000>;
+                    regulator-max-microvolt = <3300000>;
+                    regulator-always-on;
+                };
+                vmmc_reg: vmmc {
+                    regulator-name = "vmmc";
+                    regulator-min-microvolt = <1800000>;
+                    regulator-max-microvolt = <3300000>;
+                    regulator-always-on;
+                    regulator-boot-on;
+                };
+            };
+        };
+    };
index 6341b6070366e9138ffbebc8a507bb284ed9edd2..a48cb00afe4381a7fbe1543b5667dfb960f556a4 100644 (file)
@@ -22,6 +22,7 @@ properties:
       - ti,tps6593-q1
       - ti,tps6594-q1
       - ti,tps65224-q1
+      - ti,tps652g1
 
   reg:
     description: I2C slave address or SPI chip select number.
diff --git a/Bindings/mfd/tps65910.txt b/Bindings/mfd/tps65910.txt
deleted file mode 100644 (file)
index a5ced46..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-TPS65910 Power Management Integrated Circuit
-
-Required properties:
-- compatible: "ti,tps65910" or "ti,tps65911"
-- reg: I2C slave address
-- interrupts: the interrupt outputs of the controller
-- #gpio-cells: number of cells to describe a GPIO, this should be 2.
-  The first cell is the GPIO number.
-  The second cell is used to specify additional options <unused>.
-- gpio-controller: mark the device as a GPIO controller
-- #interrupt-cells: the number of cells to describe an IRQ, this should be 2.
-  The first cell is the IRQ number.
-  The second cell is the flags, encoded as the trigger masks from
-  Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
-- regulators: This is the list of child nodes that specify the regulator
-  initialization data for defined regulators. Not all regulators for the given
-  device need to be present. The definition for each of these nodes is defined
-  using the standard binding for regulators found at
-  Documentation/devicetree/bindings/regulator/regulator.txt.
-  The regulator is matched with the regulator-compatible.
-
-  The valid regulator-compatible values are:
-  tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1,
-            vaux2, vaux33, vmmc, vbb
-  tps65911: vrtc, vio, vdd1, vdd2, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5,
-            ldo6, ldo7, ldo8
-
-- xxx-supply: Input voltage supply regulator.
-  These entries are required if regulators are enabled for a device. Missing these
-  properties can cause the regulator registration to fail.
-  If some of input supply is powered through battery or always-on supply then
-  also it is require to have these parameters with proper node handle of always
-  on power supply.
-  tps65910:
-       vcc1-supply: VDD1 input.
-       vcc2-supply: VDD2 input.
-       vcc3-supply: VAUX33 and VMMC input.
-       vcc4-supply: VAUX1 and VAUX2 input.
-       vcc5-supply: VPLL and VDAC input.
-       vcc6-supply: VDIG1 and VDIG2 input.
-       vcc7-supply: VRTC and VBB input.
-       vccio-supply: VIO input.
-  tps65911:
-       vcc1-supply: VDD1 input.
-       vcc2-supply: VDD2 input.
-       vcc3-supply: LDO6, LDO7 and LDO8 input.
-       vcc4-supply: LDO5 input.
-       vcc5-supply: LDO3 and LDO4 input.
-       vcc6-supply: LDO1 and LDO2 input.
-       vcc7-supply: VRTC input.
-       vccio-supply: VIO input.
-
-Optional properties:
-- ti,vmbch-threshold: (tps65911) main battery charged threshold
-  comparator. (see VMBCH_VSEL in TPS65910 datasheet)
-- ti,vmbch2-threshold: (tps65911) main battery discharged threshold
-  comparator. (see VMBCH_VSEL in TPS65910 datasheet)
-- ti,en-ck32k-xtal: enable external 32-kHz crystal oscillator (see CK32K_CTRL
-  in TPS6591X datasheet)
-- ti,en-gpio-sleep: enable sleep control for gpios
-  There should be 9 entries here, one for each gpio.
-- ti,system-power-controller: Telling whether or not this pmic is controlling
-  the system power.
-- ti,sleep-enable: Enable SLEEP state.
-- ti,sleep-keep-therm: Keep thermal monitoring on in sleep state.
-- ti,sleep-keep-ck32k: Keep the 32KHz clock output on in sleep state.
-- ti,sleep-keep-hsclk: Keep high speed internal clock on in sleep state.
-
-Regulator Optional properties:
-- ti,regulator-ext-sleep-control: enable external sleep
-  control through external inputs [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)]
-  If this property is not defined, it defaults to 0 (not enabled).
-
-Example:
-
-       pmu: tps65910@d2 {
-               compatible = "ti,tps65910";
-               reg = <0xd2>;
-               interrupt-parent = <&intc>;
-               interrupts = < 0 118 0x04 >;
-
-               #gpio-cells = <2>;
-               gpio-controller;
-
-               #interrupt-cells = <2>;
-               interrupt-controller;
-
-               ti,system-power-controller;
-
-               ti,vmbch-threshold = 0;
-               ti,vmbch2-threshold = 0;
-               ti,en-ck32k-xtal;
-               ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
-
-               vcc1-supply = <&reg_parent>;
-               vcc2-supply = <&some_reg>;
-               vcc3-supply = <...>;
-               vcc4-supply = <...>;
-               vcc5-supply = <...>;
-               vcc6-supply = <...>;
-               vcc7-supply = <...>;
-               vccio-supply = <...>;
-
-               regulators {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       vdd1_reg: regulator@0 {
-                               regulator-compatible = "vdd1";
-                               reg = <0>;
-                               regulator-min-microvolt = < 600000>;
-                               regulator-max-microvolt = <1500000>;
-                               regulator-always-on;
-                               regulator-boot-on;
-                               ti,regulator-ext-sleep-control = <0>;
-                       };
-                       vdd2_reg: regulator@1 {
-                               regulator-compatible = "vdd2";
-                               reg = <1>;
-                               regulator-min-microvolt = < 600000>;
-                               regulator-max-microvolt = <1500000>;
-                               regulator-always-on;
-                               regulator-boot-on;
-                               ti,regulator-ext-sleep-control = <4>;
-                       };
-                       vddctrl_reg: regulator@2 {
-                               regulator-compatible = "vddctrl";
-                               reg = <2>;
-                               regulator-min-microvolt = < 600000>;
-                               regulator-max-microvolt = <1400000>;
-                               regulator-always-on;
-                               regulator-boot-on;
-                               ti,regulator-ext-sleep-control = <0>;
-                       };
-                       vio_reg: regulator@3 {
-                               regulator-compatible = "vio";
-                               reg = <3>;
-                               regulator-min-microvolt = <1500000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-always-on;
-                               regulator-boot-on;
-                               ti,regulator-ext-sleep-control = <1>;
-                       };
-                       ldo1_reg: regulator@4 {
-                               regulator-compatible = "ldo1";
-                               reg = <4>;
-                               regulator-min-microvolt = <1000000>;
-                               regulator-max-microvolt = <3300000>;
-                               ti,regulator-ext-sleep-control = <0>;
-                       };
-                       ldo2_reg: regulator@5 {
-                               regulator-compatible = "ldo2";
-                               reg = <5>;
-                               regulator-min-microvolt = <1050000>;
-                               regulator-max-microvolt = <1050000>;
-                               ti,regulator-ext-sleep-control = <0>;
-                       };
-                       ldo3_reg: regulator@6 {
-                               regulator-compatible = "ldo3";
-                               reg = <6>;
-                               regulator-min-microvolt = <1000000>;
-                               regulator-max-microvolt = <3300000>;
-                               ti,regulator-ext-sleep-control = <0>;
-                       };
-                       ldo4_reg: regulator@7 {
-                               regulator-compatible = "ldo4";
-                               reg = <7>;
-                               regulator-min-microvolt = <1000000>;
-                               regulator-max-microvolt = <3300000>;
-                               regulator-always-on;
-                               ti,regulator-ext-sleep-control = <0>;
-                       };
-                       ldo5_reg: regulator@8 {
-                               regulator-compatible = "ldo5";
-                               reg = <8>;
-                               regulator-min-microvolt = <1000000>;
-                               regulator-max-microvolt = <3300000>;
-                               ti,regulator-ext-sleep-control = <0>;
-                       };
-                       ldo6_reg: regulator@9 {
-                               regulator-compatible = "ldo6";
-                               reg = <9>;
-                               regulator-min-microvolt = <1200000>;
-                               regulator-max-microvolt = <1200000>;
-                               ti,regulator-ext-sleep-control = <0>;
-                       };
-                       ldo7_reg: regulator@10 {
-                               regulator-compatible = "ldo7";
-                               reg = <10>;
-                               regulator-min-microvolt = <1200000>;
-                               regulator-max-microvolt = <1200000>;
-                               regulator-always-on;
-                               regulator-boot-on;
-                               ti,regulator-ext-sleep-control = <1>;
-                       };
-                       ldo8_reg: regulator@11 {
-                               regulator-compatible = "ldo8";
-                               reg = <11>;
-                               regulator-min-microvolt = <1000000>;
-                               regulator-max-microvolt = <3300000>;
-                               regulator-always-on;
-                               ti,regulator-ext-sleep-control = <1>;
-                       };
-               };
-       };
index 0cc634482a6a8337d6551433029a8721e7be66a4..461a8c063313e8b738bd8ff840baa8bce3a89636 100644 (file)
@@ -92,29 +92,29 @@ additionalProperties: true
 
 examples:
   - |
-     / {
-         compatible = "brcm,bcm3368";
-         #address-cells = <1>;
-         #size-cells = <1>;
-         model = "Broadcom 3368";
-
-         cpus {
-           #address-cells = <1>;
-           #size-cells = <0>;
-
-           mips-hpt-frequency = <150000000>;
-
-           cpu@0 {
-             compatible = "brcm,bmips4350";
-             device_type = "cpu";
-             reg = <0>;
-           };
-
-           cpu@1 {
-             compatible = "brcm,bmips4350";
-             device_type = "cpu";
-             reg = <1>;
-           };
-         };
-       };
+    / {
+        compatible = "brcm,bcm3368";
+        #address-cells = <1>;
+        #size-cells = <1>;
+        model = "Broadcom 3368";
+
+        cpus {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            mips-hpt-frequency = <150000000>;
+
+            cpu@0 {
+                compatible = "brcm,bmips4350";
+                device_type = "cpu";
+                reg = <0>;
+            };
+
+            cpu@1 {
+                compatible = "brcm,bmips4350";
+                device_type = "cpu";
+                reg = <1>;
+            };
+        };
+    };
 ...
index 36a9dbdf3f03d37260019e38a8d18b335d6cd001..aab89946b04fbdd528b803fc39ec3ec087a3909e 100644 (file)
@@ -45,7 +45,7 @@ examples:
     #include <dt-bindings/interrupt-controller/irq.h>
 
     qmgr: queue-manager@60000000 {
-         compatible = "intel,ixp4xx-ahb-queue-manager";
-         reg = <0x60000000 0x4000>;
-         interrupts = <3 IRQ_TYPE_LEVEL_HIGH>, <4 IRQ_TYPE_LEVEL_HIGH>;
+        compatible = "intel,ixp4xx-ahb-queue-manager";
+        reg = <0x60000000 0x4000>;
+        interrupts = <3 IRQ_TYPE_LEVEL_HIGH>, <4 IRQ_TYPE_LEVEL_HIGH>;
     };
index cacb845868f446066514e145fcedf317a0e84cbc..87fcce7cbb40f4d283fd7273a868eb89b8705c67 100644 (file)
@@ -20,6 +20,7 @@ properties:
       - nvidia,tegra186-misc
       - nvidia,tegra194-misc
       - nvidia,tegra234-misc
+      - nvidia,tegra264-misc
 
   reg:
     items:
diff --git a/Bindings/misc/pci1de4,1.yaml b/Bindings/misc/pci1de4,1.yaml
new file mode 100644 (file)
index 0000000..2f9a7a5
--- /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/misc/pci1de4,1.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: RaspberryPi RP1 MFD PCI device
+
+maintainers:
+  - A. della Porta <andrea.porta@suse.com>
+
+description:
+  The RaspberryPi RP1 is a PCI multi function device containing
+  peripherals ranging from Ethernet to USB controller, I2C, SPI
+  and others.
+  The peripherals are accessed by addressing the PCI BAR1 region.
+
+allOf:
+  - $ref: /schemas/pci/pci-ep-bus.yaml
+
+properties:
+  compatible:
+    additionalItems: true
+    maxItems: 3
+    items:
+      - const: pci1de4,1
+
+  '#interrupt-cells':
+    const: 2
+    description: |
+      Specifies respectively the interrupt number and flags as defined
+      in include/dt-bindings/interrupt-controller/irq.h.
+      Since all interrupts are active high, only IRQ_TYPE_LEVEL_HIGH
+      and IRQ_TYPE_EDGE_RISING can be specified as type flags.
+      The supported values for the interrupt number are:
+        - IO BANK0: 0
+        - IO BANK1: 1
+        - IO BANK2: 2
+        - AUDIO IN: 3
+        - AUDIO OUT: 4
+        - PWM0: 5
+        - ETH: 6
+        - I2C0: 7
+        - I2C1: 8
+        - I2C2: 9
+        - I2C3: 10
+        - I2C4: 11
+        - I2C5: 12
+        - I2C6: 13
+        - I2S0: 14
+        - I2S1: 15
+        - I2S2: 16
+        - SDIO0: 17
+        - SDIO1: 18
+        - SPI0: 19
+        - SPI1: 20
+        - SPI2: 21
+        - SPI3: 22
+        - SPI4: 23
+        - SPI5: 24
+        - UART0: 25
+        - TIMER0: 26
+        - TIMER1: 27
+        - TIMER2: 28
+        - TIMER3: 29
+        - USB HOST0: 30
+        - USB HOST0-0: 31
+        - USB HOST0-1: 32
+        - USB HOST0-2: 33
+        - USB HOST0-3: 34
+        - USB HOST1: 35
+        - USB HOST1-0: 36
+        - USB HOST1-1: 37
+        - USB HOST1-2: 38
+        - USB HOST1-3: 39
+        - DMA: 40
+        - PWM1: 41
+        - UART1: 42
+        - UART2: 43
+        - UART3: 44
+        - UART4: 45
+        - UART5: 46
+        - MIPI0: 47
+        - MIPI1: 48
+        - VIDEO OUT: 49
+        - PIO0: 50
+        - PIO1: 51
+        - ADC FIFO: 52
+        - PCIE OUT: 53
+        - SPI6: 54
+        - SPI7: 55
+        - SPI8: 56
+        - PROC MISC: 57
+        - SYSCFG: 58
+        - CLOCKS DEFAULT: 59
+        - VBUSCTRL: 60
+
+  interrupt-controller: true
+
+unevaluatedProperties: false
+
+required:
+  - compatible
+  - '#interrupt-cells'
+  - interrupt-controller
+  - pci-ep-bus@1
+
+examples:
+  - |
+    pci {
+        #address-cells = <3>;
+        #size-cells = <2>;
+
+        rp1@0,0 {
+            compatible = "pci1de4,1";
+            ranges = <0x01 0x00 0x00000000  0x82010000 0x00 0x00  0x00 0x400000>;
+            #address-cells = <3>;
+            #size-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
+
+            pci_ep_bus: pci-ep-bus@1 {
+                compatible = "simple-bus";
+                ranges = <0x00 0x40000000  0x01 0x00 0x00000000  0x00 0x00400000>;
+                dma-ranges = <0x10 0x00000000  0x43000000 0x10 0x00000000  0x10 0x00000000>;
+                #address-cells = <2>;
+                #size-cells = <2>;
+
+                rp1_clocks: clocks@40018000 {
+                    compatible = "raspberrypi,rp1-clocks";
+                    reg = <0x00 0x40018000 0x0 0x10038>;
+                    #clock-cells = <1>;
+                    clocks = <&clk_rp1_xosc>;
+                };
+            };
+        };
+    };
index 0432cc96f7cac972095b90ea49d76372e081bcf7..ac75d694611ac16961ebc5c5090c4dd614f39bb1 100644 (file)
@@ -16,6 +16,7 @@ properties:
           - amd,pensando-elba-sd4hc
           - microchip,mpfs-sd4hc
           - microchip,pic64gx-sd4hc
+          - mobileye,eyeq-sd4hc
           - socionext,uniphier-sd4hc
       - const: cdns,sd4hc
 
diff --git a/Bindings/mmc/loongson,ls2k0500-mmc.yaml b/Bindings/mmc/loongson,ls2k0500-mmc.yaml
new file mode 100644 (file)
index 0000000..c142421
--- /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/mmc/loongson,ls2k0500-mmc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: The SD/SDIO/eMMC host controller for Loongson-2K family SoCs
+
+description:
+  The MMC host controller on the Loongson-2K0500/2K1000 (using an externally
+  shared apbdma controller) provides the SD and SDIO device interfaces.
+  The two MMC host controllers on the Loongson-2K2000 are similar,
+  except that they use internal exclusive DMA. one controller provides
+  the eMMC interface and the other provides the SD/SDIO interface.
+
+maintainers:
+  - Binbin Zhou <zhoubinbin@loongson.cn>
+
+allOf:
+  - $ref: mmc-controller.yaml#
+
+properties:
+  compatible:
+    enum:
+      - loongson,ls2k0500-mmc
+      - loongson,ls2k1000-mmc
+      - loongson,ls2k2000-mmc
+
+  reg:
+    minItems: 1
+    items:
+      - description: Loongson-2K MMC controller registers.
+      - description: APB DMA config register for Loongson-2K MMC controller.
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  dmas:
+    maxItems: 1
+
+  dma-names:
+    const: rx-tx
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+unevaluatedProperties: false
+
+if:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - loongson,ls2k0500-mmc
+          - loongson,ls2k1000-mmc
+
+then:
+  properties:
+    reg:
+      minItems: 2
+
+  required:
+    - dmas
+    - dma-names
+
+else:
+  properties:
+    reg:
+      maxItems: 1
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/clock/loongson,ls2k-clk.h>
+
+    mmc@1fe2c000 {
+        compatible = "loongson,ls2k1000-mmc";
+        reg = <0x1fe2c000 0x68>,
+              <0x1fe00438 0x8>;
+        interrupt-parent = <&liointc0>;
+        interrupts = <31 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clk LOONGSON2_APB_CLK>;
+        dmas = <&apbdma1 0>;
+        dma-names = "rx-tx";
+        bus-width = <4>;
+        cd-gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+    };
+
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/clock/loongson,ls2k-clk.h>
+
+    mmc@79990000 {
+        compatible = "loongson,ls2k2000-mmc";
+        reg = <0x79990000 0x1000>;
+        interrupt-parent = <&pic>;
+        interrupts = <51 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clk LOONGSON2_EMMC_CLK>;
+        bus-width = <8>;
+        non-removable;
+        cap-mmc-highspeed;
+        mmc-hs200-1_8v;
+        no-sd;
+        no-sdio;
+    };
index 32e512a68ed6195a95845fc497ad1e9079cf5cd5..df07ea3b81d1523e994d343f3b535188aa7051df 100644 (file)
@@ -17,7 +17,7 @@ description: |
   and the properties used by the mxsmmc driver.
 
 allOf:
-  - $ref: mmc-controller.yaml
+  - $ref: mmc-controller-common.yaml#
 
 properties:
   compatible:
@@ -31,6 +31,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  clocks:
+    maxItems: 1
+
   dmas:
     maxItems: 1
 
@@ -41,6 +44,7 @@ required:
   - compatible
   - reg
   - interrupts
+  - clocks
   - dmas
   - dma-names
 
@@ -52,6 +56,7 @@ examples:
         compatible = "fsl,imx28-mmc";
         reg = <0x80010000 2000>;
         interrupts = <96>;
+        clocks = <&clks 46>;
         dmas = <&dma_apbh 0>;
         dma-names = "rx-tx";
         bus-width = <8>;
index 7563623876fc07558a4b4a2a7645756ac9ba2488..c754ea71f51f71626345d0a985e63b7a0f873aba 100644 (file)
@@ -72,6 +72,8 @@ properties:
           - enum:
               - renesas,sdhi-r9a09g047 # RZ/G3E
               - renesas,sdhi-r9a09g056 # RZ/V2N
+              - renesas,sdhi-r9a09g077 # RZ/T2H
+              - renesas,sdhi-r9a09g087 # RZ/N2H
           - const: renesas,sdhi-r9a09g057 # RZ/V2H(P)
 
   reg:
@@ -129,59 +131,78 @@ allOf:
         compatible:
           contains:
             enum:
-              - renesas,sdhi-r9a09g057
-              - renesas,rzg2l-sdhi
+              - renesas,sdhi-r9a09g077
+              - renesas,sdhi-r9a09g087
     then:
       properties:
+        resets: false
         clocks:
           items:
-            - description: IMCLK, SDHI channel main clock1.
-            - description: CLK_HS, SDHI channel High speed clock which operates
-                           4 times that of SDHI channel main clock1.
-            - description: IMCLK2, SDHI channel main clock2. When this clock is
-                           turned off, external SD card detection cannot be
-                           detected.
-            - description: ACLK, SDHI channel bus clock.
+            - description: ACLK, IMCLK, SDHI channel bus and main clocks.
+            - description: CLK_HS, SDHI channel High speed clock.
         clock-names:
           items:
-            - const: core
-            - const: clkh
-            - const: cd
             - const: aclk
-      required:
-        - clock-names
-        - resets
+            - const: clkh
     else:
       if:
         properties:
           compatible:
             contains:
               enum:
-                - renesas,rcar-gen2-sdhi
-                - renesas,rcar-gen3-sdhi
-                - renesas,rcar-gen4-sdhi
+                - renesas,sdhi-r9a09g057
+                - renesas,rzg2l-sdhi
       then:
         properties:
           clocks:
-            minItems: 1
-            maxItems: 3
-          clock-names:
-            minItems: 1
-            uniqueItems: true
             items:
-              - const: core
-              - enum: [ clkh, cd ]
-              - const: cd
-      else:
-        properties:
-          clocks:
-            minItems: 1
-            maxItems: 2
+              - description: IMCLK, SDHI channel main clock1.
+              - description: CLK_HS, SDHI channel High speed clock which operates
+                             4 times that of SDHI channel main clock1.
+              - description: IMCLK2, SDHI channel main clock2. When this clock is
+                             turned off, external SD card detection cannot be
+                             detected.
+              - description: ACLK, SDHI channel bus clock.
           clock-names:
-            minItems: 1
             items:
               - const: core
+              - const: clkh
               - const: cd
+              - const: aclk
+        required:
+          - clock-names
+          - resets
+      else:
+        if:
+          properties:
+            compatible:
+              contains:
+                enum:
+                  - renesas,rcar-gen2-sdhi
+                  - renesas,rcar-gen3-sdhi
+                  - renesas,rcar-gen4-sdhi
+        then:
+          properties:
+            clocks:
+              minItems: 1
+              maxItems: 3
+            clock-names:
+              minItems: 1
+              uniqueItems: true
+              items:
+                - const: core
+                - enum: [ clkh, cd ]
+                - const: cd
+        else:
+          properties:
+            clocks:
+              minItems: 1
+              maxItems: 2
+            clock-names:
+              minItems: 1
+              items:
+                - const: core
+                - const: cd
 
   - if:
       properties:
@@ -245,49 +266,49 @@ examples:
     #include <dt-bindings/power/r8a7790-sysc.h>
 
     sdhi0: mmc@ee100000 {
-            compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
-            reg = <0xee100000 0x328>;
-            interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
-            clocks = <&cpg CPG_MOD 314>;
-            dmas = <&dmac0 0xcd>, <&dmac0 0xce>, <&dmac1 0xcd>, <&dmac1 0xce>;
-            dma-names = "tx", "rx", "tx", "rx";
-            max-frequency = <195000000>;
-            power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
-            resets = <&cpg 314>;
+        compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
+        reg = <0xee100000 0x328>;
+        interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&cpg CPG_MOD 314>;
+        dmas = <&dmac0 0xcd>, <&dmac0 0xce>, <&dmac1 0xcd>, <&dmac1 0xce>;
+        dma-names = "tx", "rx", "tx", "rx";
+        max-frequency = <195000000>;
+        power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
+        resets = <&cpg 314>;
     };
 
     sdhi1: mmc@ee120000 {
-             compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
-             reg = <0xee120000 0x328>;
-             interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
-             clocks = <&cpg CPG_MOD 313>;
-             dmas = <&dmac0 0xc9>, <&dmac0 0xca>, <&dmac1 0xc9>, <&dmac1 0xca>;
-             dma-names = "tx", "rx", "tx", "rx";
-             max-frequency = <195000000>;
-             power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
-             resets = <&cpg 313>;
+        compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
+        reg = <0xee120000 0x328>;
+        interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&cpg CPG_MOD 313>;
+        dmas = <&dmac0 0xc9>, <&dmac0 0xca>, <&dmac1 0xc9>, <&dmac1 0xca>;
+        dma-names = "tx", "rx", "tx", "rx";
+        max-frequency = <195000000>;
+        power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
+        resets = <&cpg 313>;
     };
 
     sdhi2: mmc@ee140000 {
-             compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
-             reg = <0xee140000 0x100>;
-             interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
-             clocks = <&cpg CPG_MOD 312>;
-             dmas = <&dmac0 0xc1>, <&dmac0 0xc2>, <&dmac1 0xc1>, <&dmac1 0xc2>;
-             dma-names = "tx", "rx", "tx", "rx";
-             max-frequency = <97500000>;
-             power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
-             resets = <&cpg 312>;
-     };
+        compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
+        reg = <0xee140000 0x100>;
+        interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&cpg CPG_MOD 312>;
+        dmas = <&dmac0 0xc1>, <&dmac0 0xc2>, <&dmac1 0xc1>, <&dmac1 0xc2>;
+        dma-names = "tx", "rx", "tx", "rx";
+        max-frequency = <97500000>;
+        power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
+        resets = <&cpg 312>;
+    };
 
-     sdhi3: mmc@ee160000 {
-              compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
-              reg = <0xee160000 0x100>;
-              interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
-              clocks = <&cpg CPG_MOD 311>;
-              dmas = <&dmac0 0xd3>, <&dmac0 0xd4>, <&dmac1 0xd3>, <&dmac1 0xd4>;
-              dma-names = "tx", "rx", "tx", "rx";
-              max-frequency = <97500000>;
-              power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
-              resets = <&cpg 311>;
+    sdhi3: mmc@ee160000 {
+        compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
+        reg = <0xee160000 0x100>;
+        interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&cpg CPG_MOD 311>;
+        dmas = <&dmac0 0xd3>, <&dmac0 0xd4>, <&dmac1 0xd3>, <&dmac1 0xd4>;
+        dma-names = "tx", "rx", "tx", "rx";
+        max-frequency = <97500000>;
+        power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
+        resets = <&cpg 311>;
     };
index 2b2cbce2458b70b96b98c042109b10ead26e2291..22d1f50c3fd1a019f1cfca99bafe577564fb6689 100644 (file)
@@ -42,9 +42,11 @@ properties:
               - qcom,ipq5424-sdhci
               - qcom,ipq6018-sdhci
               - qcom,ipq9574-sdhci
+              - qcom,milos-sdhci
               - qcom,qcm2290-sdhci
               - qcom,qcs404-sdhci
               - qcom,qcs615-sdhci
+              - qcom,qcs8300-sdhci
               - qcom,qdu1000-sdhci
               - qcom,sar2130p-sdhci
               - qcom,sc7180-sdhci
index 4869ddef36fd89265a1bfe96bb9663b553ac5084..e7c06032048a3a73eb3eb67a887e75db273ffa92 100644 (file)
@@ -30,6 +30,26 @@ allOf:
           maxItems: 1
         reg-names:
           maxItems: 1
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: mrvl,pxav1-mmc
+    then:
+      properties:
+        pinctrl-names:
+          description:
+            Optional for supporting PXA168 SDIO IRQ errata to switch CMD pin between
+            SDIO CMD and GPIO mode.
+          items:
+            - const: default
+            - const: state_cmd_gpio
+        pinctrl-0:
+          description:
+            Should contain default pinctrl.
+        pinctrl-1:
+          description:
+            Should switch CMD pin to GPIO mode as a high output.
 
 properties:
   compatible:
@@ -62,22 +82,6 @@ properties:
       - const: io
       - const: core
 
-  pinctrl-names:
-    description:
-      Optional for supporting PXA168 SDIO IRQ errata to switch CMD pin between
-      SDIO CMD and GPIO mode.
-    items:
-      - const: default
-      - const: state_cmd_gpio
-
-  pinctrl-0:
-    description:
-      Should contain default pinctrl.
-
-  pinctrl-1:
-    description:
-      Should switch CMD pin to GPIO mode as a high output.
-
   mrvl,clk-delay-cycles:
     description: Specify a number of cycles to delay for tuning.
     $ref: /schemas/types.yaml#/definitions/uint32
index 335f8204aa1ebce3d2b4686b2a06d0ea3791667c..587af4968255ee19c89dbb7988c6fcb86dcc018d 100644 (file)
@@ -20,7 +20,7 @@ properties:
           - pattern: "^((((micron|spansion|st),)?\
               (m25p(40|80|16|32|64|128)|\
               n25q(32b|064|128a11|128a13|256a|512a|164k)))|\
-              atmel,at25df(321a|641|081a)|\
+              atmel,at(25|26)df(321a|641|081a)|\
               everspin,mr25h(10|40|128|256)|\
               (mxicy|macronix),mx25l(4005a|1606e|6405d|8005|12805d|25635e)|\
               (mxicy|macronix),mx25u(4033|4035)|\
diff --git a/Bindings/mtd/nxp,lpc1773-spifi.yaml b/Bindings/mtd/nxp,lpc1773-spifi.yaml
new file mode 100644 (file)
index 0000000..d6efb94
--- /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/mtd/nxp,lpc1773-spifi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP SPI Flash Interface (SPIFI)
+
+description:
+  NXP SPIFI is a specialized SPI interface for serial Flash devices.
+  It supports one Flash device with 1-, 2- and 4-bits width in SPI
+  mode 0 or 3. The controller operates in either command or memory
+  mode. In memory mode the Flash is accessible from the CPU as
+  normal memory.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc1773-spifi
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: spifi
+      - const: flash
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: spifi
+      - const: reg
+
+  resets:
+    maxItems: 1
+
+  spi-cpol:
+    enum: [0, 3]
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - clocks
+  - clock-names
+
+allOf:
+  - $ref: /schemas/spi/spi-controller.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc18xx-ccu.h>
+
+    spi@40003000 {
+        compatible = "nxp,lpc1773-spifi";
+        reg = <0x40003000 0x1000>, <0x14000000 0x4000000>;
+        reg-names = "spifi", "flash";
+        interrupts = <30>;
+        clocks = <&ccu1 CLK_SPIFI>, <&ccu1 CLK_CPU_SPIFI>;
+        clock-names = "spifi", "reg";
+        resets = <&rgu 53>;
+    };
+
diff --git a/Bindings/mtd/nxp-spifi.txt b/Bindings/mtd/nxp-spifi.txt
deleted file mode 100644 (file)
index f8b6b25..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-* NXP SPI Flash Interface (SPIFI)
-
-NXP SPIFI is a specialized SPI interface for serial Flash devices.
-It supports one Flash device with 1-, 2- and 4-bits width in SPI
-mode 0 or 3. The controller operates in either command or memory
-mode. In memory mode the Flash is accessible from the CPU as
-normal memory.
-
-Required properties:
-  - compatible : Should be "nxp,lpc1773-spifi"
-  - reg : the first contains the register location and length,
-          the second contains the memory mapping address and length
-  - reg-names: Should contain the reg names "spifi" and "flash"
-  - interrupts : Should contain the interrupt for the device
-  - clocks : The clocks needed by the SPIFI controller
-  - clock-names : Should contain the clock names "spifi" and "reg"
-
-Optional properties:
- - resets : phandle + reset specifier
-
-The SPI Flash must be a child of the SPIFI node and must have a
-compatible property as specified in bindings/mtd/jedec,spi-nor.txt
-
-Optionally it can also contain the following properties.
- - spi-cpol : Controller only supports mode 0 and 3 so either
-              both spi-cpol and spi-cpha should be present or
-              none of them
- - spi-cpha : See above
- - spi-rx-bus-width : Used to select how many pins that are used
-                      for input on the controller
-
-See bindings/spi/spi-bus.txt for more information.
-
-Example:
-spifi: spifi@40003000 {
-       compatible = "nxp,lpc1773-spifi";
-       reg = <0x40003000 0x1000>, <0x14000000 0x4000000>;
-       reg-names = "spifi", "flash";
-       interrupts = <30>;
-       clocks = <&ccu1 CLK_SPIFI>, <&ccu1 CLK_CPU_SPIFI>;
-       clock-names = "spifi", "reg";
-       resets = <&rgu 53>;
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               spi-cpol;
-               spi-cpha;
-               spi-rx-bus-width = <4>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-
-               partition@0 {
-                       label = "data";
-                       reg = <0 0x200000>;
-               };
-       };
-};
-
index f9d87c46094b8e46a96c065f6a16266ab0b667ab..a3c316436317fbf913b261789c8b12eef3ed439c 100644 (file)
@@ -40,6 +40,6 @@ examples:
         #address-cells = <1>;
         #size-cells = <0>;
         nand@0 {
-           reg = <0>;
+            reg = <0>;
         };
     };
index 929cf8c0b0fd01454765a5a8f75354245c2d8a78..c425a9f1886ddf59e11870bac755cf31d30f5e65 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Analog Devices ADIN1200/ADIN1300 PHY
 
 maintainers:
-  - Alexandru Tachici <alexandru.tachici@analog.com>
+  - Marcelo Schmitt <marcelo.schmitt@analog.com>
 
 description: |
   Bindings for Analog Devices Industrial Ethernet PHYs
index 9de865295d7a38c2da1ee66481b5cb5acdab8607..0a73e01d7f973297ea5f6725a979a8cd6b90590d 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: ADI ADIN1110 MAC-PHY
 
 maintainers:
-  - Alexandru Tachici <alexandru.tachici@analog.com>
+  - Marcelo Schmitt <marcelo.schmitt@analog.com>
 
 description: |
   The ADIN1110 is a low power single port 10BASE-T1L MAC-
diff --git a/Bindings/net/airoha,an7583-mdio.yaml b/Bindings/net/airoha,an7583-mdio.yaml
new file mode 100644 (file)
index 0000000..3e7e68e
--- /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/net/airoha,an7583-mdio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Airoha AN7583 Dedicated MDIO Controller
+
+maintainers:
+  - Christian Marangi <ansuelsmth@gmail.com>
+
+description:
+  Airoha AN7583 SoC have 3 different MDIO Controller.
+
+  One comes from the intergated Switch based on MT7530.
+
+  The other 2 (that this schema describe) live under the SCU
+  register supporting both C22 and C45 PHYs.
+
+$ref: mdio.yaml#
+
+properties:
+  compatible:
+    const: airoha,an7583-mdio
+
+  reg:
+    enum: [0xc8, 0xcc]
+
+  clocks:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  clock-frequency:
+    default: 2500000
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - resets
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    system-controller {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        mdio-bus@c8 {
+            compatible = "airoha,an7583-mdio";
+            reg = <0xc8>;
+
+            clocks = <&scu>;
+            resets = <&scu>;
+        };
+    };
index 19934d5c24e5fb27afedf2634b187f6d7940fa96..2ac709a4c472eb13ffe953882621265cd0ae6086 100644 (file)
@@ -21,6 +21,7 @@ properties:
       - items:
           - enum:
               - allwinner,sun20i-d1-emac
+              - allwinner,sun50i-a100-emac
               - allwinner,sun50i-h6-emac
               - allwinner,sun50i-h616-emac0
               - allwinner,sun55i-a523-gmac0
diff --git a/Bindings/net/altr,gmii-to-sgmii-2.0.yaml b/Bindings/net/altr,gmii-to-sgmii-2.0.yaml
new file mode 100644 (file)
index 0000000..aafb644
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+# Copyright (C) 2025 Altera Corporation
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/altr,gmii-to-sgmii-2.0.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Altera GMII to SGMII Converter
+
+maintainers:
+  - Matthew Gerlach <matthew.gerlach@altera.com>
+
+description:
+  This binding describes the Altera GMII to SGMII converter.
+
+properties:
+  compatible:
+    const: altr,gmii-to-sgmii-2.0
+
+  reg:
+    items:
+      - description: Registers for the emac splitter IP
+      - description: Registers for the GMII to SGMII converter.
+      - description: Registers for TSE control.
+
+  reg-names:
+    items:
+      - const: hps_emac_interface_splitter_avalon_slave
+      - const: gmii_to_sgmii_adapter_avalon_slave
+      - const: eth_tse_control_port
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    phy@ff000240 {
+        compatible = "altr,gmii-to-sgmii-2.0";
+        reg = <0xff000240 0x00000008>,
+              <0xff000200 0x00000040>,
+              <0xff000250 0x00000008>;
+        reg-names = "hps_emac_interface_splitter_avalon_slave",
+                    "gmii_to_sgmii_adapter_avalon_slave",
+                    "eth_tse_control_port";
+    };
diff --git a/Bindings/net/altr,socfpga-stmmac.yaml b/Bindings/net/altr,socfpga-stmmac.yaml
new file mode 100644 (file)
index 0000000..3a22d35
--- /dev/null
@@ -0,0 +1,171 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/altr,socfpga-stmmac.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Altera SOCFPGA SoC DWMAC controller
+
+maintainers:
+  - Matthew Gerlach <matthew.gerlach@altera.com>
+
+description:
+  This binding describes the Altera SOCFPGA SoC implementation of the
+  Synopsys DWMAC for the Cyclone5, Arria5, Stratix10, Agilex5 and Agilex7
+  families of chips.
+  # TODO: Determine how to handle the Arria10 reset-name, stmmaceth-ocp, that
+  # does not validate against net/snps,dwmac.yaml.
+
+select:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - altr,socfpga-stmmac
+          - altr,socfpga-stmmac-a10-s10
+          - altr,socfpga-stmmac-agilex5
+
+  required:
+    - compatible
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: altr,socfpga-stmmac
+          - const: snps,dwmac-3.70a
+          - const: snps,dwmac
+      - items:
+          - const: altr,socfpga-stmmac-a10-s10
+          - const: snps,dwmac-3.72a
+          - const: snps,dwmac
+      - items:
+          - const: altr,socfpga-stmmac-a10-s10
+          - const: snps,dwmac-3.74a
+          - const: snps,dwmac
+      - items:
+          - const: altr,socfpga-stmmac-agilex5
+          - const: snps,dwxgmac-2.10
+
+  clocks:
+    minItems: 1
+    items:
+      - description: GMAC main clock
+      - description:
+          PTP reference clock. This clock is used for programming the
+          Timestamp Addend Register. If not passed then the system
+          clock will be used and this is fine on some platforms.
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: stmmaceth
+      - const: ptp_ref
+
+  iommus:
+    minItems: 1
+    maxItems: 2
+
+  phy-mode:
+    enum:
+      - gmii
+      - mii
+      - rgmii
+      - rgmii-id
+      - rgmii-rxid
+      - rgmii-txid
+      - sgmii
+      - 1000base-x
+
+  rxc-skew-ps:
+    description: Skew control of RXC pad
+
+  rxd0-skew-ps:
+    description: Skew control of RX data 0 pad
+
+  rxd1-skew-ps:
+    description: Skew control of RX data 1 pad
+
+  rxd2-skew-ps:
+    description: Skew control of RX data 2 pad
+
+  rxd3-skew-ps:
+    description: Skew control of RX data 3 pad
+
+  rxdv-skew-ps:
+    description: Skew control of RX CTL pad
+
+  txc-skew-ps:
+    description: Skew control of TXC pad
+
+  txen-skew-ps:
+    description: Skew control of TXC pad
+
+  altr,emac-splitter:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Should be the phandle to the emac splitter soft IP node if DWMAC
+      controller is connected an emac splitter.
+
+  altr,f2h_ptp_ref_clk:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to Precision Time Protocol reference clock. This clock is
+      common to gmac instances and defaults to osc1.
+
+  altr,gmii-to-sgmii-converter:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Should be the phandle to the gmii to sgmii converter soft IP.
+
+  altr,sysmgr-syscon:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description:
+      Should be the phandle to the system manager node that encompass
+      the glue register, the register offset, and the register shift.
+      On Cyclone5/Arria5, the register shift represents the PHY mode
+      bits, while on the Arria10/Stratix10/Agilex platforms, the
+      register shift represents bit for each emac to enable/disable
+      signals from the FPGA fabric to the EMAC modules.
+    items:
+      - items:
+          - description: phandle to the system manager node
+          - description: offset of the control register
+          - description: shift within the control register
+
+patternProperties:
+  "^mdio[0-9]$":
+    type: object
+
+required:
+  - compatible
+  - clocks
+  - clock-names
+  - altr,sysmgr-syscon
+
+allOf:
+  - $ref: snps,dwmac.yaml#
+
+unevaluatedProperties: false
+
+examples:
+
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    soc {
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ethernet@ff700000 {
+            compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a",
+            "snps,dwmac";
+            altr,sysmgr-syscon = <&sysmgr 0x60 0>;
+            reg = <0xff700000 0x2000>;
+            interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+            interrupt-names = "macirq";
+            mac-address = [00 00 00 00 00 00]; /* Filled in by U-Boot */
+            clocks = <&emac_0_clk>;
+            clock-names = "stmmaceth";
+            phy-mode = "sgmii";
+        };
+    };
index 3ab60c70286f5aecac5bf0ba98ceda15f9c9bad5..857c6234ba9be27a2ddf2e99ecdd5706ca4e7481 100644 (file)
@@ -34,6 +34,13 @@ properties:
       This property depends on the module vendor's
       configuration.
 
+  max-speed:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum:
+      - 3000000
+      - 4000000
+    default: 3000000
+
   firmware-name:
     maxItems: 1
 
@@ -65,6 +72,14 @@ properties:
     description:
       The GPIO number of the NXP chipset used for BT_WAKE_OUT.
 
+  vcc-supply:
+    description:
+      phandle of the regulator that provides the supply voltage.
+
+  reset-gpios:
+    description:
+      Chip powerdown/reset signal (PDn).
+
 required:
   - compatible
 
@@ -78,10 +93,13 @@ examples:
         bluetooth {
             compatible = "nxp,88w8987-bt";
             fw-init-baudrate = <3000000>;
+            max-speed = <4000000>;
             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>;
+            vcc-supply = <&nxp_iw612_supply>;
+            reset-gpios = <&gpioctrl 2 GPIO_ACTIVE_LOW>;
             local-bd-address = [66 55 44 33 22 11];
             interrupt-parent = <&gpio>;
             interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
index 8d69846b2e099fcaeaf6b366239035504809d0b3..559d0f733e7e7ac2909b87ab759be51d59be51c2 100644 (file)
@@ -62,6 +62,7 @@ properties:
       - items:
           - enum:
               - microchip,sam9x7-gem     # Microchip SAM9X7 gigabit ethernet interface
+              - microchip,sama7d65-gem   # Microchip SAMA7D65 gigabit ethernet interface
           - const: microchip,sama7g5-gem # Microchip SAMA7G5 gigabit ethernet interface
 
   reg:
@@ -114,6 +115,13 @@ properties:
   power-domains:
     maxItems: 1
 
+  cdns,refclk-ext:
+    type: boolean
+    description:
+      This selects if the REFCLK for RMII is provided by an external source.
+      For RGMII mode this selects if the 125MHz REF clock is provided by an external
+      source.
+
   cdns,rx-watermark:
     $ref: /schemas/types.yaml#/definitions/uint32
     description:
index d6c957a33b482dedb442e11e28aca3b95f608b24..fbab3a1a8d3e1d1b339b0fc4752155618b077588 100644 (file)
@@ -66,6 +66,12 @@ properties:
               - brcm,bcm63268-switch
           - const: brcm,bcm63xx-switch
 
+  brcm,gpio-ctrl:
+    description:
+      A phandle to the syscon node of the bcm63xx gpio controller
+      which contains phy control registers
+    $ref: /schemas/types.yaml#/definitions/phandle
+
 required:
   - compatible
   - reg
index 51205f9f29856de6c7df1b667b11ae7990da2ac9..815a90808901041c5ca2da319a279d02fcb66636 100644 (file)
@@ -136,6 +136,16 @@ properties:
       See Documentation/devicetree/bindings/regulator/mt6323-regulator.txt for
       details for the regulator setup on these boards.
 
+  mdio:
+    $ref: /schemas/net/mdio.yaml#
+    unevaluatedProperties: false
+
+    properties:
+      mediatek,pio:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description:
+          Phandle pointing to the mediatek pinctrl node.
+
   mediatek,mcm:
     type: boolean
     description:
@@ -190,6 +200,18 @@ required:
   - reg
 
 $defs:
+  builtin-dsa-port:
+    patternProperties:
+      "^(ethernet-)?ports$":
+        patternProperties:
+          "^(ethernet-)?port@[0-6]$":
+            if:
+              required: [ ethernet ]
+            then:
+              properties:
+                phy-mode:
+                  const: internal
+
   mt7530-dsa-port:
     patternProperties:
       "^(ethernet-)?ports$":
@@ -297,7 +319,7 @@ allOf:
             - airoha,en7581-switch
             - airoha,an7583-switch
     then:
-      $ref: "#/$defs/mt7530-dsa-port"
+      $ref: "#/$defs/builtin-dsa-port"
       properties:
         gpio-controller: false
         mediatek,mcm: false
diff --git a/Bindings/net/dsa/micrel,ks8995.yaml b/Bindings/net/dsa/micrel,ks8995.yaml
new file mode 100644 (file)
index 0000000..854808f
--- /dev/null
@@ -0,0 +1,135 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/dsa/micrel,ks8995.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Micrel KS8995 Family DSA Switches
+
+maintainers:
+  - Linus Walleij <linus.walleij@linaro.org>
+
+description:
+  The Micrel KS8995 DSA Switches are 100 Mbit switches that were produced in
+  the early-to-mid 2000s. The chip features a CPU port and four outgoing ports,
+  each with an internal PHY. The chip itself is managed over SPI, but all the
+  PHYs need to be accessed from an external MDIO channel.
+
+  Further, a fifth PHY is available and can be used separately from the switch
+  fabric, connected to an external MII interface name MII-P5. This is
+  unrelated from the CPU-facing port 5 which is used for DSA MII traffic.
+
+properties:
+  compatible:
+    enum:
+      - micrel,ks8995
+      - micrel,ksz8795
+      - micrel,ksz8864
+
+  reg:
+    maxItems: 1
+
+  reset-gpios:
+    description: GPIO to be used to reset the whole device
+    maxItems: 1
+
+allOf:
+  - $ref: dsa.yaml#/$defs/ethernet-ports
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    spi {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      ethernet-switch@0 {
+        compatible = "micrel,ks8995";
+        reg = <0>;
+        spi-max-frequency = <25000000>;
+
+        ethernet-ports {
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          ethernet-port@0 {
+            reg = <0>;
+            label = "lan1";
+          };
+          ethernet-port@1 {
+            reg = <1>;
+            label = "lan2";
+          };
+          ethernet-port@2 {
+            reg = <2>;
+            label = "lan3";
+          };
+          ethernet-port@3 {
+            reg = <3>;
+            label = "lan4";
+          };
+          ethernet-port@4 {
+            reg = <4>;
+            ethernet = <&mac2>;
+            phy-mode = "mii";
+            fixed-link {
+              speed = <100>;
+              full-duplex;
+            };
+          };
+        };
+      };
+    };
+
+    soc {
+      #address-cells = <1>;
+      #size-cells = <1>;
+
+      /* The WAN port connected on MII-P5 */
+      ethernet-port@1000 {
+        reg = <0x00001000 0x1000>;
+        label = "wan";
+        phy-mode = "mii";
+        phy-handle = <&phy5>;
+      };
+
+      mac2: ethernet-port@2000 {
+        reg = <0x00002000 0x1000>;
+        phy-mode = "mii";
+        fixed-link {
+          speed = <100>;
+          full-duplex;
+        };
+      };
+    };
+
+    mdio {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      /* LAN PHYs 1-4 accessible over external MDIO */
+      phy1: ethernet-phy@1 {
+        reg = <1>;
+      };
+      phy2: ethernet-phy@2 {
+        reg = <2>;
+      };
+      phy3: ethernet-phy@3 {
+        reg = <3>;
+      };
+      phy4: ethernet-phy@4 {
+        reg = <4>;
+      };
+      /* WAN PHY accessible over external MDIO */
+      phy5: ethernet-phy@5 {
+        reg = <5>;
+      };
+    };
index 62ca63e8a26fda0615cc254acca620f14f47cd10..eb4607460db7f32a4dffd416e44b61c2674f731e 100644 (file)
@@ -18,6 +18,7 @@ properties:
   # required and optional properties.
   compatible:
     enum:
+      - microchip,ksz8463
       - microchip,ksz8765
       - microchip,ksz8794
       - microchip,ksz8795
index 7cbf11bbe99ca6941ebc2155209020d0426aeba1..66b1cfbbfe221112286af4a14839ea039564113a 100644 (file)
@@ -39,6 +39,7 @@ properties:
       # MAC.
       - internal
       - mii
+      - mii-lite
       - gmii
       - sgmii
       - psgmii
index 55d6a8379025bf6b9edd1535a1e644ccf0e6dc8d..d14410018bcf6f57471088d3ca38baf046171686 100644 (file)
@@ -6,9 +6,6 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Faraday Technology FTGMAC100 gigabit ethernet controller
 
-allOf:
-  - $ref: ethernet-controller.yaml#
-
 maintainers:
   - Po-Yu Chuang <ratbert@faraday-tech.com>
 
@@ -35,6 +32,9 @@ properties:
       - description: MAC IP clock
       - description: RMII RCLK gate for AST2500/2600
 
+  resets:
+    maxItems: 1
+
   clock-names:
     minItems: 1
     items:
@@ -74,6 +74,21 @@ required:
   - reg
   - interrupts
 
+allOf:
+  - $ref: ethernet-controller.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - aspeed,ast2600-mac
+    then:
+      properties:
+        resets: true
+    else:
+      properties:
+        resets: false
+
 unevaluatedProperties: false
 
 examples:
diff --git a/Bindings/net/ieee802154/at86rf230.txt b/Bindings/net/ieee802154/at86rf230.txt
deleted file mode 100644 (file)
index 168f1be..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-* AT86RF230 IEEE 802.15.4 *
-
-Required properties:
-  - compatible:                should be "atmel,at86rf230", "atmel,at86rf231",
-                       "atmel,at86rf233" or "atmel,at86rf212"
-  - spi-max-frequency: maximal bus speed, should be set to 7500000 depends
-                       sync or async operation mode
-  - reg:               the chipselect index
-  - interrupts:                the interrupt generated by the device. Non high-level
-                       can occur deadlocks while handling isr.
-
-Optional properties:
-  - reset-gpio:                GPIO spec for the rstn pin
-  - sleep-gpio:                GPIO spec for the slp_tr pin
-  - xtal-trim:         u8 value for fine tuning the internal capacitance
-                       arrays of xtal pins: 0 = +0 pF, 0xf = +4.5 pF
-
-Example:
-
-       at86rf231@0 {
-               compatible = "atmel,at86rf231";
-               spi-max-frequency = <7500000>;
-               reg = <0>;
-               interrupts = <19 4>;
-               interrupt-parent = <&gpio3>;
-               xtal-trim = /bits/ 8 <0x06>;
-       };
diff --git a/Bindings/net/ieee802154/atmel,at86rf233.yaml b/Bindings/net/ieee802154/atmel,at86rf233.yaml
new file mode 100644 (file)
index 0000000..32cdc30
--- /dev/null
@@ -0,0 +1,66 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/ieee802154/atmel,at86rf233.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: AT86RF230 IEEE 802.15.4
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - atmel,at86rf212
+      - atmel,at86rf230
+      - atmel,at86rf231
+      - atmel,at86rf233
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  reset-gpio:
+    maxItems: 1
+
+  sleep-gpio:
+    maxItems: 1
+
+  spi-max-frequency:
+    maximum: 7500000
+
+  xtal-trim:
+    $ref: /schemas/types.yaml#/definitions/uint8
+    maximum: 0xf
+    description: |
+      Fine tuning the internal capacitance arrays of xtal pins:
+        0 = +0 pF, 0xf = +4.5 pF
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        zigbee@0 {
+            compatible = "atmel,at86rf231";
+            reg = <0>;
+            spi-max-frequency = <7500000>;
+            interrupts = <19 4>;
+            interrupt-parent = <&gpio3>;
+            xtal-trim = /bits/ 8 <0x06>;
+        };
+    };
index 4fdc5328826cf178968a2208aaabc1e05b3a2b55..8689de1aaea15f032ee0b6b30858385a910373eb 100644 (file)
@@ -47,6 +47,8 @@ properties:
 
   phy-handle: true
 
+  fixed-link: true
+
   intel,npe-handle:
     $ref: /schemas/types.yaml#/definitions/phandle-array
     items:
diff --git a/Bindings/net/lpc-eth.txt b/Bindings/net/lpc-eth.txt
deleted file mode 100644 (file)
index cfe0e59..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-* NXP LPC32xx SoC Ethernet Controller
-
-Required properties:
-- compatible: Should be "nxp,lpc-eth"
-- reg: Address and length of the register set for the device
-- interrupts: Should contain ethernet controller interrupt
-
-Optional properties:
-- phy-mode: See ethernet.txt file in the same directory. If the property is
-  absent, "rmii" is assumed.
-- use-iram: Use LPC32xx internal SRAM (IRAM) for DMA buffering
-
-Optional subnodes:
-- mdio : specifies the mdio bus, used as a container for phy nodes according to
-  phy.txt in the same directory
-
-
-Example:
-
-       mac: ethernet@31060000 {
-               compatible = "nxp,lpc-eth";
-               reg = <0x31060000 0x1000>;
-               interrupt-parent = <&mic>;
-               interrupts = <29 0>;
-
-               phy-mode = "rmii";
-               use-iram;
-       };
diff --git a/Bindings/net/marvell,armada-370-neta.yaml b/Bindings/net/marvell,armada-370-neta.yaml
new file mode 100644 (file)
index 0000000..8814977
--- /dev/null
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/marvell,armada-370-neta.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada 370/XP/3700/AC5 Ethernet Controller (NETA)
+
+maintainers:
+  - Marcin Wojtas <marcin.s.wojtas@gmail.com>
+
+allOf:
+  - $ref: /schemas/net/ethernet-controller.yaml#
+
+properties:
+  compatible:
+    enum:
+      - marvell,armada-370-neta
+      - marvell,armada-xp-neta
+      - marvell,armada-3700-neta
+      - marvell,armada-ac5-neta
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: core
+      - const: bus
+
+  phys:
+    maxItems: 1
+
+  tx-csum-limit:
+    description: Maximum MTU in bytes for Tx checksum offload; default is 1600 for
+      armada-370-neta and 9800 for others.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  buffer-manager:
+    description: Phandle to hardware buffer manager.
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+  bm,pool-long:
+    description: Pool ID for packets larger than the short threshold.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  bm,pool-short:
+    description: Pool ID for packets smaller than the long threshold.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    ethernet@70000 {
+        compatible = "marvell,armada-370-neta";
+        reg = <0x70000 0x2500>;
+        interrupts = <8>;
+        clocks = <&gate_clk 4>;
+        tx-csum-limit = <9800>;
+        phy = <&phy0>;
+        phy-mode = "rgmii-id";
+        buffer-manager = <&bm>;
+        bm,pool-long = <0>;
+        bm,pool-short = <1>;
+    };
diff --git a/Bindings/net/marvell,armada-380-neta-bm.yaml b/Bindings/net/marvell,armada-380-neta-bm.yaml
new file mode 100644 (file)
index 0000000..9392e71
--- /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/net/marvell,armada-380-neta-bm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada 380/XP Buffer Manager (BM)
+
+maintainers:
+  - Marcin Wojtas <marcin.s.wojtas@gmail.com>
+
+description:
+  In order to see how to hook the BM to a given ethernet port, please refer to
+  Documentation/devicetree/bindings/net/marvell,armada-370-neta.yaml.
+
+properties:
+  compatible:
+    const: marvell,armada-380-neta-bm
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  internal-mem:
+    description: Phandle to internal SRAM region
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+patternProperties:
+  "^pool[0-3],capacity$":
+    description:
+      size of external buffer pointers' ring maintained in DRAM for pool 0-3
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 128
+    maximum: 16352
+
+  "^pool[0-3],pkt-size$":
+    description:
+      maximum packet size for a short buffer pool entry (pool 0-3)
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - internal-mem
+
+additionalProperties: false
+
+examples:
+  - |
+    bm@c8000 {
+        compatible = "marvell,armada-380-neta-bm";
+        reg = <0xc8000 0xac>;
+        clocks = <&gateclk 13>;
+        internal-mem = <&bm_bppi>;
+        pool2,capacity = <4096>;
+        pool1,pkt-size = <512>;
+    };
diff --git a/Bindings/net/marvell-armada-370-neta.txt b/Bindings/net/marvell-armada-370-neta.txt
deleted file mode 100644 (file)
index 2bf3157..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-* Marvell Armada 370 / Armada XP / Armada 3700 Ethernet Controller (NETA)
-
-Required properties:
-- compatible: could be one of the following:
-       "marvell,armada-370-neta"
-       "marvell,armada-xp-neta"
-       "marvell,armada-3700-neta"
-       "marvell,armada-ac5-neta"
-- reg: address and length of the register set for the device.
-- interrupts: interrupt for the device
-- phy: See ethernet.txt file in the same directory.
-- phy-mode: See ethernet.txt file in the same directory
-- clocks: List of clocks for this device. At least one clock is
-  mandatory for the core clock. If several clocks are given, then the
-  clock-names property must be used to identify them.
-
-Optional properties:
-- tx-csum-limit: maximum mtu supported by port that allow TX checksum.
-  Value is presented in bytes. If not used, by default 1600B is set for
-  "marvell,armada-370-neta" and 9800B for others.
-- clock-names: List of names corresponding to clocks property; shall be
-  "core" for core clock and "bus" for the optional bus clock.
-- phys: comphy for the ethernet port, see ../phy/phy-bindings.txt
-
-Optional properties (valid only for Armada XP/38x):
-
-- buffer-manager: a phandle to a buffer manager node. Please refer to
-  Documentation/devicetree/bindings/net/marvell-neta-bm.txt
-- bm,pool-long: ID of a pool, that will accept all packets of a size
-  higher than 'short' pool's threshold (if set) and up to MTU value.
-  Obligatory, when the port is supposed to use hardware
-  buffer management.
-- bm,pool-short: ID of a pool, that will be used for accepting
-  packets of a size lower than given threshold. If not set, the port
-  will use a single 'long' pool for all packets, as defined above.
-
-Example:
-
-ethernet@70000 {
-       compatible = "marvell,armada-370-neta";
-       reg = <0x70000 0x2500>;
-       interrupts = <8>;
-       clocks = <&gate_clk 4>;
-       tx-csum-limit = <9800>
-       phy = <&phy0>;
-       phy-mode = "rgmii-id";
-       buffer-manager = <&bm>;
-       bm,pool-long = <0>;
-       bm,pool-short = <1>;
-};
diff --git a/Bindings/net/marvell-neta-bm.txt b/Bindings/net/marvell-neta-bm.txt
deleted file mode 100644 (file)
index 07b3105..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-* Marvell Armada 380/XP Buffer Manager driver (BM)
-
-Required properties:
-
-- compatible: should be "marvell,armada-380-neta-bm".
-- reg: address and length of the register set for the device.
-- clocks: a pointer to the reference clock for this device.
-- internal-mem: a phandle to BM internal SRAM definition.
-
-Optional properties (port):
-
-- pool<0 : 3>,capacity: size of external buffer pointers' ring maintained
-  in DRAM. Can be set for each pool (id 0 : 3) separately. The value has
-  to be chosen between 128 and 16352 and it also has to be aligned to 32.
-  Otherwise the driver would adjust a given number or choose default if
-  not set.
-- pool<0 : 3>,pkt-size: maximum size of a packet accepted by a given buffer
-  pointers' pool (id 0 : 3). It will be taken into consideration only when pool
-  type is 'short'. For 'long' ones it would be overridden by port's MTU.
-  If not set a driver will choose a default value.
-
-In order to see how to hook the BM to a given ethernet port, please
-refer to Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt.
-
-Example:
-
-- main node:
-
-bm: bm@c8000 {
-       compatible = "marvell,armada-380-neta-bm";
-       reg = <0xc8000 0xac>;
-       clocks = <&gateclk 13>;
-       internal-mem = <&bm_bppi>;
-       pool2,capacity = <4096>;
-       pool1,pkt-size = <512>;
-};
-
-- internal SRAM node:
-
-bm_bppi: bm-bppi {
-       compatible = "mmio-sram";
-       reg = <MBUS_ID(0x0c, 0x04) 0 0x100000>;
-       ranges = <0 MBUS_ID(0x0c, 0x04) 0 0x100000>;
-       #address-cells = <1>;
-       #size-cells = <1>;
-       clocks = <&gateclk 13>;
-};
index 9e02fd80af835f00d8eabf17fc6876e45dc24e61..b45f67f92e80dc592dab69e58ee05d131835b180 100644 (file)
@@ -40,7 +40,19 @@ properties:
 
   interrupts:
     minItems: 1
-    maxItems: 4
+    maxItems: 8
+
+  interrupt-names:
+    minItems: 1
+    items:
+      - const: fe0
+      - const: fe1
+      - const: fe2
+      - const: fe3
+      - const: pdma0
+      - const: pdma1
+      - const: pdma2
+      - const: pdma3
 
   power-domains:
     maxItems: 1
@@ -54,6 +66,10 @@ properties:
       - const: gmac
       - const: ppe
 
+  sram:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: phandle to mmio SRAM
+
   mediatek,ethsys:
     $ref: /schemas/types.yaml#/definitions/phandle
     description:
@@ -135,6 +151,10 @@ allOf:
           minItems: 3
           maxItems: 3
 
+        interrupt-names:
+          minItems: 3
+          maxItems: 3
+
         clocks:
           minItems: 4
           maxItems: 4
@@ -146,6 +166,8 @@ allOf:
             - const: gp1
             - const: gp2
 
+        sram: false
+
         mediatek,infracfg: false
 
         mediatek,wed: false
@@ -166,6 +188,9 @@ allOf:
         interrupts:
           maxItems: 1
 
+        interrupt-names:
+          maxItems: 1
+
         clocks:
           minItems: 2
           maxItems: 2
@@ -175,6 +200,8 @@ allOf:
             - const: ethif
             - const: fe
 
+        sram: false
+
         mediatek,infracfg: false
 
         mediatek,wed: false
@@ -192,6 +219,10 @@ allOf:
           minItems: 3
           maxItems: 3
 
+        interrupt-names:
+          minItems: 3
+          maxItems: 3
+
         clocks:
           minItems: 11
           maxItems: 11
@@ -210,6 +241,8 @@ allOf:
             - const: sgmii_ck
             - const: eth2pll
 
+        sram: false
+
         mediatek,infracfg: false
 
         mediatek,sgmiisys:
@@ -232,6 +265,10 @@ allOf:
           minItems: 3
           maxItems: 3
 
+        interrupt-names:
+          minItems: 3
+          maxItems: 3
+
         clocks:
           minItems: 17
           maxItems: 17
@@ -256,6 +293,8 @@ allOf:
             - const: sgmii_ck
             - const: eth2pll
 
+        sram: false
+
         mediatek,sgmiisys:
           minItems: 2
           maxItems: 2
@@ -272,7 +311,10 @@ allOf:
     then:
       properties:
         interrupts:
-          minItems: 4
+          minItems: 8
+
+        interrupt-names:
+          minItems: 8
 
         clocks:
           minItems: 15
@@ -310,7 +352,10 @@ allOf:
     then:
       properties:
         interrupts:
-          minItems: 4
+          minItems: 8
+
+        interrupt-names:
+          minItems: 8
 
         clocks:
           minItems: 15
@@ -348,7 +393,10 @@ allOf:
     then:
       properties:
         interrupts:
-          minItems: 4
+          minItems: 8
+
+        interrupt-names:
+          minItems: 8
 
         clocks:
           minItems: 24
@@ -382,7 +430,7 @@ allOf:
             - const: xgp3
 
 patternProperties:
-  "^mac@[0-1]$":
+  "^mac@[0-2]$":
     type: object
     unevaluatedProperties: false
     allOf:
@@ -507,7 +555,11 @@ examples:
         interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
                      <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
                      <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
-                     <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
+                     <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
         clocks = <&ethsys CLK_ETH_FE_EN>,
                  <&ethsys CLK_ETH_GP2_EN>,
                  <&ethsys CLK_ETH_GP1_EN>,
diff --git a/Bindings/net/micrel-ks8995.txt b/Bindings/net/micrel-ks8995.txt
deleted file mode 100644 (file)
index 281bc24..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Micrel KS8995 SPI controlled Ethernet Switch families
-
-Required properties (according to spi-bus.txt):
-- compatible: either "micrel,ks8995", "micrel,ksz8864" or "micrel,ksz8795"
-
-Optional properties:
-- reset-gpios : phandle of gpio that will be used to reset chip during probe
-
-Example:
-
-spi-master {
-       ...
-       switch@0 {
-               compatible = "micrel,ksz8795";
-
-               reg = <0>;
-               spi-max-frequency = <50000000>;
-               reset-gpios = <&gpio0 46 GPIO_ACTIVE_LOW>;
-       };
-};
index d0332eb76ad263063569f81fa68ce068195f8ef0..5f49bd9ac5e61b298c793516157725770dd97129 100644 (file)
@@ -55,6 +55,12 @@ properties:
     description: |
       Regulator for supply voltage to VIN pin
 
+  ti,rx-gain-reduction-db:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: |
+      Specify an RX gain reduction to reduce antenna sensitivity with 5dB per
+      increment, with a maximum of 15dB. Supported values: [0, 5, 10, 15].
+
 required:
   - compatible
   - interrupts
@@ -95,5 +101,6 @@ examples:
             irq-status-read-quirk;
             en2-rf-quirk;
             clock-frequency = <27120000>;
+            ti,rx-gain-reduction-db = <15>;
         };
     };
diff --git a/Bindings/net/nxp,lpc-eth.yaml b/Bindings/net/nxp,lpc-eth.yaml
new file mode 100644 (file)
index 0000000..dfe9446
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/nxp,lpc-eth.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC32xx SoC Ethernet Controller
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc-eth
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  use-iram:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description: Use LPC32xx internal SRAM (IRAM) for DMA buffering
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+allOf:
+  - $ref: ethernet-controller.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    ethernet@31060000 {
+        compatible = "nxp,lpc-eth";
+        reg = <0x31060000 0x1000>;
+        interrupt-parent = <&mic>;
+        interrupts = <29 0>;
+        phy-mode = "rmii";
+        use-iram;
+    };
diff --git a/Bindings/net/nxp,lpc1850-dwmac.txt b/Bindings/net/nxp,lpc1850-dwmac.txt
deleted file mode 100644 (file)
index 7edba12..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-* NXP LPC1850 GMAC ethernet controller
-
-This device is a platform glue layer for stmmac.
-Please see stmmac.txt for the other unchanged properties.
-
-Required properties:
- - compatible:  Should contain "nxp,lpc1850-dwmac"
-
-Examples:
-
-mac: ethernet@40010000 {
-       compatible = "nxp,lpc1850-dwmac", "snps,dwmac-3.611", "snps,dwmac";
-       reg = <0x40010000 0x2000>;
-       interrupts = <5>;
-       interrupt-names = "macirq";
-       clocks = <&ccu1 CLK_CPU_ETHERNET>;
-       clock-names = "stmmaceth";
-       resets = <&rgu 22>;
-       reset-names = "stmmaceth";
-}
diff --git a/Bindings/net/nxp,lpc1850-dwmac.yaml b/Bindings/net/nxp,lpc1850-dwmac.yaml
new file mode 100644 (file)
index 0000000..05acd9b
--- /dev/null
@@ -0,0 +1,85 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/nxp,lpc1850-dwmac.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC1850 GMAC ethernet controller
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+# We need a select here so we don't match all nodes with 'snps,dwmac'
+select:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - nxp,lpc1850-dwmac
+  required:
+    - compatible
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - nxp,lpc1850-dwmac
+      - const: snps,dwmac-3.611
+      - const: snps,dwmac
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: stmmaceth
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    items:
+      - const: macirq
+
+  resets:
+    maxItems: 1
+
+  reset-names:
+    items:
+      - const: stmmaceth
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+  - interrupt-names
+
+allOf:
+  - $ref: snps,dwmac.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc18xx-ccu.h>
+
+    ethernet@40010000 {
+        compatible = "nxp,lpc1850-dwmac", "snps,dwmac-3.611", "snps,dwmac";
+        reg = <0x40010000 0x2000>;
+        interrupts = <5>;
+        interrupt-names = "macirq";
+        clocks = <&ccu1 CLK_CPU_ETHERNET>;
+        clock-names = "stmmaceth";
+        resets = <&rgu 22>;
+        reset-names = "stmmaceth";
+        rx-fifo-depth = <256>;
+        tx-fifo-depth = <256>;
+        snps,pbl = <4>;
+        snps,force_thresh_dma_mode;
+        phy-mode = "rgmii-id";
+    };
index fd4244fceced9f80d8f6682b09d977439df877e6..ca61cc37a79028210d3d45783c4e9c023658e67b 100644 (file)
@@ -22,6 +22,12 @@ properties:
   reg:
     maxItems: 1
 
+  vdd-supply:
+    description: Regulator that provides 3.3V VDD power supply.
+
+  vdda-supply:
+    description: Regulator that provides 3.3V VDDA power supply.
+
   managers:
     type: object
     additionalProperties: false
@@ -68,6 +74,15 @@ properties:
           "#size-cells":
             const: 0
 
+          vmain-supply:
+            description: Regulator that provides 44-57V VMAIN power supply.
+
+          vaux5-supply:
+            description: Regulator that provides 5V VAUX5 power supply.
+
+          vaux3p3-supply:
+            description: Regulator that provides 3.3V VAUX3P3 power supply.
+
         patternProperties:
           '^port@[0-7]$':
             type: object
@@ -106,10 +121,11 @@ examples:
           #address-cells = <1>;
           #size-cells = <0>;
 
-          manager@0 {
+          manager0: manager@0 {
             reg = <0>;
             #address-cells = <1>;
             #size-cells = <0>;
+            vmain-supply = <&pse1_supply>;
 
             phys0: port@0 {
               reg = <0>;
@@ -161,7 +177,7 @@ examples:
             pairset-names = "alternative-a", "alternative-b";
             pairsets = <&phys0>, <&phys1>;
             polarity-supported = "MDI", "S";
-            vpwr-supply = <&vpwr1>;
+            vpwr-supply = <&manager0>;
           };
           pse_pi1: pse-pi@1 {
             reg = <1>;
@@ -169,7 +185,7 @@ examples:
             pairset-names = "alternative-a";
             pairsets = <&phys2>;
             polarity-supported = "MDI";
-            vpwr-supply = <&vpwr2>;
+            vpwr-supply = <&manager0>;
           };
         };
       };
index d08abcb012113a013d531c0607eb5156a2baad1f..bb1ee33986555059779f155b46b982256454649d 100644 (file)
@@ -20,6 +20,9 @@ properties:
   reg:
     maxItems: 1
 
+  interrupts:
+    maxItems: 1
+
   '#pse-cells':
     const: 1
 
@@ -27,10 +30,12 @@ properties:
     maxItems: 1
 
   channels:
-    description: each set of 8 ports can be assigned to one physical
-      channels or two for PoE4. This parameter describes the configuration
-      of the ports conversion matrix that establishes relationship between
-      the logical ports and the physical channels.
+    description: |
+      Defines the 8 physical delivery channels on the controller that can
+      be referenced by PSE PIs through their "pairsets" property. The actual
+      port matrix mapping is created when PSE PIs reference these channels in
+      their pairsets. For 4-pair operation, two channels from the same group
+      (0-3 or 4-7) must be referenced by a single PSE PI.
     type: object
     additionalProperties: false
 
@@ -62,9 +67,12 @@ unevaluatedProperties: false
 required:
   - compatible
   - reg
+  - interrupts
 
 examples:
   - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
     i2c {
       #address-cells = <1>;
       #size-cells = <0>;
@@ -72,6 +80,8 @@ examples:
       ethernet-pse@20 {
         compatible = "ti,tps23881";
         reg = <0x20>;
+        interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-parent = <&gpiog>;
 
         channels {
           #address-cells = <1>;
index 3acd09f0da863137f8a05e435a1fd28a536c2acd..7ae5110e7aa2cc97498a0ec46b67d8ed8440f3f2 100644 (file)
@@ -16,8 +16,37 @@ description: |
 
 allOf:
   - $ref: ethernet-phy.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - ethernet-phy-id004d.d0c0
+
+    then:
+      properties:
+        reg:
+          const: 7  # This PHY is always at MDIO address 7 in the IPQ5018 SoC
+
+        resets:
+          items:
+            - description:
+                GE PHY MISC reset which triggers a reset across MDC, DSP, RX, and TX lines.
+
+        qcom,dac-preset-short-cable:
+          description:
+            Set if this phy is connected to another phy to adjust the values for
+            MDAC and EDAC to adjust amplitude, bias current settings, and error
+            detection and correction algorithm to accommodate for short cable length.
+            If not set, DAC values are not modified and it is assumed the MDI output pins
+            of this PHY are directly connected to an RJ45 connector.
+          type: boolean
 
 properties:
+  compatible:
+    enum:
+      - ethernet-phy-id004d.d0c0
+
   qca,clk-out-frequency:
     description: Clock output frequency in Hertz.
     $ref: /schemas/types.yaml#/definitions/uint32
@@ -132,3 +161,17 @@ examples:
             };
         };
     };
+  - |
+    #include <dt-bindings/reset/qcom,gcc-ipq5018.h>
+
+    mdio {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        ge_phy: ethernet-phy@7 {
+            compatible = "ethernet-phy-id004d.d0c0";
+            reg = <7>;
+
+            resets = <&gcc GCC_GEPHY_MISC_ARES>;
+        };
+    };
diff --git a/Bindings/net/qca,qca7000.txt b/Bindings/net/qca,qca7000.txt
deleted file mode 100644 (file)
index 8f5ae0b..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-* Qualcomm QCA7000
-
-The QCA7000 is a serial-to-powerline bridge with a host interface which could
-be configured either as SPI or UART slave. This configuration is done by
-the QCA7000 firmware.
-
-(a) Ethernet over SPI
-
-In order to use the QCA7000 as SPI device it must be defined as a child of a
-SPI master in the device tree.
-
-Required properties:
-- compatible       : Should be "qca,qca7000"
-- reg              : Should specify the SPI chip select
-- interrupts       : The first cell should specify the index of the source
-                     interrupt and the second cell should specify the trigger
-                     type as rising edge
-- spi-cpha         : Must be set
-- spi-cpol         : Must be set
-
-Optional properties:
-- spi-max-frequency : Maximum frequency of the SPI bus the chip can operate at.
-                     Numbers smaller than 1000000 or greater than 16000000
-                     are invalid. Missing the property will set the SPI
-                     frequency to 8000000 Hertz.
-- qca,legacy-mode   : Set the SPI data transfer of the QCA7000 to legacy mode.
-                     In this mode the SPI master must toggle the chip select
-                     between each data word. In burst mode these gaps aren't
-                     necessary, which is faster. This setting depends on how
-                     the QCA7000 is setup via GPIO pin strapping. If the
-                     property is missing the driver defaults to burst mode.
-
-The MAC address will be determined using the optional properties
-defined in ethernet.txt.
-
-SPI Example:
-
-/* Freescale i.MX28 SPI master*/
-ssp2: spi@80014000 {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       compatible = "fsl,imx28-spi";
-       pinctrl-names = "default";
-       pinctrl-0 = <&spi2_pins_a>;
-
-       qca7000: ethernet@0 {
-               compatible = "qca,qca7000";
-               reg = <0x0>;
-               interrupt-parent = <&gpio3>;      /* GPIO Bank 3 */
-               interrupts = <25 0x1>;            /* Index: 25, rising edge */
-               spi-cpha;                         /* SPI mode: CPHA=1 */
-               spi-cpol;                         /* SPI mode: CPOL=1 */
-               spi-max-frequency = <8000000>;    /* freq: 8 MHz */
-               local-mac-address = [ A0 B0 C0 D0 E0 F0 ];
-       };
-};
-
-(b) Ethernet over UART
-
-In order to use the QCA7000 as UART slave it must be defined as a child of a
-UART master in the device tree. It is possible to preconfigure the UART
-settings of the QCA7000 firmware, but it's not possible to change them during
-runtime.
-
-Required properties:
-- compatible        : Should be "qca,qca7000"
-
-Optional properties:
-- local-mac-address : see ./ethernet.txt
-- current-speed     : current baud rate of QCA7000 which defaults to 115200
-                     if absent, see also ../serial/serial.yaml
-
-UART Example:
-
-/* Freescale i.MX28 UART */
-auart0: serial@8006a000 {
-       compatible = "fsl,imx28-auart", "fsl,imx23-auart";
-       reg = <0x8006a000 0x2000>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&auart0_2pins_a>;
-
-       qca7000: ethernet {
-               compatible = "qca,qca7000";
-               local-mac-address = [ A0 B0 C0 D0 E0 F0 ];
-               current-speed = <38400>;
-       };
-};
diff --git a/Bindings/net/qca,qca7000.yaml b/Bindings/net/qca,qca7000.yaml
new file mode 100644 (file)
index 0000000..b503c3a
--- /dev/null
@@ -0,0 +1,109 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/qca,qca7000.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm QCA7000
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+description: |
+  The QCA7000 is a serial-to-powerline bridge with a host interface which could
+  be configured either as SPI or UART slave. This configuration is done by
+  the QCA7000 firmware.
+
+  (a) Ethernet over SPI
+
+  In order to use the QCA7000 as SPI device it must be defined as a child of a
+  SPI master in the device tree.
+
+  (b) Ethernet over UART
+
+  In order to use the QCA7000 as UART slave it must be defined as a child of a
+  UART master in the device tree. It is possible to preconfigure the UART
+  settings of the QCA7000 firmware, but it's not possible to change them during
+  runtime
+
+properties:
+  compatible:
+    const: qca,qca7000
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  qca,legacy-mode:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      Set the SPI data transfer of the QCA7000 to legacy mode.
+      In this mode the SPI master must toggle the chip select
+      between each data word. In burst mode these gaps aren't
+      necessary, which is faster. This setting depends on how
+      the QCA7000 is setup via GPIO pin strapping. If the
+      property is missing the driver defaults to burst mode.
+
+allOf:
+  - $ref: ethernet-controller.yaml#
+
+  - if:
+      required:
+        - reg
+
+    then:
+      properties:
+        spi-cpha: true
+
+        spi-cpol: true
+
+        spi-max-frequency:
+          default: 8000000
+          maximum: 16000000
+          minimum: 1000000
+
+      allOf:
+        - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+    else:
+      properties:
+        current-speed:
+          default: 115200
+
+        qca,legacy-mode: false
+
+      allOf:
+        - $ref: /schemas/serial/serial-peripheral-props.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        ethernet@0 {
+            compatible = "qca,qca7000";
+            reg = <0x0>;
+            interrupt-parent = <&gpio3>;
+            interrupts = <25 IRQ_TYPE_EDGE_RISING>;
+            spi-cpha;
+            spi-cpol;
+            spi-max-frequency = <8000000>;
+            local-mac-address = [ a0 b0 c0 d0 e0 f0 ];
+        };
+    };
+
+  - |
+    serial {
+        ethernet {
+            compatible = "qca,qca7000";
+            local-mac-address = [ a0 b0 c0 d0 e0 f0 ];
+            current-speed = <38400>;
+        };
+    };
similarity index 97%
rename from Bindings/net/renesas,r9a09g057-gbeth.yaml
rename to Bindings/net/renesas,rzv2h-gbeth.yaml
index c498a9999289f97f1c4f3be01c0a3fc7d29efbf4..23e39bcea96b31dbbf6f77cf9f42d2debf531198 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/net/renesas,r9a09g057-gbeth.yaml#
+$id: http://devicetree.org/schemas/net/renesas,rzv2h-gbeth.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: GBETH glue layer for Renesas RZ/V2H(P) (and similar SoCs)
@@ -14,6 +14,7 @@ select:
     compatible:
       contains:
         enum:
+          - renesas,r9a09g047-gbeth
           - renesas,r9a09g056-gbeth
           - renesas,r9a09g057-gbeth
           - renesas,rzv2h-gbeth
@@ -24,6 +25,7 @@ properties:
   compatible:
     items:
       - enum:
+          - renesas,r9a09g047-gbeth # RZ/G3E
           - renesas,r9a09g056-gbeth # RZ/V2N
           - renesas,r9a09g057-gbeth # RZ/V2H(P)
       - const: renesas,rzv2h-gbeth
index 90b79283e228b0372c613ef56395da7847513e2d..4e3cbaa062290a6e8e5e60d0d01b0b39485c5478 100644 (file)
@@ -30,6 +30,7 @@ select:
           - snps,dwmac-4.00
           - snps,dwmac-4.10a
           - snps,dwmac-4.20a
+          - snps,dwmac-5.00a
           - snps,dwmac-5.10a
           - snps,dwmac-5.20
           - snps,dwmac-5.30a
@@ -98,11 +99,13 @@ properties:
         - snps,dwmac-4.00
         - snps,dwmac-4.10a
         - snps,dwmac-4.20a
+        - snps,dwmac-5.00a
         - snps,dwmac-5.10a
         - snps,dwmac-5.20
         - snps,dwmac-5.30a
         - snps,dwxgmac
         - snps,dwxgmac-2.10
+        - sophgo,sg2042-dwmac
         - sophgo,sg2044-dwmac
         - starfive,jh7100-dwmac
         - starfive,jh7110-dwmac
@@ -641,6 +644,7 @@ allOf:
                 - snps,dwmac-4.00
                 - snps,dwmac-4.10a
                 - snps,dwmac-4.20a
+                - snps,dwmac-5.00a
                 - snps,dwmac-5.10a
                 - snps,dwmac-5.20
                 - snps,dwmac-5.30a
diff --git a/Bindings/net/socfpga-dwmac.txt b/Bindings/net/socfpga-dwmac.txt
deleted file mode 100644 (file)
index 612a8e8..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-Altera SOCFPGA SoC DWMAC controller
-
-This is a variant of the dwmac/stmmac driver an inherits all descriptions
-present in Documentation/devicetree/bindings/net/stmmac.txt.
-
-The device node has additional properties:
-
-Required properties:
- - compatible  : For Cyclone5/Arria5 SoCs it should contain
-                 "altr,socfpga-stmmac". For Arria10/Agilex/Stratix10 SoCs
-                 "altr,socfpga-stmmac-a10-s10".
-                 Along with "snps,dwmac" and any applicable more detailed
-                 designware version numbers documented in stmmac.txt
- - altr,sysmgr-syscon : Should be the phandle to the system manager node that
-   encompasses the glue register, the register offset, and the register shift.
-   On Cyclone5/Arria5, the register shift represents the PHY mode bits, while
-   on the Arria10/Stratix10/Agilex platforms, the register shift represents
-   bit for each emac to enable/disable signals from the FPGA fabric to the
-   EMAC modules.
- - altr,f2h_ptp_ref_clk use f2h_ptp_ref_clk instead of default eosc1 clock
-   for ptp ref clk. This affects all emacs as the clock is common.
-
-Optional properties:
-altr,emac-splitter: Should be the phandle to the emac splitter soft IP node if
-               DWMAC controller is connected emac splitter.
-phy-mode: The phy mode the ethernet operates in
-altr,sgmii-to-sgmii-converter: phandle to the TSE SGMII converter
-
-This device node has additional phandle dependency, the sgmii converter:
-
-Required properties:
- - compatible  : Should be altr,gmii-to-sgmii-2.0
- - reg-names   : Should be "eth_tse_control_port"
-
-Example:
-
-gmii_to_sgmii_converter: phy@100000240 {
-       compatible = "altr,gmii-to-sgmii-2.0";
-       reg = <0x00000001 0x00000240 0x00000008>,
-               <0x00000001 0x00000200 0x00000040>;
-       reg-names = "eth_tse_control_port";
-       clocks = <&sgmii_1_clk_0 &emac1 1 &sgmii_clk_125 &sgmii_clk_125>;
-       clock-names = "tse_pcs_ref_clk_clock_connection", "tse_rx_cdr_refclk";
-};
-
-gmac0: ethernet@ff700000 {
-       compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac";
-       altr,sysmgr-syscon = <&sysmgr 0x60 0>;
-       reg = <0xff700000 0x2000>;
-       interrupts = <0 115 4>;
-       interrupt-names = "macirq";
-       mac-address = [00 00 00 00 00 00];/* Filled in by U-Boot */
-       clocks = <&emac_0_clk>;
-       clock-names = "stmmaceth";
-       phy-mode = "sgmii";
-       altr,gmii-to-sgmii-converter = <&gmii_to_sgmii_converter>;
-};
diff --git a/Bindings/net/sophgo,cv1800b-dwmac.yaml b/Bindings/net/sophgo,cv1800b-dwmac.yaml
new file mode 100644 (file)
index 0000000..b89456f
--- /dev/null
@@ -0,0 +1,114 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/sophgo,cv1800b-dwmac.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo CV1800B DWMAC glue layer
+
+maintainers:
+  - Inochi Amaoto <inochiama@gmail.com>
+
+select:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - sophgo,cv1800b-dwmac
+  required:
+    - compatible
+
+properties:
+  compatible:
+    items:
+      - const: sophgo,cv1800b-dwmac
+      - const: snps,dwmac-3.70a
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: GMAC main clock
+      - description: PTP clock
+
+  clock-names:
+    items:
+      - const: stmmaceth
+      - const: ptp_ref
+
+  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@4070000 {
+      compatible = "sophgo,cv1800b-dwmac", "snps,dwmac-3.70a";
+      reg = <0x04070000 0x10000>;
+      clocks = <&clk 35>, <&clk 36>;
+      clock-names = "stmmaceth", "ptp_ref";
+      interrupts = <31 IRQ_TYPE_LEVEL_HIGH>;
+      interrupt-names = "macirq";
+      phy-handle = <&internal_ephy>;
+      phy-mode = "internal";
+      resets = <&rst 12>;
+      reset-names = "stmmaceth";
+      rx-fifo-depth = <8192>;
+      tx-fifo-depth = <8192>;
+      snps,multicast-filter-bins = <0>;
+      snps,perfect-filter-entries = <1>;
+      snps,aal;
+      snps,txpbl = <8>;
+      snps,rxpbl = <8>;
+      snps,mtl-rx-config = <&gmac0_mtl_rx_setup>;
+      snps,mtl-tx-config = <&gmac0_mtl_tx_setup>;
+      snps,axi-config = <&gmac0_stmmac_axi_setup>;
+
+      mdio {
+        compatible = "snps,dwmac-mdio";
+        #address-cells = <1>;
+        #size-cells = <0>;
+      };
+
+      gmac0_mtl_rx_setup: rx-queues-config {
+        snps,rx-queues-to-use = <1>;
+        queue0 {};
+      };
+
+      gmac0_mtl_tx_setup: tx-queues-config {
+        snps,tx-queues-to-use = <1>;
+        queue0 {};
+      };
+
+      gmac0_stmmac_axi_setup: stmmac-axi-config {
+        snps,blen = <16 8 4 0 0 0 0>;
+        snps,rd_osr_lmt = <2>;
+        snps,wr_osr_lmt = <1>;
+      };
+    };
index 8afbd9ebd73f69934c14a20af73822d0ab7e3a1c..ce21979a2d9a438adb1e59d1a479bc6c1961bdca 100644 (file)
@@ -15,14 +15,19 @@ select:
       contains:
         enum:
           - sophgo,sg2044-dwmac
+          - sophgo,sg2042-dwmac
   required:
     - compatible
 
 properties:
   compatible:
-    items:
-      - const: sophgo,sg2044-dwmac
-      - const: snps,dwmac-5.30a
+    oneOf:
+      - items:
+          - const: sophgo,sg2042-dwmac
+          - const: snps,dwmac-5.00a
+      - items:
+          - const: sophgo,sg2044-dwmac
+          - const: snps,dwmac-5.30a
 
   reg:
     maxItems: 1
index 6d9de33037622692066e3dfece9f619e137c9ebd..b3492a9aa4effa73fadf92a63a76ba8bb65a8769 100644 (file)
@@ -62,11 +62,13 @@ properties:
     items:
       - description: GMAC main clock
       - description: Peripheral registers interface clock
+      - description: APB glue registers interface clock
 
   clock-names:
     items:
       - const: stmmaceth
       - const: pclk
+      - const: apb
 
   interrupts:
     items:
@@ -88,8 +90,8 @@ examples:
         compatible = "thead,th1520-gmac", "snps,dwmac-3.70a";
         reg = <0xe7070000 0x2000>, <0xec003000 0x1000>;
         reg-names = "dwmac", "apb";
-        clocks = <&clk 1>, <&clk 2>;
-        clock-names = "stmmaceth", "pclk";
+        clocks = <&clk 1>, <&clk 2>, <&clk 3>;
+        clock-names = "stmmaceth", "pclk", "apb";
         interrupts = <66>;
         interrupt-names = "macirq";
         phy-mode = "rgmii-id";
index 7b3d948f187dff44980e9ecfc2ffcf57c1ab8663..a959c1d7e643af8f1a9942fc85e9d995240b04f4 100644 (file)
@@ -284,7 +284,7 @@ examples:
                     ti,syscon-efuse = <&mcu_conf 0x200>;
                     phys = <&phy_gmii_sel 1>;
 
-                    phy-mode = "rgmii-rxid";
+                    phy-mode = "rgmii-id";
                     phy-handle = <&phy0>;
                 };
             };
index 0e5412cff2bc6714693b92c5fb69dba2410cdf0f..d16ca8e0a25df87c3ba929379c4c93c8649fa90f 100644 (file)
@@ -12,7 +12,7 @@ maintainers:
 description: |
   This node provides properties for configuring the ath9k wireless device.
   The node is expected to be specified as a child node of the PCI controller
-  to which the wireless chip is connected.
+  or AHB bus to which the wireless chip is connected.
 
 allOf:
   - $ref: ieee80211.yaml#
@@ -35,6 +35,12 @@ properties:
       - pci168c,0034  # AR9462
       - pci168c,0036  # AR9565
       - pci168c,0037  # AR1111 and AR9485
+      - qca,ar9130-wifi
+      - qca,ar9330-wifi
+      - qca,ar9340-wifi
+      - qca,qca9530-wifi
+      - qca,qca9550-wifi
+      - qca,qca9560-wifi
 
   reg:
     maxItems: 1
@@ -88,3 +94,13 @@ examples:
         nvmem-cell-names = "mac-address", "calibration";
       };
     };
+  - |
+    ahb {
+      #address-cells = <1>;
+      #size-cells = <1>;
+      wifi@180c0000 {
+        compatible = "qca,ar9130-wifi";
+        reg = <0x180c0000 0x230000>;
+        interrupts = <2>;
+      };
+    };
index 653b319fee880ef0944d8e35c545890b60611756..e34d42a30192b80311a4c6bb41bd3c8ffc66375f 100644 (file)
@@ -35,6 +35,12 @@ properties:
       string to uniquely identify variant of the calibration data for designs
       with colliding bus and device ids
 
+  firmware-name:
+    maxItems: 1
+    description:
+      If present, a board or platform specific string used to lookup
+      usecase-specific firmware files for the device.
+
   vddrfacmn-supply:
     description: VDD_RFA_CMN supply regulator handle
 
diff --git a/Bindings/net/wireless/ralink,rt2880.yaml b/Bindings/net/wireless/ralink,rt2880.yaml
new file mode 100644 (file)
index 0000000..04dc5bb
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/wireless/ralink,rt2880.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Ralink RT2880 wireless device
+
+maintainers:
+  - Stanislaw Gruszka <stf_xl@wp.pl>
+
+description: |
+  This node provides properties for configuring RT2880 SOC wifi devices.
+  The node is expected to be specified as a root node of the device.
+
+allOf:
+  - $ref: ieee80211.yaml#
+
+properties:
+  compatible:
+    enum:
+      - ralink,rt2880-wifi
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    wifi@110180000 {
+      compatible = "ralink,rt2880-wifi";
+      reg = <0x10180000 0x40000>;
+      clocks = <&sysc 16>;
+      interrupt-parent = <&cpuintc>;
+      interrupts = <6>;
+    };
index 4424c3c5e75c592f5d37e7578a64bb3937cb89ee..f67470b8a2ed226101351bd3280a405339413a09 100644 (file)
@@ -27,6 +27,7 @@ properties:
           - enum:
               - allwinner,sun50i-a100-sid
               - allwinner,sun50i-h616-sid
+              - allwinner,sun55i-a523-sid
           - const: allwinner,sun50i-a64-sid
       - const: allwinner,sun50i-h5-sid
       - const: allwinner,sun50i-h6-sid
index b5cf740f96fa5cd44f82ddc0d8c590517cb91446..9879d521842e72701285743c62d537f2b32ca585 100644 (file)
@@ -53,6 +53,6 @@ examples:
         };
 
         temperature_calib: calib@1f4 {
-             reg = <0x1f4 0x4>;
+            reg = <0x1f4 0x4>;
         };
     };
diff --git a/Bindings/nvmem/fsl,vf610-ocotp.yaml b/Bindings/nvmem/fsl,vf610-ocotp.yaml
new file mode 100644 (file)
index 0000000..5aef86a
--- /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/nvmem/fsl,vf610-ocotp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: On-Chip OTP Memory for Freescale Vybrid
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+allOf:
+  - $ref: nvmem.yaml#
+  - $ref: nvmem-deprecated-cells.yaml
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - fsl,vf610-ocotp
+      - const: syscon
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: ipg clock we associate with the OCOTP peripheral
+
+required:
+  - compatible
+  - reg
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/vf610-clock.h>
+
+    ocotp@400a5000 {
+        compatible = "fsl,vf610-ocotp", "syscon";
+        reg = <0x400a5000 0xcf0>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        clocks = <&clks VF610_CLK_OCOTP>;
+    };
index 9bd34bd5af30d83ae03d48b10f3b2c5be2ee9586..b01567f9928443fd0f6d4f252cf2632dbec0de9a 100644 (file)
@@ -27,7 +27,7 @@ properties:
     const: 1
 
 patternProperties:
-  "@[a-f0-9]+$":
+  "@[a-f0-9]+(,[0-7])?$":
     type: object
     $ref: fixed-cell.yaml
     unevaluatedProperties: false
diff --git a/Bindings/nvmem/lpc1857-eeprom.txt b/Bindings/nvmem/lpc1857-eeprom.txt
deleted file mode 100644 (file)
index 809df68..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-* NXP LPC18xx EEPROM memory NVMEM driver
-
-Required properties:
-  - compatible: Should be "nxp,lpc1857-eeprom"
-  - reg: Must contain an entry with the physical base address and length
-    for each entry in reg-names.
-  - reg-names: Must include the following entries.
-    - reg: EEPROM registers.
-    - mem: EEPROM address space.
-  - clocks: Must contain an entry for each entry in clock-names.
-  - clock-names: Must include the following entries.
-    - eeprom: EEPROM operating clock.
-  - resets: Should contain a reference to the reset controller asserting
-    the EEPROM in reset.
-  - interrupts: Should contain EEPROM interrupt.
-
-Example:
-
-  eeprom: eeprom@4000e000 {
-    compatible = "nxp,lpc1857-eeprom";
-    reg = <0x4000e000 0x1000>,
-          <0x20040000 0x4000>;
-    reg-names = "reg", "mem";
-    clocks = <&ccu1 CLK_CPU_EEPROM>;
-    clock-names = "eeprom";
-    resets = <&rgu 27>;
-    interrupts = <4>;
-  };
index 32b8c1eb4e80c2895734df4c3d23d482a4cf5a0a..4dc0d42df3e6c3bf066a7109bd72b577ff7220f1 100644 (file)
@@ -24,6 +24,21 @@ properties:
 
   compatible:
     oneOf:
+      - items:
+          - const: mediatek,mt8188-efuse
+          - const: mediatek,mt8186-efuse
+      - const: mediatek,mt8186-efuse
+
+      - items:
+          - enum:
+              - mediatek,mt8186-efuse
+              - mediatek,mt8188-efuse
+          - const: mediatek,efuse
+        deprecated: true
+        description: Some compatibles also imply a decoding scheme for the
+          "gpu-speedbin" cell, and thus are not backward compatible to the
+          generic "mediatek,efuse" compatible.
+
       - items:
           - enum:
               - mediatek,mt7622-efuse
@@ -33,8 +48,6 @@ properties:
               - mediatek,mt7988-efuse
               - mediatek,mt8173-efuse
               - mediatek,mt8183-efuse
-              - mediatek,mt8186-efuse
-              - mediatek,mt8188-efuse
               - mediatek,mt8192-efuse
               - mediatek,mt8195-efuse
               - mediatek,mt8516-efuse
diff --git a/Bindings/nvmem/nxp,lpc1857-eeprom.yaml b/Bindings/nvmem/nxp,lpc1857-eeprom.yaml
new file mode 100644 (file)
index 0000000..24c7125
--- /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/nvmem/nxp,lpc1857-eeprom.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC18xx EEPROM memory
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc1857-eeprom
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: reg
+      - const: mem
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: eeprom
+
+  interrupts:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - clocks
+  - clock-names
+  - interrupts
+  - resets
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc18xx-ccu.h>
+
+    eeprom@4000e000 {
+        compatible = "nxp,lpc1857-eeprom";
+        reg = <0x4000e000 0x1000>,
+              <0x20040000 0x4000>;
+        reg-names = "reg", "mem";
+        clocks = <&ccu1 CLK_CPU_EEPROM>;
+        clock-names = "eeprom";
+        resets = <&rgu 27>;
+        interrupts = <4>;
+    };
diff --git a/Bindings/nvmem/vf610-ocotp.txt b/Bindings/nvmem/vf610-ocotp.txt
deleted file mode 100644 (file)
index 72ba628..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-On-Chip OTP Memory for Freescale Vybrid
-
-Required Properties:
-  compatible:
-  - "fsl,vf610-ocotp", "syscon" for VF5xx/VF6xx
-  #address-cells : Should be 1
-  #size-cells : Should be 1
-  reg : Address and length of OTP controller and fuse map registers
-  clocks : ipg clock we associate with the OCOTP peripheral
-
-Example for Vybrid VF5xx/VF6xx:
-
-       ocotp: ocotp@400a5000 {
-               compatible = "fsl,vf610-ocotp", "syscon";
-               #address-cells = <1>;
-               #size-cells = <1>;
-               reg = <0x400a5000 0xCF0>;
-               clocks = <&clks VF610_CLK_OCOTP>;
-       };
index a27ba7b663d456f964628a91a661b51a684de1be..0bd7d6b69755f5f53a045ba7b5e1d08030d980e6 100644 (file)
@@ -23,7 +23,7 @@ properties:
       const: operating-points-v2-adreno
 
 patternProperties:
-  '^opp-[0-9]+$':
+  '^opp(-[0-9]+){1,2}$':
     type: object
     additionalProperties: false
 
diff --git a/Bindings/pci/83xx-512x-pci.txt b/Bindings/pci/83xx-512x-pci.txt
deleted file mode 100644 (file)
index 3abeecf..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-* Freescale 83xx and 512x PCI bridges
-
-Freescale 83xx and 512x SOCs include the same PCI bridge core.
-
-83xx/512x specific notes:
-- reg: should contain two address length tuples
-    The first is for the internal PCI bridge registers
-    The second is for the PCI config space access registers
-
-Example (MPC8313ERDB)
-       pci0: pci@e0008500 {
-               interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
-               interrupt-map = <
-                               /* IDSEL 0x0E -mini PCI */
-                                0x7000 0x0 0x0 0x1 &ipic 18 0x8
-                                0x7000 0x0 0x0 0x2 &ipic 18 0x8
-                                0x7000 0x0 0x0 0x3 &ipic 18 0x8
-                                0x7000 0x0 0x0 0x4 &ipic 18 0x8
-
-                               /* IDSEL 0x0F - PCI slot */
-                                0x7800 0x0 0x0 0x1 &ipic 17 0x8
-                                0x7800 0x0 0x0 0x2 &ipic 18 0x8
-                                0x7800 0x0 0x0 0x3 &ipic 17 0x8
-                                0x7800 0x0 0x0 0x4 &ipic 18 0x8>;
-               interrupt-parent = <&ipic>;
-               interrupts = <66 0x8>;
-               bus-range = <0x0 0x0>;
-               ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
-                         0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
-                         0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>;
-               clock-frequency = <66666666>;
-               #interrupt-cells = <1>;
-               #size-cells = <2>;
-               #address-cells = <3>;
-               reg = <0xe0008500 0x100         /* internal registers */
-                      0xe0008300 0x8>;         /* config space access registers */
-               compatible = "fsl,mpc8349-pci";
-               device_type = "pci";
-       };
diff --git a/Bindings/pci/aardvark-pci.txt b/Bindings/pci/aardvark-pci.txt
deleted file mode 100644 (file)
index 2b8ca92..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-Aardvark PCIe controller
-
-This PCIe controller is used on the Marvell Armada 3700 ARM64 SoC.
-
-The Device Tree node describing an Aardvark PCIe controller must
-contain the following properties:
-
- - compatible: Should be "marvell,armada-3700-pcie"
- - reg: range of registers for the PCIe controller
- - interrupts: the interrupt line of the PCIe controller
- - #address-cells: set to <3>
- - #size-cells: set to <2>
- - device_type: set to "pci"
- - ranges: ranges for the PCI memory and I/O regions
- - #interrupt-cells: set to <1>
- - msi-controller: indicates that the PCIe controller can itself
-   handle MSI interrupts
- - msi-parent: pointer to the MSI controller to be used
- - interrupt-map-mask and interrupt-map: standard PCI properties to
-   define the mapping of the PCIe interface to interrupt numbers.
- - bus-range: PCI bus numbers covered
- - phys: the PCIe PHY handle
- - max-link-speed: see pci.txt
- - reset-gpios: see pci.txt
-
-In addition, the Device Tree describing an Aardvark PCIe controller
-must include a sub-node that describes the legacy interrupt controller
-built into the PCIe controller. This sub-node must have the following
-properties:
-
- - interrupt-controller
- - #interrupt-cells: set to <1>
-
-Example:
-
-       pcie0: pcie@d0070000 {
-               compatible = "marvell,armada-3700-pcie";
-               device_type = "pci";
-               reg = <0 0xd0070000 0 0x20000>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               bus-range = <0x00 0xff>;
-               interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
-               #interrupt-cells = <1>;
-               msi-controller;
-               msi-parent = <&pcie0>;
-               ranges = <0x82000000 0 0xe8000000   0 0xe8000000 0 0x1000000 /* Port 0 MEM */
-                         0x81000000 0 0xe9000000   0 0xe9000000 0 0x10000>; /* Port 0 IO*/
-               interrupt-map-mask = <0 0 0 7>;
-               interrupt-map = <0 0 0 1 &pcie_intc 0>,
-                               <0 0 0 2 &pcie_intc 1>,
-                               <0 0 0 3 &pcie_intc 2>,
-                               <0 0 0 4 &pcie_intc 3>;
-               phys = <&comphy1 0>;
-               pcie_intc: interrupt-controller {
-                       interrupt-controller;
-                       #interrupt-cells = <1>;
-               };
-       };
diff --git a/Bindings/pci/amazon,al-alpine-v3-pcie.yaml b/Bindings/pci/amazon,al-alpine-v3-pcie.yaml
new file mode 100644 (file)
index 0000000..45244ca
--- /dev/null
@@ -0,0 +1,71 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/amazon,al-alpine-v3-pcie.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Amazon Annapurna Labs Alpine v3 PCIe Host Bridge
+
+maintainers:
+  - Jonathan Chocron <jonnyc@amazon.com>
+
+description:
+  Amazon's Annapurna Labs PCIe Host Controller is based on the Synopsys
+  DesignWare PCI controller.
+
+allOf:
+  - $ref: snps,dw-pcie.yaml#
+
+properties:
+  compatible:
+    enum:
+      - amazon,al-alpine-v2-pcie
+      - amazon,al-alpine-v3-pcie
+
+  reg:
+    items:
+      - description: PCIe ECAM space
+      - description: AL proprietary registers
+      - description: Designware PCIe registers
+
+  reg-names:
+    items:
+      - const: config
+      - const: controller
+      - const: dbi
+
+  interrupts:
+    maxItems: 1
+
+unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - reg-names
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    bus {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        pcie@fb600000 {
+            compatible = "amazon,al-alpine-v3-pcie";
+            reg = <0x0 0xfb600000 0x0 0x00100000
+                  0x0 0xfd800000 0x0 0x00010000
+                  0x0 0xfd810000 0x0 0x00001000>;
+            reg-names = "config", "controller", "dbi";
+            bus-range = <0 255>;
+            device_type = "pci";
+            #address-cells = <3>;
+            #size-cells = <2>;
+            #interrupt-cells = <1>;
+            interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+            interrupt-map-mask = <0x00 0 0 7>;
+            interrupt-map = <0x0000 0 0 1 &gic GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; /* INTa */
+            ranges = <0x02000000 0x0 0xc0010000 0x0 0xc0010000 0x0 0x07ff0000>;
+        };
+    };
diff --git a/Bindings/pci/apm,xgene-pcie.yaml b/Bindings/pci/apm,xgene-pcie.yaml
new file mode 100644 (file)
index 0000000..2504b82
--- /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/pci/apm,xgene-pcie.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: AppliedMicro X-Gene PCIe interface
+
+maintainers:
+  - Toan Le <toan@os.amperecomputing.com>
+
+allOf:
+  - $ref: /schemas/pci/pci-host-bridge.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: apm,xgene-storm-pcie
+          - const: apm,xgene-pcie
+      - items:
+          - const: apm,xgene-pcie
+
+  reg:
+    items:
+      - description: Controller configuration registers
+      - description: PCI configuration space registers
+
+  reg-names:
+    items:
+      - const: csr
+      - const: cfg
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: pcie
+
+  dma-coherent: true
+
+  msi-parent:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - '#interrupt-cells'
+  - interrupt-map-mask
+  - interrupt-map
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    bus {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        pcie@1f2b0000 {
+            compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
+            device_type = "pci";
+            #interrupt-cells = <1>;
+            #size-cells = <2>;
+            #address-cells = <3>;
+            reg = <0x00 0x1f2b0000 0x0 0x00010000>, /* Controller registers */
+                  <0xe0 0xd0000000 0x0 0x00040000>; /* PCI config space */
+            reg-names = "csr", "cfg";
+            ranges = <0x01000000 0x00 0x00000000 0xe0 0x10000000 0x00 0x00010000>, /* io */
+                    <0x02000000 0x00 0x80000000 0xe1 0x80000000 0x00 0x80000000>; /* mem */
+            dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000>,
+                        <0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
+            interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+            interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x1>,
+                            <0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x1>,
+                            <0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x1>,
+                            <0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x1>;
+            dma-coherent;
+            clocks = <&pcie0clk 0>;
+        };
+    };
diff --git a/Bindings/pci/axis,artpec6-pcie.txt b/Bindings/pci/axis,artpec6-pcie.txt
deleted file mode 100644 (file)
index cc6dcdb..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-* Axis ARTPEC-6 PCIe interface
-
-This PCIe host controller is based on the Synopsys DesignWare PCIe IP
-and thus inherits all the common properties defined in snps,dw-pcie.yaml.
-
-Required properties:
-- compatible: "axis,artpec6-pcie", "snps,dw-pcie" for ARTPEC-6 in RC mode;
-             "axis,artpec6-pcie-ep", "snps,dw-pcie" for ARTPEC-6 in EP mode;
-             "axis,artpec7-pcie", "snps,dw-pcie" for ARTPEC-7 in RC mode;
-             "axis,artpec7-pcie-ep", "snps,dw-pcie" for ARTPEC-7 in EP mode;
-- reg: base addresses and lengths of the PCIe controller (DBI),
-       the PHY controller, and configuration address space.
-- reg-names: Must include the following entries:
-       - "dbi"
-       - "phy"
-       - "config"
-- interrupts: A list of interrupt outputs of the controller. Must contain an
-  entry for each entry in the interrupt-names property.
-- interrupt-names: Must include the following entries:
-       - "msi": The interrupt that is asserted when an MSI is received
-- axis,syscon-pcie: A phandle pointing to the ARTPEC-6 system controller,
-       used to enable and control the Synopsys IP.
-
-Example:
-
-       pcie@f8050000 {
-               compatible = "axis,artpec6-pcie", "snps,dw-pcie";
-               reg = <0xf8050000 0x2000
-                      0xf8040000 0x1000
-                      0xc0000000 0x2000>;
-               reg-names = "dbi", "phy", "config";
-               #address-cells = <3>;
-               #size-cells = <2>;
-               device_type = "pci";
-                         /* downstream I/O */
-               ranges = <0x81000000 0 0 0xc0002000 0 0x00010000
-                         /* non-prefetchable memory */
-                         0x82000000 0 0xc0012000 0xc0012000 0 0x1ffee000>;
-               num-lanes = <2>;
-               bus-range = <0x00 0xff>;
-               interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "msi";
-               #interrupt-cells = <1>;
-               interrupt-map-mask = <0 0 0 0x7>;
-               interrupt-map = <0 0 0 1 &intc GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
-                               <0 0 0 2 &intc GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
-                               <0 0 0 3 &intc GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
-                               <0 0 0 4 &intc GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
-               axis,syscon-pcie = <&syscon>;
-       };
diff --git a/Bindings/pci/axis,artpec6-pcie.yaml b/Bindings/pci/axis,artpec6-pcie.yaml
new file mode 100644 (file)
index 0000000..dcc5661
--- /dev/null
@@ -0,0 +1,118 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2025 Axis AB
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/axis,artpec6-pcie.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Axis ARTPEC-6 PCIe host controller
+
+maintainers:
+  - Jesper Nilsson <jesper.nilsson@axis.com>
+
+description:
+  This PCIe host controller is based on the Synopsys DesignWare PCIe IP.
+
+select:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - axis,artpec6-pcie
+          - axis,artpec6-pcie-ep
+          - axis,artpec7-pcie
+          - axis,artpec7-pcie-ep
+  required:
+    - compatible
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - axis,artpec6-pcie
+          - axis,artpec6-pcie-ep
+          - axis,artpec7-pcie
+          - axis,artpec7-pcie-ep
+      - const: snps,dw-pcie
+
+  reg:
+    minItems: 3
+    maxItems: 4
+
+  reg-names:
+    minItems: 3
+    maxItems: 4
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    items:
+      - const: msi
+
+  axis,syscon-pcie:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      System controller phandle used to enable and control the Synopsys IP.
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - interrupt-names
+  - axis,syscon-pcie
+
+oneOf:
+  - $ref: snps,dw-pcie.yaml#
+    properties:
+      reg:
+        maxItems: 3
+
+      reg-names:
+        items:
+          - const: dbi
+          - const: phy
+          - const: config
+
+  - $ref: snps,dw-pcie-ep.yaml#
+    properties:
+      reg:
+        minItems: 4
+
+      reg-names:
+        items:
+          - const: dbi
+          - const: dbi2
+          - const: phy
+          - const: addr_space
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    pcie@f8050000 {
+        compatible = "axis,artpec6-pcie", "snps,dw-pcie";
+        device_type = "pci";
+        reg = <0xf8050000 0x2000
+              0xf8040000 0x1000
+              0xc0000000 0x2000>;
+        reg-names = "dbi", "phy", "config";
+        #address-cells = <3>;
+        #size-cells = <2>;
+        ranges = <0x81000000 0 0 0xc0002000 0 0x00010000>,
+                 <0x82000000 0 0xc0012000 0xc0012000 0 0x1ffee000>;
+        num-lanes = <2>;
+        bus-range = <0x00 0xff>;
+        interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "msi";
+        #interrupt-cells = <1>;
+        interrupt-map-mask = <0 0 0 0x7>;
+        interrupt-map = <0 0 0 1 &intc GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                        <0 0 0 2 &intc GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                        <0 0 0 3 &intc GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
+                        <0 0 0 4 &intc GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
+        axis,syscon-pcie = <&syscon>;
+    };
index c4f9674e8695d6645f16a06fbc4c7da8e3a391b1..812ef5957cfcdf21ed5917b5d98fc441fc637d67 100644 (file)
@@ -107,6 +107,10 @@ properties:
       - const: bridge
       - const: swinit
 
+  num-lanes:
+    default: 1
+    maximum: 4
+
 required:
   - compatible
   - reg
diff --git a/Bindings/pci/marvell,armada-3700-pcie.yaml b/Bindings/pci/marvell,armada-3700-pcie.yaml
new file mode 100644 (file)
index 0000000..68090b3
--- /dev/null
@@ -0,0 +1,99 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/marvell,armada-3700-pcie.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada 3700 (Aardvark) PCIe Controller
+
+maintainers:
+  - Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+  - Pali Rohár <pali@kernel.org>
+
+allOf:
+  - $ref: /schemas/pci/pci-host-bridge.yaml#
+
+properties:
+  compatible:
+    const: marvell,armada-3700-pcie
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  msi-controller: true
+
+  msi-parent:
+    maxItems: 1
+
+  phys:
+    maxItems: 1
+
+  reset-gpios:
+    description: PCIe reset GPIO signals.
+
+  interrupt-controller:
+    type: object
+    additionalProperties: false
+
+    properties:
+      interrupt-controller: true
+
+      '#interrupt-cells':
+        const: 1
+
+    required:
+      - interrupt-controller
+      - '#interrupt-cells'
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - '#interrupt-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/gpio/gpio.h>
+
+    bus {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        pcie@d0070000 {
+            compatible = "marvell,armada-3700-pcie";
+            device_type = "pci";
+            reg = <0 0xd0070000 0 0x20000>;
+            #address-cells = <3>;
+            #size-cells = <2>;
+            bus-range = <0x00 0xff>;
+            interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+            msi-controller;
+            msi-parent = <&pcie0>;
+            ranges = <0x82000000 0 0xe8000000 0 0xe8000000 0 0x1000000>,
+                    <0x81000000 0 0xe9000000 0 0xe9000000 0 0x10000>;
+
+            #interrupt-cells = <1>;
+            interrupt-map-mask = <0 0 0 7>;
+            interrupt-map = <0 0 0 1 &pcie_intc 0>,
+                            <0 0 0 2 &pcie_intc 1>,
+                            <0 0 0 3 &pcie_intc 2>,
+                            <0 0 0 4 &pcie_intc 3>;
+            phys = <&comphy1 0>;
+            max-link-speed = <2>;
+            reset-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
+
+            pcie_intc: interrupt-controller {
+                interrupt-controller;
+                #interrupt-cells = <1>;
+            };
+        };
+    };
index 214caa4ec3d51241d5721c6c8026c3e13d9b30ba..1868a10d5b10dbffcbf14b5737e51353f55b98d8 100644 (file)
@@ -51,7 +51,7 @@ properties:
 
   max-link-speed:
     $ref: /schemas/types.yaml#/definitions/uint32
-    enum: [ 1, 2, 3, 4 ]
+    enum: [ 1, 2, 3, 4, 5, 6 ]
 
   msi-map:
     description: |
diff --git a/Bindings/pci/pcie-al.txt b/Bindings/pci/pcie-al.txt
deleted file mode 100644 (file)
index 2ad1fe4..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-* Amazon Annapurna Labs PCIe host bridge
-
-Amazon's Annapurna Labs PCIe Host Controller is based on the Synopsys DesignWare
-PCI core. It inherits common properties defined in
-Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml.
-
-Properties of the host controller node that differ from it are:
-
-- compatible:
-       Usage: required
-       Value type: <stringlist>
-       Definition: Value should contain
-                       - "amazon,al-alpine-v2-pcie" for alpine_v2
-                       - "amazon,al-alpine-v3-pcie" for alpine_v3
-
-- reg:
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: Register ranges as listed in the reg-names property
-
-- reg-names:
-       Usage: required
-       Value type: <stringlist>
-       Definition: Must include the following entries
-                       - "config"      PCIe ECAM space
-                       - "controller"  AL proprietary registers
-                       - "dbi"         Designware PCIe registers
-
-Example:
-
-       pcie-external0: pcie@fb600000 {
-               compatible = "amazon,al-alpine-v3-pcie";
-               reg = <0x0 0xfb600000 0x0 0x00100000
-                      0x0 0xfd800000 0x0 0x00010000
-                      0x0 0xfd810000 0x0 0x00001000>;
-               reg-names = "config", "controller", "dbi";
-               bus-range = <0 255>;
-               device_type = "pci";
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-map-mask = <0x00 0 0 7>;
-               interrupt-map = <0x0000 0 0 1 &gic GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; /* INTa */
-               ranges = <0x02000000 0x0 0xc0010000 0x0 0xc0010000 0x0 0x07ff0000>;
-       };
index 0480c58f7d998adbac4c6de20cdaec945b3bab21..ab2509ec1c4b40ac91a93033d1bab1b12c39362f 100644 (file)
@@ -51,10 +51,18 @@ properties:
 
   phys:
     maxItems: 1
+    deprecated: true
+    description:
+      This property is deprecated, instead of referencing this property from
+      the host bridge node, use the property from the PCIe root port node.
 
   phy-names:
     items:
       - const: pciephy
+    deprecated: true
+    description:
+      Phandle to the register map node. This property is deprecated, and not
+      required to add in the root port also, as the root port has only one phy.
 
   power-domains:
     maxItems: 1
@@ -71,12 +79,18 @@ properties:
     maxItems: 12
 
   perst-gpios:
-    description: GPIO controlled connection to PERST# signal
+    description: GPIO controlled connection to PERST# signal. This property is
+      deprecated, instead of referencing this property from the host bridge node,
+      use the reset-gpios property from the root port node.
     maxItems: 1
+    deprecated: true
 
   wake-gpios:
-    description: GPIO controlled connection to WAKE# signal
+    description: GPIO controlled connection to WAKE# signal. This property is
+      deprecated, instead of referencing this property from the host bridge node,
+      use the property from the PCIe root port node.
     maxItems: 1
+    deprecated: true
 
   vddpe-3v3-supply:
     description: PCIe endpoint power supply
@@ -85,6 +99,20 @@ properties:
   opp-table:
     type: object
 
+patternProperties:
+  "^pcie@":
+    type: object
+    $ref: /schemas/pci/pci-pci-bridge.yaml#
+
+    properties:
+      reg:
+        maxItems: 1
+
+      phys:
+        maxItems: 1
+
+    unevaluatedProperties: false
+
 required:
   - reg
   - reg-names
diff --git a/Bindings/pci/qcom,pcie-sa8255p.yaml b/Bindings/pci/qcom,pcie-sa8255p.yaml
new file mode 100644 (file)
index 0000000..ef705a0
--- /dev/null
@@ -0,0 +1,122 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/qcom,pcie-sa8255p.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm SA8255p based firmware managed and ECAM compliant PCIe Root Complex
+
+maintainers:
+  - Bjorn Andersson <andersson@kernel.org>
+  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
+
+description:
+  Qualcomm SA8255p SoC PCIe root complex controller is based on the Synopsys
+  DesignWare PCIe IP which is managed by firmware, and configured in ECAM mode.
+
+properties:
+  compatible:
+    const: qcom,pcie-sa8255p
+
+  reg:
+    description:
+      The base address and size of the ECAM area for accessing PCI
+      Configuration Space, as accessed from the parent bus. The base
+      address corresponds to the first bus in the "bus-range" property. If
+      no "bus-range" is specified, this will be bus 0 (the default).
+    maxItems: 1
+
+  ranges:
+    description:
+      As described in IEEE Std 1275-1994, but must provide at least a
+      definition of non-prefetchable memory. One or both of prefetchable Memory
+      may also be provided.
+    minItems: 1
+    maxItems: 2
+
+  interrupts:
+    minItems: 8
+    maxItems: 8
+
+  interrupt-names:
+    items:
+      - const: msi0
+      - const: msi1
+      - const: msi2
+      - const: msi3
+      - const: msi4
+      - const: msi5
+      - const: msi6
+      - const: msi7
+
+  power-domains:
+    maxItems: 1
+
+  dma-coherent: true
+  iommu-map: true
+
+required:
+  - compatible
+  - reg
+  - ranges
+  - power-domains
+  - interrupts
+  - interrupt-names
+
+allOf:
+  - $ref: /schemas/pci/pci-host-bridge.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        pci@1c00000 {
+           compatible = "qcom,pcie-sa8255p";
+           reg = <0x4 0x00000000 0 0x10000000>;
+           device_type = "pci";
+           #address-cells = <3>;
+           #size-cells = <2>;
+           ranges = <0x02000000 0x0 0x40100000 0x0 0x40100000 0x0 0x1ff00000>,
+                    <0x43000000 0x4 0x10100000 0x4 0x10100000 0x0 0x40000000>;
+           bus-range = <0x00 0xff>;
+           dma-coherent;
+           linux,pci-domain = <0>;
+           power-domains = <&scmi5_pd 0>;
+           iommu-map = <0x0 &pcie_smmu 0x0000 0x1>,
+                       <0x100 &pcie_smmu 0x0001 0x1>;
+           interrupt-parent = <&intc>;
+           interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
+                        <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>,
+                        <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>,
+                        <GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH>,
+                        <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
+                        <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
+                        <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
+                        <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+           interrupt-names = "msi0", "msi1", "msi2", "msi3",
+                                  "msi4", "msi5", "msi6", "msi7";
+
+           #interrupt-cells = <1>;
+           interrupt-map-mask = <0 0 0 0x7>;
+           interrupt-map = <0 0 0 1 &intc GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                           <0 0 0 2 &intc GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
+                           <0 0 0 3 &intc GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>,
+                           <0 0 0 4 &intc GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>;
+
+           pcie@0 {
+                   device_type = "pci";
+                   reg = <0x0 0x0 0x0 0x0 0x0>;
+                   bus-range = <0x01 0xff>;
+
+                   #address-cells = <3>;
+                   #size-cells = <2>;
+                   ranges;
+            };
+        };
+    };
index e3fa232da2ca87ce8228c8f9d60b7fd4d25d07ad..19afe2a03409b8f638e0f4a3deda304e397ab9f7 100644 (file)
@@ -16,7 +16,12 @@ description:
 
 properties:
   compatible:
-    const: qcom,pcie-sa8775p
+    oneOf:
+      - const: qcom,pcie-sa8775p
+      - items:
+          - enum:
+              - qcom,pcie-qcs8300
+          - const: qcom,pcie-sa8775p
 
   reg:
     minItems: 6
@@ -61,11 +66,14 @@ properties:
       - const: global
 
   resets:
-    maxItems: 1
+    items:
+      - description: PCIe controller reset
+      - description: PCIe link down reset
 
   reset-names:
     items:
       - const: pci
+      - const: link_down
 
 required:
   - interconnects
@@ -161,8 +169,10 @@ examples:
 
             power-domains = <&gcc PCIE_0_GDSC>;
 
-            resets = <&gcc GCC_PCIE_0_BCR>;
-            reset-names = "pci";
+            resets = <&gcc GCC_PCIE_0_BCR>,
+                     <&gcc GCC_PCIE_0_LINK_DOWN_BCR>;
+            reset-names = "pci",
+                          "link_down";
 
             perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
             wake-gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>;
index ff508f592a1acf7557ed8035d819207dab01f94d..4d0a915566030f8fbd8bf83a9ccca00fbc7574bd 100644 (file)
@@ -165,9 +165,6 @@ examples:
             iommu-map = <0x0 &apps_smmu 0x1c80 0x1>,
                         <0x100 &apps_smmu 0x1c81 0x1>;
 
-            phys = <&pcie1_phy>;
-            phy-names = "pciephy";
-
             pinctrl-names = "default";
             pinctrl-0 = <&pcie1_clkreq_n>;
 
@@ -176,7 +173,18 @@ examples:
             resets = <&gcc GCC_PCIE_1_BCR>;
             reset-names = "pci";
 
-            perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
             vddpe-3v3-supply = <&pp3300_ssd>;
+            pcie1_port0: pcie@0 {
+                device_type = "pci";
+                reg = <0x0 0x0 0x0 0x0 0x0>;
+                bus-range = <0x01 0xff>;
+
+                #address-cells = <3>;
+                #size-cells = <2>;
+                ranges;
+                phys = <&pcie1_phy>;
+
+                reset-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
+            };
         };
     };
index 331fc25d7a17d657d4db3863f0c538d0e44dc840..34a4d7b2c8459aeb615736f54c1971014adb205f 100644 (file)
@@ -33,8 +33,8 @@ properties:
       - const: mhi # MHI registers
 
   clocks:
-    minItems: 8
-    maxItems: 8
+    minItems: 6
+    maxItems: 6
 
   clock-names:
     items:
@@ -44,8 +44,6 @@ properties:
       - const: bus_master # Master AXI clock
       - const: bus_slave # Slave AXI clock
       - const: slave_q2a # Slave Q2A clock
-      - const: ref # REFERENCE clock
-      - const: tbu # PCIe TBU clock
 
   interrupts:
     minItems: 8
@@ -117,17 +115,13 @@ examples:
                      <&gcc GCC_PCIE_0_CFG_AHB_CLK>,
                      <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
                      <&gcc GCC_PCIE_0_SLV_AXI_CLK>,
-                     <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>,
-                     <&gcc GCC_PCIE_0_CLKREF_CLK>,
-                     <&gcc GCC_AGGRE_NOC_PCIE_TBU_CLK>;
+                     <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>;
             clock-names = "pipe",
                           "aux",
                           "cfg",
                           "bus_master",
                           "bus_slave",
-                          "slave_q2a",
-                          "ref",
-                          "tbu";
+                          "slave_q2a";
 
             dma-coherent;
 
index a604f2a79de3b28863a0b8933e6679df4953402c..26b247a41785fa3e001f7ced165747ac256f0c02 100644 (file)
@@ -16,7 +16,12 @@ description:
 
 properties:
   compatible:
-    const: qcom,pcie-sm8150
+    oneOf:
+      - const: qcom,pcie-sm8150
+      - items:
+          - enum:
+              - qcom,pcie-qcs615
+          - const: qcom,pcie-sm8150
 
   reg:
     minItems: 5
@@ -33,8 +38,8 @@ properties:
       - const: mhi # MHI registers
 
   clocks:
-    minItems: 8
-    maxItems: 8
+    minItems: 6
+    maxItems: 6
 
   clock-names:
     items:
@@ -44,8 +49,6 @@ properties:
       - const: bus_master # Master AXI clock
       - const: bus_slave # Slave AXI clock
       - const: slave_q2a # Slave Q2A clock
-      - const: tbu # PCIe TBU clock
-      - const: ref # REFERENCE clock
 
   interrupts:
     minItems: 8
@@ -111,17 +114,13 @@ examples:
                      <&gcc GCC_PCIE_0_CFG_AHB_CLK>,
                      <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
                      <&gcc GCC_PCIE_0_SLV_AXI_CLK>,
-                     <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>,
-                     <&gcc GCC_AGGRE_NOC_PCIE_TBU_CLK>,
-                     <&rpmhcc RPMH_CXO_CLK>;
+                     <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>;
             clock-names = "pipe",
                           "aux",
                           "cfg",
                           "bus_master",
                           "bus_slave",
-                          "slave_q2a",
-                          "tbu",
-                          "ref";
+                          "slave_q2a";
 
             interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
index 69e82f438f5849e36a68e377e8fd1b169c61cc68..b3216141881c9c72b56df081e5dbebc3fb03bfa5 100644 (file)
@@ -108,7 +108,7 @@ properties:
             - description: See native 'dbi' CSR region for details.
               enum: [ ctrl ]
             - description: See native 'elbi/app' CSR region for details.
-              enum: [ apb, mgmt, link, ulreg, appl ]
+              enum: [ apb, mgmt, link, ulreg, appl, controller ]
             - description: See native 'atu' CSR region for details.
               enum: [ atu_dma ]
             - description: Syscon-related CSR regions.
diff --git a/Bindings/pci/sophgo,sg2044-pcie.yaml b/Bindings/pci/sophgo,sg2044-pcie.yaml
new file mode 100644 (file)
index 0000000..ff1133b
--- /dev/null
@@ -0,0 +1,122 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/sophgo,sg2044-pcie.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: DesignWare based PCIe Root Complex controller on Sophgo SoCs
+
+maintainers:
+  - Inochi Amaoto <inochiama@gmail.com>
+
+description:
+  SG2044 SoC PCIe Root Complex controller is based on the Synopsys DesignWare
+  PCIe IP and thus inherits all the common properties defined in
+  snps,dw-pcie.yaml.
+
+allOf:
+  - $ref: /schemas/pci/pci-host-bridge.yaml#
+  - $ref: /schemas/pci/snps,dw-pcie.yaml#
+
+properties:
+  compatible:
+    const: sophgo,sg2044-pcie
+
+  reg:
+    items:
+      - description: Data Bus Interface (DBI) registers
+      - description: iATU registers
+      - description: Config registers
+      - description: Sophgo designed configuration registers
+
+  reg-names:
+    items:
+      - const: dbi
+      - const: atu
+      - const: config
+      - const: app
+
+  clocks:
+    items:
+      - description: core clk
+
+  clock-names:
+    items:
+      - const: core
+
+  interrupt-controller:
+    description: Interrupt controller node for handling legacy PCI interrupts.
+    type: object
+
+    properties:
+      "#address-cells":
+        const: 0
+
+      "#interrupt-cells":
+        const: 1
+
+      interrupt-controller: true
+
+      interrupts:
+        items:
+          - description: combined legacy interrupt
+
+    required:
+      - "#address-cells"
+      - "#interrupt-cells"
+      - interrupt-controller
+      - interrupts
+
+    additionalProperties: false
+
+  msi-parent: true
+
+  ranges:
+    maxItems: 5
+
+required:
+  - compatible
+  - reg
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    soc {
+      #address-cells = <2>;
+      #size-cells = <2>;
+
+      pcie@6c00400000 {
+        compatible = "sophgo,sg2044-pcie";
+        reg = <0x6c 0x00400000 0x0 0x00001000>,
+              <0x6c 0x00700000 0x0 0x00004000>,
+              <0x40 0x00000000 0x0 0x00001000>,
+              <0x6c 0x00780c00 0x0 0x00000400>;
+        reg-names = "dbi", "atu", "config", "app";
+        #address-cells = <3>;
+        #size-cells = <2>;
+        bus-range = <0x00 0xff>;
+        clocks = <&clk 0>;
+        clock-names = "core";
+        device_type = "pci";
+        linux,pci-domain = <0>;
+        msi-parent = <&msi>;
+        ranges = <0x01000000 0x0  0x00000000  0x40 0x10000000  0x0 0x00200000>,
+                 <0x42000000 0x0  0x00000000  0x0  0x00000000  0x0 0x04000000>,
+                 <0x02000000 0x0  0x04000000  0x0  0x04000000  0x0 0x04000000>,
+                 <0x43000000 0x42 0x00000000  0x42 0x00000000  0x2 0x00000000>,
+                 <0x03000000 0x41 0x00000000  0x41 0x00000000  0x1 0x00000000>;
+
+        interrupt-controller {
+          #address-cells = <0>;
+          #interrupt-cells = <1>;
+          interrupt-controller;
+          interrupt-parent = <&intc>;
+          interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
+        };
+      };
+    };
+...
diff --git a/Bindings/pci/spear13xx-pcie.txt b/Bindings/pci/spear13xx-pcie.txt
deleted file mode 100644 (file)
index d5a14f5..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-SPEAr13XX PCIe DT detail:
-================================
-
-SPEAr13XX uses the Synopsys DesignWare PCIe controller and ST MiPHY as PHY
-controller.
-
-Required properties:
-- compatible       : should be "st,spear1340-pcie", "snps,dw-pcie".
-- phys             : phandle to PHY node associated with PCIe controller
-- phy-names        : must be "pcie-phy"
-- All other definitions as per generic PCI bindings
-
- Optional properties:
-- st,pcie-is-gen1 indicates that forced gen1 initialization is needed.
diff --git a/Bindings/pci/st,spear1340-pcie.yaml b/Bindings/pci/st,spear1340-pcie.yaml
new file mode 100644 (file)
index 0000000..784f97b
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/st,spear1340-pcie.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ST SPEAr1340 PCIe controller
+
+maintainers:
+  - Pratyush Anand <pratyush.anand@gmail.com>
+
+description:
+  SPEAr13XX uses the Synopsys DesignWare PCIe controller and ST MiPHY as PHY
+  controller.
+
+select:
+  properties:
+    compatible:
+      contains:
+        const: st,spear1340-pcie
+  required:
+    - compatible
+
+properties:
+  compatible:
+    items:
+      - const: st,spear1340-pcie
+      - const: snps,dw-pcie
+
+  phys:
+    maxItems: 1
+
+  st,pcie-is-gen1:
+    type: boolean
+    description: Indicates forced gen1 initialization is needed.
+
+required:
+  - compatible
+  - phys
+  - phy-names
+
+allOf:
+  - $ref: snps,dw-pcie.yaml#
+
+unevaluatedProperties: false
index 97f2579ea9082229c03a094d74d25da4e54eb8e4..29580cbd1767b850357fe8903e7cf654c4a70de1 100644 (file)
@@ -123,21 +123,21 @@ examples:
         #size-cells = <2>;
 
         pcie0_ep: pcie-ep@d000000 {
-           compatible = "ti,j721e-pcie-ep";
-           reg = <0x00 0x02900000 0x00 0x1000>,
-                 <0x00 0x02907000 0x00 0x400>,
-                 <0x00 0x0d000000 0x00 0x00800000>,
-                 <0x00 0x10000000 0x00 0x08000000>;
-           reg-names = "intd_cfg", "user_cfg", "reg", "mem";
-           ti,syscon-pcie-ctrl = <&pcie0_ctrl 0x4070>;
-           max-link-speed = <3>;
-           num-lanes = <2>;
-           power-domains = <&k3_pds 239 TI_SCI_PD_EXCLUSIVE>;
-           clocks = <&k3_clks 239 1>;
-           clock-names = "fck";
-           max-functions = /bits/ 8 <6>;
-           dma-coherent;
-           phys = <&serdes0_pcie_link>;
-           phy-names = "pcie-phy";
-       };
+            compatible = "ti,j721e-pcie-ep";
+            reg = <0x00 0x02900000 0x00 0x1000>,
+                  <0x00 0x02907000 0x00 0x400>,
+                  <0x00 0x0d000000 0x00 0x00800000>,
+                  <0x00 0x10000000 0x00 0x08000000>;
+            reg-names = "intd_cfg", "user_cfg", "reg", "mem";
+            ti,syscon-pcie-ctrl = <&pcie0_ctrl 0x4070>;
+            max-link-speed = <3>;
+            num-lanes = <2>;
+            power-domains = <&k3_pds 239 TI_SCI_PD_EXCLUSIVE>;
+            clocks = <&k3_clks 239 1>;
+            clock-names = "fck";
+            max-functions = /bits/ 8 <6>;
+            dma-coherent;
+            phys = <&serdes0_pcie_link>;
+            phy-names = "pcie-phy";
+        };
     };
diff --git a/Bindings/pci/xgene-pci-msi.txt b/Bindings/pci/xgene-pci-msi.txt
deleted file mode 100644 (file)
index 85d9b95..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-* AppliedMicro X-Gene v1 PCIe MSI controller
-
-Required properties:
-
-- compatible: should be "apm,xgene1-msi" to identify
-             X-Gene v1 PCIe MSI controller block.
-- msi-controller: indicates that this is an X-Gene v1 PCIe MSI controller node
-- reg: physical base address (0x79000000) and length (0x900000) for controller
-       registers. These registers include the MSI termination address and data
-       registers as well as the MSI interrupt status registers.
-- reg-names: not required
-- interrupts: A list of 16 interrupt outputs of the controller, starting from
-             interrupt number 0x10 to 0x1f.
-- interrupt-names: not required
-
-Each PCIe node needs to have property msi-parent that points to an MSI
-controller node
-
-Examples:
-
-SoC DTSI:
-
-       + MSI node:
-       msi@79000000 {
-               compatible = "apm,xgene1-msi";
-               msi-controller;
-               reg = <0x00 0x79000000 0x0 0x900000>;
-               interrupts =    <0x0 0x10 0x4>
-                               <0x0 0x11 0x4>
-                               <0x0 0x12 0x4>
-                               <0x0 0x13 0x4>
-                               <0x0 0x14 0x4>
-                               <0x0 0x15 0x4>
-                               <0x0 0x16 0x4>
-                               <0x0 0x17 0x4>
-                               <0x0 0x18 0x4>
-                               <0x0 0x19 0x4>
-                               <0x0 0x1a 0x4>
-                               <0x0 0x1b 0x4>
-                               <0x0 0x1c 0x4>
-                               <0x0 0x1d 0x4>
-                               <0x0 0x1e 0x4>
-                               <0x0 0x1f 0x4>;
-       };
-
-       + PCIe controller node with msi-parent property pointing to MSI node:
-       pcie0: pcie@1f2b0000 {
-               device_type = "pci";
-               compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
-               #interrupt-cells = <1>;
-               #size-cells = <2>;
-               #address-cells = <3>;
-               reg = < 0x00 0x1f2b0000 0x0 0x00010000   /* Controller registers */
-                       0xe0 0xd0000000 0x0 0x00040000>; /* PCI config space */
-               reg-names = "csr", "cfg";
-               ranges = <0x01000000 0x00 0x00000000 0xe0 0x10000000 0x00 0x00010000   /* io */
-                         0x02000000 0x00 0x80000000 0xe1 0x80000000 0x00 0x80000000>; /* mem */
-               dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
-                             0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
-               interrupt-map-mask = <0x0 0x0 0x0 0x7>;
-               interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x1
-                                0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x1
-                                0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x1
-                                0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x1>;
-               dma-coherent;
-               clocks = <&pcie0clk 0>;
-               msi-parent= <&msi>;
-       };
diff --git a/Bindings/pci/xgene-pci.txt b/Bindings/pci/xgene-pci.txt
deleted file mode 100644 (file)
index 9249033..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-* AppliedMicro X-Gene PCIe interface
-
-Required properties:
-- device_type: set to "pci"
-- compatible: should contain "apm,xgene-pcie" to identify the core.
-- reg: A list of physical base address and length for each set of controller
-       registers. Must contain an entry for each entry in the reg-names
-       property.
-- reg-names: Must include the following entries:
-  "csr": controller configuration registers.
-  "cfg": PCIe configuration space registers.
-- #address-cells: set to <3>
-- #size-cells: set to <2>
-- ranges: ranges for the outbound memory, I/O regions.
-- dma-ranges: ranges for the inbound memory regions.
-- #interrupt-cells: set to <1>
-- interrupt-map-mask and interrupt-map: standard PCI properties
-       to define the mapping of the PCIe interface to interrupt
-       numbers.
-- clocks: from common clock binding: handle to pci clock.
-
-Optional properties:
-- status: Either "ok" or "disabled".
-- dma-coherent: Present if DMA operations are coherent
-
-Example:
-
-       pcie0: pcie@1f2b0000 {
-               status = "disabled";
-               device_type = "pci";
-               compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
-               #interrupt-cells = <1>;
-               #size-cells = <2>;
-               #address-cells = <3>;
-               reg = < 0x00 0x1f2b0000 0x0 0x00010000   /* Controller registers */
-                       0xe0 0xd0000000 0x0 0x00040000>; /* PCI config space */
-               reg-names = "csr", "cfg";
-               ranges = <0x01000000 0x00 0x00000000 0xe0 0x10000000 0x00 0x00010000   /* io */
-                         0x02000000 0x00 0x80000000 0xe1 0x80000000 0x00 0x80000000>; /* mem */
-               dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
-                             0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
-               interrupt-map-mask = <0x0 0x0 0x0 0x7>;
-               interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x1
-                                0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x1
-                                0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x1
-                                0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x1>;
-               dma-coherent;
-               clocks = <&pcie0clk 0>;
-       };
-
diff --git a/Bindings/phy/apm,xgene-phy.yaml b/Bindings/phy/apm,xgene-phy.yaml
new file mode 100644 (file)
index 0000000..0674391
--- /dev/null
@@ -0,0 +1,169 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/apm,xgene-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: APM X-Gene 15Gbps Multi-purpose PHY
+
+maintainers:
+  - Khuong Dinh <khuong@os.amperecomputing.com>
+
+description:
+  PHY nodes are defined to describe on-chip 15Gbps Multi-purpose PHY. Each
+  PHY (pair of lanes) has its own node.
+
+properties:
+  compatible:
+    items:
+      - const: apm,xgene-phy
+
+  reg:
+    maxItems: 1
+
+  '#phy-cells':
+    description:
+      Possible values are 0 (SATA), 1 (SGMII), 2 (PCIe), 3 (USB), and 4 (XFI).
+    const: 1
+
+  clocks:
+    maxItems: 1
+
+  apm,tx-eye-tuning:
+    description:
+      Manual control to fine tune the capture of the serial bit lines from the
+      automatic calibrated position. Two set of 3-tuple setting for each
+      supported link speed on the host. Range from 0 to 127 in unit of one bit
+      period.
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    minItems: 2
+    maxItems: 2
+    items:
+      minItems: 3
+      maxItems: 3
+      items:
+        minimum: 0
+        maximum: 127
+        default: 10
+
+  apm,tx-eye-direction:
+    description:
+      Eye tuning manual control direction. 0 means sample data earlier than the
+      nominal sampling point. 1 means sample data later than the nominal
+      sampling point. Two set of 3-tuple setting for each supported link speed
+      on the host.
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    minItems: 2
+    maxItems: 2
+    items:
+      minItems: 3
+      maxItems: 3
+      items:
+        enum: [0, 1]
+        default: 0
+
+  apm,tx-boost-gain:
+    description:
+      Frequency boost AC (LSB 3-bit) and DC (2-bit) gain control. Two set of
+      3-tuple setting for each supported link speed on the host. Range is
+      between 0 to 31 in unit of dB. Default is 3.
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    minItems: 2
+    maxItems: 2
+    items:
+      minItems: 3
+      maxItems: 3
+      items:
+        minimum: 0
+        maximum: 31
+
+  apm,tx-amplitude:
+    description:
+      Amplitude control. Two set of 3-tuple setting for each supported link
+      speed on the host. Range is between 0 to 199500 in unit of uV.
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    minItems: 2
+    maxItems: 2
+    items:
+      minItems: 3
+      maxItems: 3
+      items:
+        minimum: 0
+        maximum: 199500
+        default: 199500
+
+  apm,tx-pre-cursor1:
+    description:
+      1st pre-cursor emphasis taps control. Two set of 3-tuple setting for
+      each supported link speed on the host. Range is 0 to 273000 in unit of
+      uV.
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    minItems: 2
+    maxItems: 2
+    items:
+      minItems: 3
+      maxItems: 3
+      items:
+        minimum: 0
+        maximum: 273000
+        default: 0
+
+  apm,tx-pre-cursor2:
+    description:
+      2nd pre-cursor emphasis taps control. Two set of 3-tuple setting for
+      each supported link speed on the host. Range is 0 to 127400 in unit uV.
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    minItems: 2
+    maxItems: 2
+    items:
+      minItems: 3
+      maxItems: 3
+      items:
+        minimum: 0
+        maximum: 127400
+        default: 0
+
+  apm,tx-post-cursor:
+    description: |
+      Post-cursor emphasis taps control. Two set of 3-tuple setting for Gen1,
+      Gen2, and Gen3 link speeds. Range is between 0 to 31 in unit of 18.2mV.
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    minItems: 2
+    maxItems: 2
+    items:
+      minItems: 3
+      maxItems: 3
+      items:
+        minimum: 0
+        maximum: 31
+        default: 0xf
+
+  apm,tx-speed:
+    description: >
+      Tx operating speed. One set of 3-tuple for each supported link speed on
+      the host:
+
+        0 = 1-2Gbps
+        1 = 2-4Gbps (1st tuple default)
+        2 = 4-8Gbps
+        3 = 8-15Gbps (2nd tuple default)
+        4 = 2.5-4Gbps
+        5 = 4-5Gbps
+        6 = 5-6Gbps
+        7 = 6-16Gbps (3rd tuple default).
+
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 3
+    maxItems: 3
+    items:
+      maximum: 7
+
+additionalProperties: false
+
+examples:
+  - |
+    phy@1f21a000 {
+        compatible = "apm,xgene-phy";
+        reg = <0x1f21a000 0x100>;
+        #phy-cells = <1>;
+    };
diff --git a/Bindings/phy/apm-xgene-phy.txt b/Bindings/phy/apm-xgene-phy.txt
deleted file mode 100644 (file)
index 602cf95..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-* APM X-Gene 15Gbps Multi-purpose PHY nodes
-
-PHY nodes are defined to describe on-chip 15Gbps Multi-purpose PHY. Each
-PHY (pair of lanes) has its own node.
-
-Required properties:
-- compatible           : Shall be "apm,xgene-phy".
-- reg                  : PHY memory resource is the SDS PHY access resource.
-- #phy-cells           : Shall be 1 as it expects one argument for setting
-                         the mode of the PHY. Possible values are 0 (SATA),
-                         1 (SGMII), 2 (PCIe), 3 (USB), and 4 (XFI).
-
-Optional properties:
-- status               : Shall be "ok" if enabled or "disabled" if disabled.
-                         Default is "ok".
-- clocks               : Reference to the clock entry.
-- apm,tx-eye-tuning    : Manual control to fine tune the capture of the serial
-                         bit lines from the automatic calibrated position.
-                         Two set of 3-tuple setting for each (up to 3)
-                         supported link speed on the host. Range from 0 to
-                         127 in unit of one bit period. Default is 10.
-- apm,tx-eye-direction : Eye tuning manual control direction. 0 means sample
-                         data earlier than the nominal sampling point. 1 means
-                         sample data later than the nominal sampling point.
-                         Two set of 3-tuple setting for each (up to 3)
-                         supported link speed on the host. Default is 0.
-- apm,tx-boost-gain    : Frequency boost AC (LSB 3-bit) and DC (2-bit)
-                         gain control. Two set of 3-tuple setting for each
-                         (up to 3) supported link speed on the host. Range is
-                         between 0 to 31 in unit of dB. Default is 3.
-- apm,tx-amplitude     : Amplitude control. Two set of 3-tuple setting for
-                         each (up to 3) supported link speed on the host.
-                         Range is between 0 to 199500 in unit of uV.
-                         Default is 199500 uV.
-- apm,tx-pre-cursor1   : 1st pre-cursor emphasis taps control. Two set of
-                         3-tuple setting for each (up to 3) supported link
-                         speed on the host. Range is 0 to 273000 in unit of
-                         uV. Default is 0.
-- apm,tx-pre-cursor2   : 2nd pre-cursor emphasis taps control. Two set of
-                         3-tuple setting for each (up to 3) supported link
-                         speed on the host. Range is 0 to 127400 in unit uV.
-                         Default is 0x0.
-- apm,tx-post-cursor   : Post-cursor emphasis taps control. Two set of
-                         3-tuple setting for Gen1, Gen2, and Gen3. Range is
-                         between 0 to 0x1f in unit of 18.2mV. Default is 0xf.
-- apm,tx-speed         : Tx operating speed. One set of 3-tuple for each
-                         supported link speed on the host.
-                          0 = 1-2Gbps
-                          1 = 2-4Gbps (1st tuple default)
-                          2 = 4-8Gbps
-                          3 = 8-15Gbps (2nd tuple default)
-                          4 = 2.5-4Gbps
-                          5 = 4-5Gbps
-                          6 = 5-6Gbps
-                          7 = 6-16Gbps (3rd tuple default)
-
-NOTE: PHY override parameters are board specific setting.
-
-Example:
-               phy1: phy@1f21a000 {
-                       compatible = "apm,xgene-phy";
-                       reg = <0x0 0x1f21a000 0x0 0x100>;
-                       #phy-cells = <1>;
-               };
-
-               phy2: phy@1f22a000 {
-                       compatible = "apm,xgene-phy";
-                       reg = <0x0 0x1f22a000 0x0 0x100>;
-                       #phy-cells = <1>;
-               };
-
-               phy3: phy@1f23a000 {
-                       compatible = "apm,xgene-phy";
-                       reg = <0x0 0x1f23a000 0x0 0x100>;
-                       #phy-cells = <1>;
-               };
diff --git a/Bindings/phy/berlin-sata-phy.txt b/Bindings/phy/berlin-sata-phy.txt
deleted file mode 100644 (file)
index c0155f8..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-Berlin SATA PHY
----------------
-
-Required properties:
-- compatible: should be one of
-    "marvell,berlin2-sata-phy"
-    "marvell,berlin2q-sata-phy"
-- address-cells: should be 1
-- size-cells: should be 0
-- phy-cells: from the generic PHY bindings, must be 1
-- reg: address and length of the register
-- clocks: reference to the clock entry
-
-Sub-nodes:
-Each PHY should be represented as a sub-node.
-
-Sub-nodes required properties:
-- reg: the PHY number
-
-Example:
-       sata_phy: phy@f7e900a0 {
-               compatible = "marvell,berlin2q-sata-phy";
-               reg = <0xf7e900a0 0x200>;
-               clocks = <&chip CLKID_SATA>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               #phy-cells = <1>;
-
-               sata-phy@0 {
-                       reg = <0>;
-               };
-
-               sata-phy@1 {
-                       reg = <1>;
-               };
-       };
diff --git a/Bindings/phy/berlin-usb-phy.txt b/Bindings/phy/berlin-usb-phy.txt
deleted file mode 100644 (file)
index be33780..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-* Marvell Berlin USB PHY
-
-Required properties:
-- compatible: "marvell,berlin2-usb-phy" or "marvell,berlin2cd-usb-phy"
-- reg: base address and length of the registers
-- #phys-cells: should be 0
-- resets: reference to the reset controller
-
-Example:
-
-       usb-phy@f774000 {
-               compatible = "marvell,berlin2-usb-phy";
-               reg = <0xf774000 0x128>;
-               #phy-cells = <0>;
-               resets = <&chip 0x104 14>;
-       };
diff --git a/Bindings/phy/brcm,ns2-drd-phy.txt b/Bindings/phy/brcm,ns2-drd-phy.txt
deleted file mode 100644 (file)
index 04f063a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-BROADCOM NORTHSTAR2 USB2 (DUAL ROLE DEVICE) PHY
-
-Required properties:
- - compatible: brcm,ns2-drd-phy
- - reg: offset and length of the NS2 PHY related registers.
- - reg-names
-   The below registers must be provided.
-   icfg - for DRD ICFG configurations
-   rst-ctrl - for DRD IDM reset
-   crmu-ctrl - for CRMU core vdd, PHY and PHY PLL reset
-   usb2-strap - for port over current polarity reversal
- - #phy-cells: Must be 0. No args required.
- - vbus-gpios: vbus gpio binding
- - id-gpios: id gpio binding
-
-Refer to phy/phy-bindings.txt for the generic PHY binding properties
-
-Example:
-       usbdrd_phy: phy@66000960 {
-                       #phy-cells = <0>;
-                       compatible = "brcm,ns2-drd-phy";
-                       reg = <0x66000960 0x24>,
-                             <0x67012800 0x4>,
-                             <0x6501d148 0x4>,
-                             <0x664d0700 0x4>;
-                       reg-names = "icfg", "rst-ctrl",
-                                   "crmu-ctrl", "usb2-strap";
-                       id-gpios = <&gpio_g 30 0>;
-                       vbus-gpios = <&gpio_g 31 0>;
-       };
diff --git a/Bindings/phy/brcm,ns2-drd-phy.yaml b/Bindings/phy/brcm,ns2-drd-phy.yaml
new file mode 100644 (file)
index 0000000..1fab97d
--- /dev/null
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/brcm,ns2-drd-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom Northstar2 USB2 Dual Role Device PHY
+
+maintainers:
+  - Florian Fainelli <florian.fainelli@broadcom.com>
+  - Hauke Mehrtens <hauke@hauke-m.de>
+  - Rafał Miłecki <zajec5@gmail.com>
+
+properties:
+  compatible:
+    const: brcm,ns2-drd-phy
+
+  reg:
+    items:
+      - description: DRD ICFG configurations
+      - description: DRD IDM reset
+      - description: CRMU core vdd, PHY and PHY PLL reset
+      - description: Port over current polarity reversal
+
+  reg-names:
+    items:
+      - const: icfg
+      - const: rst-ctrl
+      - const: crmu-ctrl
+      - const: usb2-strap
+
+  '#phy-cells':
+    const: 0
+
+  id-gpios:
+    maxItems: 1
+    description: ID GPIO line
+
+  vbus-gpios:
+    maxItems: 1
+    description: VBUS GPIO line
+
+required:
+  - '#phy-cells'
+  - compatible
+  - reg
+  - reg-names
+  - id-gpios
+  - vbus-gpios
+
+additionalProperties: false
+
+examples:
+  - |
+    phy@66000960 {
+        #phy-cells = <0>;
+        compatible = "brcm,ns2-drd-phy";
+        reg = <0x66000960 0x24>, <0x67012800 0x4>, <0x6501d148 0x4>, <0x664d0700 0x4>;
+        reg-names = "icfg", "rst-ctrl", "crmu-ctrl", "usb2-strap";
+        id-gpios = <&gpio_g 30 0>;
+        vbus-gpios = <&gpio_g 31 0>;
+    };
diff --git a/Bindings/phy/brcm,sr-pcie-phy.txt b/Bindings/phy/brcm,sr-pcie-phy.txt
deleted file mode 100644 (file)
index e8d8228..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-Broadcom Stingray PCIe PHY
-
-Required properties:
-- compatible: must be "brcm,sr-pcie-phy"
-- reg: base address and length of the PCIe SS register space
-- brcm,sr-cdru: phandle to the CDRU syscon node
-- brcm,sr-mhb: phandle to the MHB syscon node
-- #phy-cells: Must be 1, denotes the PHY index
-
-For PAXB based root complex, one can have a configuration of up to 8 PHYs
-PHY index goes from 0 to 7
-
-For the internal PAXC based root complex, PHY index is always 8
-
-Example:
-       mhb: syscon@60401000 {
-               compatible = "brcm,sr-mhb", "syscon";
-               reg = <0 0x60401000 0 0x38c>;
-       };
-
-       cdru: syscon@6641d000 {
-               compatible = "brcm,sr-cdru", "syscon";
-               reg = <0 0x6641d000 0 0x400>;
-       };
-
-       pcie_phy: phy@40000000 {
-               compatible = "brcm,sr-pcie-phy";
-               reg = <0 0x40000000 0 0x800>;
-               brcm,sr-cdru = <&cdru>;
-               brcm,sr-mhb = <&mhb>;
-               #phy-cells = <1>;
-       };
-
-       /* users of the PCIe PHY */
-
-       pcie0: pcie@48000000 {
-               ...
-               ...
-               phys = <&pcie_phy 0>;
-               phy-names = "pcie-phy";
-       };
diff --git a/Bindings/phy/brcm,sr-pcie-phy.yaml b/Bindings/phy/brcm,sr-pcie-phy.yaml
new file mode 100644 (file)
index 0000000..60ccc08
--- /dev/null
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/brcm,sr-pcie-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom Stingray PCIe PHY
+
+maintainers:
+  - Ray Jui <ray.jui@broadcom.com>
+
+description: >
+  For PAXB based root complex, one can have a configuration of up to 8 PHYs.
+  PHY index goes from 0 to 7.
+
+  For the internal PAXC based root complex, PHY index is always 8.
+
+properties:
+  compatible:
+    const: brcm,sr-pcie-phy
+
+  reg:
+    maxItems: 1
+
+  '#phy-cells':
+    const: 1
+
+  brcm,sr-cdru:
+    description: phandle to the CDRU syscon node
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+  brcm,sr-mhb:
+    description: phandle to the MHB syscon node
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+additionalProperties: false
+
+examples:
+  - |
+    phy@40000000 {
+        compatible = "brcm,sr-pcie-phy";
+        reg = <0x40000000 0x800>;
+        brcm,sr-cdru = <&cdru>;
+        brcm,sr-mhb = <&mhb>;
+        #phy-cells = <1>;
+    };
diff --git a/Bindings/phy/brcm,sr-usb-combo-phy.yaml b/Bindings/phy/brcm,sr-usb-combo-phy.yaml
new file mode 100644 (file)
index 0000000..6224ba0
--- /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/phy/brcm,sr-usb-combo-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom Stingray USB PHY
+
+maintainers:
+  - Ray Jui <rjui@broadcom.com>
+  - Scott Branden <sbranden@broadcom.com>
+
+properties:
+  compatible:
+    enum:
+      - brcm,sr-usb-combo-phy
+      - brcm,sr-usb-hs-phy
+
+  reg:
+    maxItems: 1
+
+  '#phy-cells':
+    description: PHY cell count indicating PHY type
+    enum: [ 0, 1 ]
+
+required:
+  - compatible
+  - reg
+  - '#phy-cells'
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,sr-usb-combo-phy
+    then:
+      properties:
+        '#phy-cells':
+          const: 1
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,sr-usb-hs-phy
+    then:
+      properties:
+        '#phy-cells':
+          const: 0
+
+additionalProperties: false
+
+examples:
+  - |
+    usb-phy@0 {
+        compatible = "brcm,sr-usb-combo-phy";
+        reg = <0x00000000 0x100>;
+        #phy-cells = <1>;
+    };
+  - |
+    usb-phy@20000 {
+        compatible = "brcm,sr-usb-hs-phy";
+        reg = <0x00020000 0x100>;
+        #phy-cells = <0>;
+    };
diff --git a/Bindings/phy/brcm,stingray-usb-phy.txt b/Bindings/phy/brcm,stingray-usb-phy.txt
deleted file mode 100644 (file)
index 4ba2989..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-Broadcom Stingray USB PHY
-
-Required properties:
- - compatible : should be one of the listed compatibles
-       - "brcm,sr-usb-combo-phy" is combo PHY has two PHYs, one SS and one HS.
-       - "brcm,sr-usb-hs-phy" is a single HS PHY.
- - reg: offset and length of the PHY blocks registers
- - #phy-cells:
-   - Must be 1 for brcm,sr-usb-combo-phy as it expects one argument to indicate
-     the PHY number of two PHYs. 0 for HS PHY and 1 for SS PHY.
-   - Must be 0 for brcm,sr-usb-hs-phy.
-
-Refer to phy/phy-bindings.txt for the generic PHY binding properties
-
-Example:
-       usbphy0: usb-phy@0 {
-               compatible = "brcm,sr-usb-combo-phy";
-               reg = <0x00000000 0x100>;
-               #phy-cells = <1>;
-       };
-
-       usbphy1: usb-phy@10000 {
-               compatible = "brcm,sr-usb-combo-phy";
-               reg = <0x00010000 0x100>,
-               #phy-cells = <1>;
-       };
-
-       usbphy2: usb-phy@20000 {
-               compatible = "brcm,sr-usb-hs-phy";
-               reg = <0x00020000 0x100>,
-               #phy-cells = <0>;
-       };
diff --git a/Bindings/phy/dm816x-phy.txt b/Bindings/phy/dm816x-phy.txt
deleted file mode 100644 (file)
index 2fe3d11..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-Device tree binding documentation for am816x USB PHY
-=========================
-
-Required properties:
-- compatible : should be "ti,dm816x-usb-phy"
-- reg : offset and length of the PHY register set.
-- reg-names : name for the phy registers
-- clocks : phandle to the clock
-- clock-names : name of the clock
-- syscon: phandle for the syscon node to access misc registers
-- #phy-cells : from the generic PHY bindings, must be 1
-- syscon: phandle for the syscon node to access misc registers
-
-Example:
-
-usb_phy0: usb-phy@20 {
-       compatible = "ti,dm8168-usb-phy";
-       reg = <0x20 0x8>;
-       reg-names = "phy";
-       clocks = <&main_fapll 6>;
-       clock-names = "refclk";
-       #phy-cells = <0>;
-       syscon = <&scm_conf>;
-};
diff --git a/Bindings/phy/hisilicon,hi6220-usb-phy.yaml b/Bindings/phy/hisilicon,hi6220-usb-phy.yaml
new file mode 100644 (file)
index 0000000..376586a
--- /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/phy/hisilicon,hi6220-usb-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Hisilicon hi6220 USB PHY
+
+maintainers:
+  - Zhangfei Gao <zhangfei.gao@linaro.org>
+
+properties:
+  compatible:
+    const: hisilicon,hi6220-usb-phy
+
+  '#phy-cells':
+    const: 0
+
+  phy-supply:
+    description: PHY power supply.
+
+  hisilicon,peripheral-syscon:
+    description: Phandle to the system controller for PHY control.
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+additionalProperties: false
+
+examples:
+  - |
+    usbphy {
+        compatible = "hisilicon,hi6220-usb-phy";
+        #phy-cells = <0>;
+        phy-supply = <&fixed_5v_hub>;
+        hisilicon,peripheral-syscon = <&sys_ctrl>;
+    };
diff --git a/Bindings/phy/hisilicon,hix5hd2-sata-phy.yaml b/Bindings/phy/hisilicon,hix5hd2-sata-phy.yaml
new file mode 100644 (file)
index 0000000..2993dd6
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/hisilicon,hix5hd2-sata-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: HiSilicon hix5hd2 SATA PHY
+
+maintainers:
+  - Jiancheng Xue <xuejiancheng@huawei.com>
+
+properties:
+  compatible:
+    const: hisilicon,hix5hd2-sata-phy
+
+  reg:
+    maxItems: 1
+
+  '#phy-cells':
+    const: 0
+
+  hisilicon,peripheral-syscon:
+    description: Phandle of syscon used to control peripheral
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+  hisilicon,power-reg:
+    description: Offset and bit number within peripheral-syscon register controlling SATA power supply
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    items:
+      - description: Offset within peripheral-syscon register
+      - description: Bit number controlling SATA power supply
+
+required:
+  - compatible
+  - reg
+  - '#phy-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    phy@f9900000 {
+        compatible = "hisilicon,hix5hd2-sata-phy";
+        reg = <0xf9900000 0x10000>;
+        #phy-cells = <0>;
+        hisilicon,peripheral-syscon = <&peripheral_ctrl>;
+        hisilicon,power-reg = <0x8 10>;
+    };
diff --git a/Bindings/phy/hisilicon,inno-usb2-phy.yaml b/Bindings/phy/hisilicon,inno-usb2-phy.yaml
new file mode 100644 (file)
index 0000000..51ea0e5
--- /dev/null
@@ -0,0 +1,93 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/hisilicon,inno-usb2-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: HiSilicon INNO USB2 PHY
+
+maintainers:
+  - Pengcheng Li <lpc.li@hisilicon.com>
+
+description:
+  The INNO USB2 PHY device should be a child node of peripheral controller that
+  contains the PHY configuration register, and each device supports up to 2 PHY
+  ports which are represented as child nodes of INNO USB2 PHY device.
+
+properties:
+  compatible:
+    enum:
+      - hisilicon,hi3798cv200-usb2-phy
+      - hisilicon,hi3798mv100-usb2-phy
+      - hisilicon,inno-usb2-phy
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
+patternProperties:
+  "^phy@[0-1]$":
+    description: PHY port subnode
+    type: object
+    additionalProperties: false
+
+    properties:
+      reg:
+        maximum: 1
+
+      "#phy-cells":
+        const: 0
+
+      resets:
+        maxItems: 1
+
+    required:
+      - reg
+      - "#phy-cells"
+      - resets
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - resets
+  - "#address-cells"
+  - "#size-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/histb-clock.h>
+
+    usb2-phy@120 {
+        compatible = "hisilicon,hi3798cv200-usb2-phy";
+        reg = <0x120 0x4>;
+        clocks = <&crg HISTB_USB2_PHY1_REF_CLK>;
+        resets = <&crg 0xbc 4>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        phy@0 {
+            reg = <0>;
+            #phy-cells = <0>;
+            resets = <&crg 0xbc 8>;
+        };
+
+        phy@1 {
+            reg = <1>;
+            #phy-cells = <0>;
+            resets = <&crg 0xbc 9>;
+        };
+    };
diff --git a/Bindings/phy/hix5hd2-phy.txt b/Bindings/phy/hix5hd2-phy.txt
deleted file mode 100644 (file)
index 296168b..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Hisilicon hix5hd2 SATA PHY
------------------------
-
-Required properties:
-- compatible: should be "hisilicon,hix5hd2-sata-phy"
-- reg: offset and length of the PHY registers
-- #phy-cells: must be 0
-Refer to phy/phy-bindings.txt for the generic PHY binding properties
-
-Optional Properties:
-- hisilicon,peripheral-syscon: phandle of syscon used to control peripheral.
-- hisilicon,power-reg: offset and bit number within peripheral-syscon,
-       register of controlling sata power supply.
-
-Example:
-       sata_phy: phy@f9900000 {
-               compatible = "hisilicon,hix5hd2-sata-phy";
-               reg = <0xf9900000 0x10000>;
-               #phy-cells = <0>;
-               hisilicon,peripheral-syscon = <&peripheral_ctrl>;
-               hisilicon,power-reg = <0x8 10>;
-       };
diff --git a/Bindings/phy/img,pistachio-usb-phy.yaml b/Bindings/phy/img,pistachio-usb-phy.yaml
new file mode 100644 (file)
index 0000000..bcc19bc
--- /dev/null
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/img,pistachio-usb-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Imagination Pistachio USB PHY
+
+maintainers:
+  - Andrew Bresticker <abrestic@chromium.org>
+
+properties:
+  compatible:
+    const: img,pistachio-usb-phy
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: usb_phy
+
+  '#phy-cells':
+    const: 0
+
+  phy-supply:
+    description: USB VBUS supply. Must supply 5.0V.
+
+  img,refclk:
+    description:
+      Reference clock source for the USB PHY. See
+      <dt-bindings/phy/phy-pistachio-usb.h> for valid values.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  img,cr-top:
+    description: CR_TOP syscon phandle.
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+required:
+  - compatible
+  - clocks
+  - clock-names
+  - '#phy-cells'
+  - img,refclk
+  - img,cr-top
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/phy/phy-pistachio-usb.h>
+    #include <dt-bindings/clock/pistachio-clk.h>
+
+    usb-phy {
+        compatible = "img,pistachio-usb-phy";
+        clocks = <&clk_core CLK_USB_PHY>;
+        clock-names = "usb_phy";
+        #phy-cells = <0>;
+        phy-supply = <&usb_vbus>;
+        img,refclk = <REFCLK_CLK_CORE>;
+        img,cr-top = <&cr_top>;
+    };
diff --git a/Bindings/phy/keystone-usb-phy.txt b/Bindings/phy/keystone-usb-phy.txt
deleted file mode 100644 (file)
index 300830d..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-TI Keystone USB PHY
-
-Required properties:
- - compatible: should be "ti,keystone-usbphy".
- - #address-cells, #size-cells : should be '1' if the device has sub-nodes
-   with 'reg' property.
- - reg : Address and length of the usb phy control register set.
-
-The main purpose of this PHY driver is to enable the USB PHY reference clock
-gate on the Keystone SOC for both the USB2 and USB3 PHY. Otherwise it is just
-an NOP PHY driver.  Hence this node is referenced as both the usb2 and usb3
-phy node in the USB Glue layer driver node.
-
-usb_phy: usb_phy@2620738 {
-       compatible = "ti,keystone-usbphy";
-       #address-cells = <1>;
-       #size-cells = <1>;
-       reg = <0x2620738 32>;
-};
diff --git a/Bindings/phy/lantiq,ase-usb2-phy.yaml b/Bindings/phy/lantiq,ase-usb2-phy.yaml
new file mode 100644 (file)
index 0000000..99b5da7
--- /dev/null
@@ -0,0 +1,71 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/lantiq,ase-usb2-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Lantiq XWAY SoC RCU USB 1.1/2.0 PHY
+
+maintainers:
+  - Hauke Mehrtens <hauke@hauke-m.de>
+
+description:
+  This node has to be a sub node of the Lantiq RCU block.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - lantiq,ase-usb2-phy
+          - lantiq,danube-usb2-phy
+          - lantiq,xrx100-usb2-phy
+          - lantiq,xrx200-usb2-phy
+          - lantiq,xrx300-usb2-phy
+
+  reg:
+    items:
+      - description: Offset of the USB PHY configuration register
+      - description: Offset of the USB Analog configuration register
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: phy
+
+  resets:
+    minItems: 1
+    maxItems: 2
+
+  reset-names:
+    minItems: 1
+    items:
+      - enum: [ phy, ctrl ]
+      - const: ctrl
+
+  '#phy-cells':
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - resets
+  - reset-names
+  - '#phy-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    usb2-phy@18 {
+        compatible = "lantiq,xrx200-usb2-phy";
+        reg = <0x18 4>, <0x38 4>;
+        clocks = <&pmu 1>;
+        clock-names = "phy";
+        resets = <&reset1 4 4>, <&reset0 4 4>;
+        reset-names = "phy", "ctrl";
+        #phy-cells = <0>;
+    };
diff --git a/Bindings/phy/marvell,armada-375-usb-cluster.yaml b/Bindings/phy/marvell,armada-375-usb-cluster.yaml
new file mode 100644 (file)
index 0000000..1706c31
--- /dev/null
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/marvell,armada-375-usb-cluster.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Armada 375 USB Cluster
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+description:
+  Control register for the Armada 375 USB cluster, managing USB2 and USB3 features.
+
+properties:
+  compatible:
+    const: marvell,armada-375-usb-cluster
+
+  reg:
+    maxItems: 1
+
+  '#phy-cells':
+    description: Number of PHY cells in specifier. 1 for USB2, 2 for USB3.
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - '#phy-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    usbcluster: usb-cluster@18400 {
+        compatible = "marvell,armada-375-usb-cluster";
+        reg = <0x18400 0x4>;
+        #phy-cells = <1>;
+    };
diff --git a/Bindings/phy/marvell,armada-380-comphy.yaml b/Bindings/phy/marvell,armada-380-comphy.yaml
new file mode 100644 (file)
index 0000000..dcb4c00
--- /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/phy/marvell,armada-380-comphy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada 38x COMPHY controller
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+description:
+  This comphy controller can be found on Marvell Armada 38x. It provides a
+  number of shared PHYs used by various interfaces (network, sata, usb,
+  PCIe...).
+
+properties:
+  compatible:
+    items:
+      - const: marvell,armada-380-comphy
+
+  reg:
+    items:
+      - description: COMPHY register location and length
+      - description: Configuration register location and length
+
+  reg-names:
+    items:
+      - const: comphy
+      - const: conf
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+patternProperties:
+  '^phy@[0-5]$':
+    description: A COMPHY lane
+    type: object
+    additionalProperties: false
+
+    properties:
+      reg:
+        maximum: 1
+
+      '#phy-cells':
+        description: Input port index for the PHY lane
+        const: 1
+
+    required:
+      - reg
+      - '#phy-cells'
+
+required:
+  - compatible
+  - reg
+  - '#address-cells'
+  - '#size-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    comphy: phy@18300 {
+        compatible = "marvell,armada-380-comphy";
+        reg = <0x18300 0x100>, <0x18460 4>;
+        reg-names = "comphy", "conf";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        cpm_comphy0: phy@0 {
+            reg = <0>;
+            #phy-cells = <1>;
+        };
+
+        cpm_comphy1: phy@1 {
+            reg = <1>;
+            #phy-cells = <1>;
+        };
+    };
diff --git a/Bindings/phy/marvell,berlin2-sata-phy.yaml b/Bindings/phy/marvell,berlin2-sata-phy.yaml
new file mode 100644 (file)
index 0000000..6fc9ff9
--- /dev/null
@@ -0,0 +1,76 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/marvell,berlin2-sata-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Berlin SATA PHY
+
+maintainers:
+  - Antoine Tenart <atenart@kernel.org>
+
+properties:
+  compatible:
+    enum:
+      - marvell,berlin2-sata-phy
+      - marvell,berlin2q-sata-phy
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  '#phy-cells':
+    const: 1
+
+patternProperties:
+  '^sata-phy@[0-1]$':
+    description: A SATA PHY sub-node.
+    type: object
+    additionalProperties: false
+
+    properties:
+      reg:
+        maximum: 1
+        description: PHY index number.
+
+    required:
+      - reg
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - '#address-cells'
+  - '#size-cells'
+  - '#phy-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/berlin2q.h>
+
+    phy@f7e900a0 {
+        compatible = "marvell,berlin2q-sata-phy";
+        reg = <0xf7e900a0 0x200>;
+        clocks = <&chip CLKID_SATA>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        #phy-cells = <1>;
+
+        sata-phy@0 {
+            reg = <0>;
+        };
+
+        sata-phy@1 {
+            reg = <1>;
+        };
+    };
diff --git a/Bindings/phy/marvell,berlin2-usb-phy.yaml b/Bindings/phy/marvell,berlin2-usb-phy.yaml
new file mode 100644 (file)
index 0000000..b401e12
--- /dev/null
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/marvell,berlin2-usb-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Berlin USB PHY
+
+maintainers:
+  - Antoine Tenart <atenart@kernel.org>
+
+properties:
+  compatible:
+    enum:
+      - marvell,berlin2-usb-phy
+      - marvell,berlin2cd-usb-phy
+
+  reg:
+    maxItems: 1
+
+  "#phy-cells":
+    const: 0
+
+  resets:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - "#phy-cells"
+  - resets
+
+additionalProperties: false
+
+examples:
+  - |
+    usb-phy@f774000 {
+      compatible = "marvell,berlin2-usb-phy";
+      reg = <0xf774000 0x128>;
+      #phy-cells = <0>;
+      resets = <&chip 0x104 14>;
+    };
diff --git a/Bindings/phy/marvell,comphy-cp110.yaml b/Bindings/phy/marvell,comphy-cp110.yaml
new file mode 100644 (file)
index 0000000..c35d316
--- /dev/null
@@ -0,0 +1,167 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/marvell,comphy-cp110.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell MVEBU COMPHY Controller
+
+maintainers:
+  - Miquel Raynal <miquel.raynal@bootlin.com>
+
+description: >
+  COMPHY controllers can be found on the following Marvell MVEBU SoCs:
+
+    * Armada 7k/8k (on the CP110)
+    * Armada 3700
+
+  It provides a number of shared PHYs used by various interfaces (network, SATA,
+  USB, PCIe...).
+
+properties:
+  compatible:
+    enum:
+      - marvell,comphy-cp110
+      - marvell,comphy-a3700
+
+  reg:
+    minItems: 1
+    items:
+      - description: Generic COMPHY registers
+      - description: Lane 1 (PCIe/GbE) registers (Armada 3700)
+      - description: Lane 0 (USB3/GbE) registers (Armada 3700)
+      - description: Lane 2 (SATA/USB3) registers (Armada 3700)
+
+  reg-names:
+    minItems: 1
+    items:
+      - const: comphy
+      - const: lane1_pcie_gbe
+      - const: lane0_usb3_gbe
+      - const: lane2_sata_usb3
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  clocks:
+    minItems: 1
+    maxItems: 3
+
+  clock-names:
+    minItems: 1
+    maxItems: 3
+
+  marvell,system-controller:
+    description: Phandle to the Marvell system controller (CP110 only)
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+patternProperties:
+  '^phy@[0-5]$':
+    description: A COMPHY lane child node
+    type: object
+    additionalProperties: false
+
+    properties:
+      reg:
+        description: COMPHY lane number
+        maximum: 5
+
+      '#phy-cells':
+        const: 1
+
+      connector:
+        type: object
+
+    required:
+      - reg
+      - '#phy-cells'
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          const: marvell,comphy-a3700
+
+    then:
+      properties:
+        clocks:
+          maxItems: 1
+        clock-names:
+          const: xtal
+
+      required:
+        - reg-names
+
+    else:
+      properties:
+        clocks:
+          minItems: 3
+        clock-names:
+          items:
+            - const: mg_clk
+            - const: mg_core_clk
+            - const: axi_clk
+
+      required:
+        - marvell,system-controller
+
+examples:
+  - |
+    phy@120000 {
+        compatible = "marvell,comphy-cp110";
+        reg = <0x120000 0x6000>;
+        clocks = <&clk 1 5>, <&clk 1 6>, <&clk 1 18>;
+        clock-names = "mg_clk", "mg_core_clk", "axi_clk";
+        #address-cells = <1>;
+        #size-cells = <0>;
+        marvell,system-controller = <&syscon0>;
+
+        phy@0 {
+            reg = <0>;
+            #phy-cells = <1>;
+        };
+
+        phy@1 {
+            reg = <1>;
+            #phy-cells = <1>;
+        };
+    };
+
+  - |
+    phy@18300 {
+        compatible = "marvell,comphy-a3700";
+        reg = <0x18300 0x300>,
+              <0x1F000 0x400>,
+              <0x5C000 0x400>,
+              <0xe0178 0x8>;
+        reg-names = "comphy",
+                    "lane1_pcie_gbe",
+                    "lane0_usb3_gbe",
+                    "lane2_sata_usb3";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        comphy0: phy@0 {
+            reg = <0>;
+            #phy-cells = <1>;
+        };
+
+        comphy1: phy@1 {
+            reg = <1>;
+            #phy-cells = <1>;
+        };
+
+        comphy2: phy@2 {
+            reg = <2>;
+            #phy-cells = <1>;
+        };
+    };
diff --git a/Bindings/phy/marvell,mmp2-usb-phy.yaml b/Bindings/phy/marvell,mmp2-usb-phy.yaml
new file mode 100644 (file)
index 0000000..af1ae24
--- /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/phy/marvell,mmp2-usb-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell MMP2/PXA USB PHY
+
+maintainers:
+  - Lubomir Rintel <lkundrak@v3.sk>
+
+properties:
+  compatible:
+    enum:
+      - marvell,mmp2-usb-phy
+      - marvell,pxa910-usb-phy
+      - marvell,pxa168-usb-phy
+
+  reg:
+    maxItems: 1
+
+  "#phy-cells":
+    const: 0
+
+required:
+  - compatible
+  - "#phy-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    usbphy@d4207000 {
+        compatible = "marvell,mmp2-usb-phy";
+        reg = <0xd4207000 0x40>;
+        #phy-cells = <0>;
+    };
diff --git a/Bindings/phy/marvell,mvebu-sata-phy.yaml b/Bindings/phy/marvell,mvebu-sata-phy.yaml
new file mode 100644 (file)
index 0000000..81e9424
--- /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/phy/marvell,mvebu-sata-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell MVEBU SATA PHY
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+properties:
+  compatible:
+    const: marvell,mvebu-sata-phy
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: sata
+
+  '#phy-cells':
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - '#phy-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    sata-phy@84000 {
+        compatible = "marvell,mvebu-sata-phy";
+        reg = <0x84000 0x0334>;
+        clocks = <&gate_clk 15>;
+        clock-names = "sata";
+        #phy-cells = <0>;
+    };
index 3c28ec50f09794b4df31c5b7f5e64eae92937a25..286a4fcc977d093c3829ba27c61f5182d6472e5a 100644 (file)
@@ -72,11 +72,6 @@ allOf:
           contains:
             const: fsl,imx8qxp-mipi-dphy
     then:
-      properties:
-        assigned-clocks: false
-        assigned-clock-parents: false
-        assigned-clock-rates: false
-
       required:
         - fsl,syscon
 
diff --git a/Bindings/phy/motorola,cpcap-usb-phy.yaml b/Bindings/phy/motorola,cpcap-usb-phy.yaml
new file mode 100644 (file)
index 0000000..0febd04
--- /dev/null
@@ -0,0 +1,107 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/motorola,cpcap-usb-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Motorola CPCAP PMIC USB PHY
+
+maintainers:
+  - Tony Lindgren <tony@atomide.com>
+
+properties:
+  compatible:
+    enum:
+      - motorola,cpcap-usb-phy
+      - motorola,mapphone-cpcap-usb-phy
+
+  '#phy-cells':
+    const: 0
+
+  interrupts:
+    description: CPCAP PMIC interrupts used by the USB PHY
+    items:
+      - description: id_ground interrupt
+      - description: id_float interrupt
+      - description: se0conn interrupt
+      - description: vbusvld interrupt
+      - description: sessvld interrupt
+      - description: sessend interrupt
+      - description: se1 interrupt
+      - description: dm interrupt
+      - description: dp interrupt
+
+  interrupt-names:
+    description: Interrupt names
+    items:
+      - const: id_ground
+      - const: id_float
+      - const: se0conn
+      - const: vbusvld
+      - const: sessvld
+      - const: sessend
+      - const: se1
+      - const: dm
+      - const: dp
+
+  io-channels:
+    description: IIO ADC channels used by the USB PHY
+    items:
+      - description: vbus channel
+      - description: id channel
+
+  io-channel-names:
+    items:
+      - const: vbus
+      - const: id
+
+  vusb-supply: true
+
+  pinctrl-names:
+    items:
+      - const: default
+      - const: ulpi
+      - const: utmi
+      - const: uart
+
+  mode-gpios:
+    description: Optional GPIOs for configuring alternate modes
+    items:
+      - description: "mode selection GPIO #0"
+      - description: "mode selection GPIO #1"
+
+required:
+  - compatible
+  - '#phy-cells'
+  - interrupts-extended
+  - interrupt-names
+  - io-channels
+  - io-channel-names
+  - vusb-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    phy {
+        compatible = "motorola,mapphone-cpcap-usb-phy";
+        #phy-cells = <0>;
+        interrupts-extended = <
+            &cpcap 15 0 &cpcap 14 0 &cpcap 28 0 &cpcap 19 0
+            &cpcap 18 0 &cpcap 17 0 &cpcap 16 0 &cpcap 49 0
+            &cpcap 48 1
+        >;
+        interrupt-names = "id_ground", "id_float", "se0conn", "vbusvld",
+                          "sessvld", "sessend", "se1", "dm", "dp";
+        io-channels = <&cpcap_adc 2>, <&cpcap_adc 7>;
+        io-channel-names = "vbus", "id";
+        vusb-supply = <&vusb>;
+        pinctrl-0 = <&usb_gpio_mux_sel1 &usb_gpio_mux_sel2>;
+        pinctrl-1 = <&usb_ulpi_pins>;
+        pinctrl-2 = <&usb_utmi_pins>;
+        pinctrl-3 = <&uart3_pins>;
+        pinctrl-names = "default", "ulpi", "utmi", "uart";
+        mode-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>, <&gpio1 0 GPIO_ACTIVE_HIGH>;
+    };
diff --git a/Bindings/phy/motorola,mapphone-mdm6600.yaml b/Bindings/phy/motorola,mapphone-mdm6600.yaml
new file mode 100644 (file)
index 0000000..cb6544b
--- /dev/null
@@ -0,0 +1,81 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/motorola,mapphone-mdm6600.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Motorola Mapphone MDM6600 USB PHY
+
+maintainers:
+  - Tony Lindgren <tony@atomide.com>
+
+properties:
+  compatible:
+    items:
+      - const: motorola,mapphone-mdm6600
+
+  enable-gpios:
+    description: GPIO to enable the USB PHY
+    maxItems: 1
+
+  power-gpios:
+    description: GPIO to power on the device
+    maxItems: 1
+
+  reset-gpios:
+    description: GPIO to reset the device
+    maxItems: 1
+
+  motorola,mode-gpios:
+    description: Two GPIOs to configure MDM6600 USB start-up mode for normal mode versus USB flashing mode
+    items:
+      - description: normal mode select GPIO
+      - description: USB flashing mode select GPIO
+
+  motorola,cmd-gpios:
+    description: Three GPIOs to control the power state of the MDM6600
+    items:
+      - description: power state control GPIO 0
+      - description: power state control GPIO 1
+      - description: power state control GPIO 2
+
+  motorola,status-gpios:
+    description: Three GPIOs to read the power state of the MDM6600
+    items:
+      - description: power state read GPIO 0
+      - description: power state read GPIO 1
+      - description: power state read GPIO 2
+
+  '#phy-cells':
+    const: 0
+
+required:
+  - compatible
+  - enable-gpios
+  - power-gpios
+  - reset-gpios
+  - motorola,mode-gpios
+  - motorola,cmd-gpios
+  - motorola,status-gpios
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    usb-phy {
+        compatible = "motorola,mapphone-mdm6600";
+        enable-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;
+        power-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;
+        reset-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;
+        motorola,mode-gpios = <&gpio5 20 GPIO_ACTIVE_HIGH>,
+                              <&gpio5 21 GPIO_ACTIVE_HIGH>;
+        motorola,cmd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>,
+                              <&gpio4 8 GPIO_ACTIVE_HIGH>,
+                              <&gpio5 14 GPIO_ACTIVE_HIGH>;
+        motorola,status-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>,
+                                <&gpio2 21 GPIO_ACTIVE_HIGH>,
+                                <&gpio2 23 GPIO_ACTIVE_HIGH>;
+        #phy-cells = <0>;
+    };
diff --git a/Bindings/phy/phy-armada38x-comphy.txt b/Bindings/phy/phy-armada38x-comphy.txt
deleted file mode 100644 (file)
index 8b5a7a2..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-mvebu armada 38x comphy driver
-------------------------------
-
-This comphy controller can be found on Marvell Armada 38x. It provides a
-number of shared PHYs used by various interfaces (network, sata, usb,
-PCIe...).
-
-Required properties:
-
-- compatible: should be "marvell,armada-380-comphy"
-- reg: should contain the comphy register location and length.
-- #address-cells: should be 1.
-- #size-cells: should be 0.
-
-Optional properties:
-
-- reg-names: must be "comphy" as the first name, and "conf".
-- reg: must contain the comphy register location and length as the first
-    pair, followed by an optional configuration register address and
-    length pair.
-
-A sub-node is required for each comphy lane provided by the comphy.
-
-Required properties (child nodes):
-
-- reg: comphy lane number.
-- #phy-cells : from the generic phy bindings, must be 1. Defines the
-               input port to use for a given comphy lane.
-
-Example:
-
-       comphy: phy@18300 {
-               compatible = "marvell,armada-380-comphy";
-               reg-names = "comphy", "conf";
-               reg = <0x18300 0x100>, <0x18460 4>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               cpm_comphy0: phy@0 {
-                       reg = <0>;
-                       #phy-cells = <1>;
-               };
-
-               cpm_comphy1: phy@1 {
-                       reg = <1>;
-                       #phy-cells = <1>;
-               };
-       };
diff --git a/Bindings/phy/phy-ath79-usb.txt b/Bindings/phy/phy-ath79-usb.txt
deleted file mode 100644 (file)
index c3a29c5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-* Atheros AR71XX/9XXX USB PHY
-
-Required properties:
-- compatible: "qca,ar7100-usb-phy"
-- #phys-cells: should be 0
-- reset-names: "phy"[, "suspend-override"]
-- resets: references to the reset controllers
-
-Example:
-
-       usb-phy {
-               compatible = "qca,ar7100-usb-phy";
-
-               reset-names = "phy", "suspend-override";
-               resets = <&rst 4>, <&rst 3>;
-
-               #phy-cells = <0>;
-       };
diff --git a/Bindings/phy/phy-cpcap-usb.txt b/Bindings/phy/phy-cpcap-usb.txt
deleted file mode 100644 (file)
index 2eb9b2b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-Motorola CPCAP PMIC USB PHY binding
-
-Required properties:
-compatible: Shall be either "motorola,cpcap-usb-phy" or
-           "motorola,mapphone-cpcap-usb-phy"
-#phy-cells: Shall be 0
-interrupts: CPCAP PMIC interrupts used by the USB PHY
-interrupt-names: Interrupt names
-io-channels: IIO ADC channels used by the USB PHY
-io-channel-names: IIO ADC channel names
-vusb-supply: Regulator for the PHY
-
-Optional properties:
-pinctrl: Optional alternate pin modes for the PHY
-pinctrl-names: Names for optional pin modes
-mode-gpios: Optional GPIOs for configuring alternate modes
-
-Example:
-cpcap_usb2_phy: phy {
-       compatible = "motorola,mapphone-cpcap-usb-phy";
-       pinctrl-0 = <&usb_gpio_mux_sel1 &usb_gpio_mux_sel2>;
-       pinctrl-1 = <&usb_ulpi_pins>;
-       pinctrl-2 = <&usb_utmi_pins>;
-       pinctrl-3 = <&uart3_pins>;
-       pinctrl-names = "default", "ulpi", "utmi", "uart";
-       #phy-cells = <0>;
-       interrupts-extended = <
-               &cpcap 15 0 &cpcap 14 0 &cpcap 28 0 &cpcap 19 0
-               &cpcap 18 0 &cpcap 17 0 &cpcap 16 0 &cpcap 49 0
-               &cpcap 48 1
-       >;
-       interrupt-names =
-               "id_ground", "id_float", "se0conn", "vbusvld",
-               "sessvld", "sessend", "se1", "dm", "dp";
-       mode-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH
-                     &gpio1 0 GPIO_ACTIVE_HIGH>;
-       io-channels = <&cpcap_adc 2>, <&cpcap_adc 7>;
-       io-channel-names = "vbus", "id";
-       vusb-supply = <&vusb>;
-};
diff --git a/Bindings/phy/phy-da8xx-usb.txt b/Bindings/phy/phy-da8xx-usb.txt
deleted file mode 100644 (file)
index c26478b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-TI DA8xx/OMAP-L1xx/AM18xx USB PHY
-
-Required properties:
- - compatible: must be "ti,da830-usb-phy".
- - #phy-cells: must be 1.
-
-This device controls the PHY for both the USB 1.1 OHCI and USB 2.0 OTG
-controllers on DA8xx SoCs. Consumers of this device should use index 0 for
-the USB 2.0 phy device and index 1 for the USB 1.1 phy device.
-
-It also requires a "syscon" node with compatible = "ti,da830-cfgchip", "syscon"
-to access the CFGCHIP2 register.
-
-Example:
-
-       cfgchip: cfgchip@1417c {
-               compatible = "ti,da830-cfgchip", "syscon";
-               reg = <0x1417c 0x14>;
-       };
-
-       usb_phy: usb-phy {
-               compatible = "ti,da830-usb-phy";
-               #phy-cells = <1>;
-       };
-
-       usb20: usb@200000 {
-               compatible = "ti,da830-musb";
-               reg = <0x200000 0x1000>;
-               interrupts = <58>;
-               phys = <&usb_phy 0>;
-               phy-names = "usb-phy";
-       };
-
-       usb11: usb@225000 {
-               compatible = "ti,da830-ohci";
-               reg = <0x225000 0x1000>;
-               interrupts = <59>;
-               phys = <&usb_phy 1>;
-               phy-names = "usb-phy";
-       };
diff --git a/Bindings/phy/phy-hi6220-usb.txt b/Bindings/phy/phy-hi6220-usb.txt
deleted file mode 100644 (file)
index f17a56e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Hisilicon hi6220 usb PHY
------------------------
-
-Required properties:
-- compatible: should be "hisilicon,hi6220-usb-phy"
-- #phy-cells: must be 0
-- hisilicon,peripheral-syscon: phandle of syscon used to control phy.
-Refer to phy/phy-bindings.txt for the generic PHY binding properties
-
-Example:
-       usb_phy: usbphy {
-               compatible = "hisilicon,hi6220-usb-phy";
-               #phy-cells = <0>;
-               phy-supply = <&fixed_5v_hub>;
-               hisilicon,peripheral-syscon = <&sys_ctrl>;
-       };
diff --git a/Bindings/phy/phy-hisi-inno-usb2.txt b/Bindings/phy/phy-hisi-inno-usb2.txt
deleted file mode 100644 (file)
index 104953e..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-Device tree bindings for HiSilicon INNO USB2 PHY
-
-Required properties:
-- compatible: Should be one of the following strings:
-       "hisilicon,inno-usb2-phy",
-       "hisilicon,hi3798cv200-usb2-phy".
-- reg: Should be the address space for PHY configuration register in peripheral
-  controller, e.g. PERI_USB0 for USB 2.0 PHY01 on Hi3798CV200 SoC.
-- clocks: The phandle and clock specifier pair for INNO USB2 PHY device
-  reference clock.
-- resets: The phandle and reset specifier pair for INNO USB2 PHY device reset
-  signal.
-- #address-cells: Must be 1.
-- #size-cells: Must be 0.
-
-The INNO USB2 PHY device should be a child node of peripheral controller that
-contains the PHY configuration register, and each device supports up to 2 PHY
-ports which are represented as child nodes of INNO USB2 PHY device.
-
-Required properties for PHY port node:
-- reg: The PHY port instance number.
-- #phy-cells: Defined by generic PHY bindings.  Must be 0.
-- resets: The phandle and reset specifier pair for PHY port reset signal.
-
-Refer to phy/phy-bindings.txt for the generic PHY binding properties
-
-Example:
-
-perictrl: peripheral-controller@8a20000 {
-       compatible = "hisilicon,hi3798cv200-perictrl", "simple-mfd";
-       reg = <0x8a20000 0x1000>;
-       #address-cells = <1>;
-       #size-cells = <1>;
-       ranges = <0x0 0x8a20000 0x1000>;
-
-       usb2_phy1: usb2-phy@120 {
-               compatible = "hisilicon,hi3798cv200-usb2-phy";
-               reg = <0x120 0x4>;
-               clocks = <&crg HISTB_USB2_PHY1_REF_CLK>;
-               resets = <&crg 0xbc 4>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               usb2_phy1_port0: phy@0 {
-                       reg = <0>;
-                       #phy-cells = <0>;
-                       resets = <&crg 0xbc 8>;
-               };
-
-               usb2_phy1_port1: phy@1 {
-                       reg = <1>;
-                       #phy-cells = <0>;
-                       resets = <&crg 0xbc 9>;
-               };
-       };
-
-       usb2_phy2: usb2-phy@124 {
-               compatible = "hisilicon,hi3798cv200-usb2-phy";
-               reg = <0x124 0x4>;
-               clocks = <&crg HISTB_USB2_PHY2_REF_CLK>;
-               resets = <&crg 0xbc 6>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               usb2_phy2_port0: phy@0 {
-                       reg = <0>;
-                       #phy-cells = <0>;
-                       resets = <&crg 0xbc 10>;
-               };
-       };
-};
diff --git a/Bindings/phy/phy-lantiq-rcu-usb2.txt b/Bindings/phy/phy-lantiq-rcu-usb2.txt
deleted file mode 100644 (file)
index 643948b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-Lantiq XWAY SoC RCU USB 1.1/2.0 PHY binding
-===========================================
-
-This binding describes the USB PHY hardware provided by the RCU module on the
-Lantiq XWAY SoCs.
-
-This node has to be a sub node of the Lantiq RCU block.
-
--------------------------------------------------------------------------------
-Required properties (controller (parent) node):
-- compatible   : Should be one of
-                       "lantiq,ase-usb2-phy"
-                       "lantiq,danube-usb2-phy"
-                       "lantiq,xrx100-usb2-phy"
-                       "lantiq,xrx200-usb2-phy"
-                       "lantiq,xrx300-usb2-phy"
-- reg          : Defines the following sets of registers in the parent
-                 syscon device
-                       - Offset of the USB PHY configuration register
-                       - Offset of the USB Analog configuration
-                         register (only for xrx200 and xrx200)
-- clocks       : References to the (PMU) "phy" clk gate.
-- clock-names  : Must be "phy"
-- resets       : References to the RCU USB configuration reset bits.
-- reset-names  : Must be one of the following:
-                       "phy" (optional)
-                       "ctrl" (shared)
-
--------------------------------------------------------------------------------
-Example for the USB PHYs on an xRX200 SoC:
-       usb_phy0: usb2-phy@18 {
-               compatible = "lantiq,xrx200-usb2-phy";
-               reg = <0x18 4>, <0x38 4>;
-
-               clocks = <&pmu PMU_GATE_USB0_PHY>;
-               clock-names = "phy";
-               resets = <&reset1 4 4>, <&reset0 4 4>;
-               reset-names = "phy", "ctrl";
-               #phy-cells = <0>;
-       };
diff --git a/Bindings/phy/phy-lpc18xx-usb-otg.txt b/Bindings/phy/phy-lpc18xx-usb-otg.txt
deleted file mode 100644 (file)
index 3bb821c..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-NXP LPC18xx/43xx internal USB OTG PHY binding
----------------------------------------------
-
-This file contains documentation for the internal USB OTG PHY found
-in NXP LPC18xx and LPC43xx SoCs.
-
-Required properties:
-- compatible   : must be "nxp,lpc1850-usb-otg-phy"
-- clocks       : must be exactly one entry
-See: Documentation/devicetree/bindings/clock/clock-bindings.txt
-- #phy-cells   : must be 0 for this phy
-See: Documentation/devicetree/bindings/phy/phy-bindings.txt
-
-The phy node must be a child of the creg syscon node.
-
-Example:
-creg: syscon@40043000 {
-       compatible = "nxp,lpc1850-creg", "syscon", "simple-mfd";
-       reg = <0x40043000 0x1000>;
-
-       usb0_otg_phy: phy {
-               compatible = "nxp,lpc1850-usb-otg-phy";
-               clocks = <&ccu1 CLK_USB0>;
-               #phy-cells = <0>;
-       };
-};
diff --git a/Bindings/phy/phy-mapphone-mdm6600.txt b/Bindings/phy/phy-mapphone-mdm6600.txt
deleted file mode 100644 (file)
index 29427d4..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-Device tree binding documentation for Motorola Mapphone MDM6600 USB PHY
-
-Required properties:
-- compatible           Must be "motorola,mapphone-mdm6600"
-- enable-gpios         GPIO to enable the USB PHY
-- power-gpios          GPIO to power on the device
-- reset-gpios          GPIO to reset the device
-- motorola,mode-gpios  Two GPIOs to configure MDM6600 USB start-up mode for
-                       normal mode versus USB flashing mode
-- motorola,cmd-gpios   Three GPIOs to control the power state of the MDM6600
-- motorola,status-gpios        Three GPIOs to read the power state of the MDM6600
-
-Example:
-
-usb-phy {
-       compatible = "motorola,mapphone-mdm6600";
-       enable-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;
-       power-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;
-       reset-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;
-       motorola,mode-gpios = <&gpio5 20 GPIO_ACTIVE_HIGH>,
-                             <&gpio5 21 GPIO_ACTIVE_HIGH>;
-       motorola,cmd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>,
-                            <&gpio4 8 GPIO_ACTIVE_HIGH>,
-                            <&gpio5 14 GPIO_ACTIVE_HIGH>;
-       motorola,status-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>,
-                               <&gpio2 21 GPIO_ACTIVE_HIGH>,
-                               <&gpio2 23 GPIO_ACTIVE_HIGH>;
-       #phy-cells = <0>;
-};
diff --git a/Bindings/phy/phy-mvebu-comphy.txt b/Bindings/phy/phy-mvebu-comphy.txt
deleted file mode 100644 (file)
index 5ffd0f5..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-MVEBU comphy drivers
---------------------
-
-COMPHY controllers can be found on the following Marvell MVEBU SoCs:
-* Armada 7k/8k (on the CP110)
-* Armada 3700
-It provides a number of shared PHYs used by various interfaces (network, SATA,
-USB, PCIe...).
-
-Required properties:
-
-- compatible: should be one of:
-  * "marvell,comphy-cp110" for Armada 7k/8k
-  * "marvell,comphy-a3700" for Armada 3700
-- reg: should contain the COMPHY register(s) location(s) and length(s).
-  * 1 entry for Armada 7k/8k
-  * 4 entries for Armada 3700 along with the corresponding reg-names
-    properties, memory areas are:
-    * Generic COMPHY registers
-    * Lane 1 (PCIe/GbE)
-    * Lane 0 (USB3/GbE)
-    * Lane 2 (SATA/USB3)
-- marvell,system-controller: should contain a phandle to the system
-                            controller node (only for Armada 7k/8k)
-- #address-cells: should be 1.
-- #size-cells: should be 0.
-
-Optional properlties:
-
-- clocks: pointers to the reference clocks for this device (CP110 only),
-          consequently: MG clock, MG Core clock, AXI clock.
-- clock-names: names of used clocks for CP110 only, must be :
-               "mg_clk", "mg_core_clk" and "axi_clk".
-
-A sub-node is required for each comphy lane provided by the comphy.
-
-Required properties (child nodes):
-
-- reg: COMPHY lane number.
-- #phy-cells : from the generic PHY bindings, must be 1. Defines the
-               input port to use for a given comphy lane.
-
-Examples:
-
-       CP11X_LABEL(comphy): phy@120000 {
-               compatible = "marvell,comphy-cp110";
-               reg = <0x120000 0x6000>;
-               marvell,system-controller = <&CP11X_LABEL(syscon0)>;
-               clocks = <&CP11X_LABEL(clk) 1 5>, <&CP11X_LABEL(clk) 1 6>,
-                        <&CP11X_LABEL(clk) 1 18>;
-               clock-names = "mg_clk", "mg_core_clk", "axi_clk";
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               CP11X_LABEL(comphy0): phy@0 {
-                       reg = <0>;
-                       #phy-cells = <1>;
-               };
-
-               CP11X_LABEL(comphy1): phy@1 {
-                       reg = <1>;
-                       #phy-cells = <1>;
-               };
-       };
-
-       comphy: phy@18300 {
-               compatible = "marvell,comphy-a3700";
-               reg = <0x18300 0x300>,
-               <0x1F000 0x400>,
-               <0x5C000 0x400>,
-               <0xe0178 0x8>;
-               reg-names = "comphy",
-               "lane1_pcie_gbe",
-               "lane0_usb3_gbe",
-               "lane2_sata_usb3";
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-
-               comphy0: phy@0 {
-                       reg = <0>;
-                       #phy-cells = <1>;
-               };
-
-               comphy1: phy@1 {
-                       reg = <1>;
-                       #phy-cells = <1>;
-               };
-
-               comphy2: phy@2 {
-                       reg = <2>;
-                       #phy-cells = <1>;
-               };
-       };
diff --git a/Bindings/phy/phy-mvebu.txt b/Bindings/phy/phy-mvebu.txt
deleted file mode 100644 (file)
index 64afdd1..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-* Marvell MVEBU SATA PHY
-
-Power control for the SATA phy found on Marvell MVEBU SoCs.
-
-This document extends the binding described in phy-bindings.txt
-
-Required properties :
-
- - reg            : Offset and length of the register set for the SATA device
- - compatible     : Should be "marvell,mvebu-sata-phy"
- - clocks         : phandle of clock and specifier that supplies the device
- - clock-names    : Should be "sata"
-
-Example:
-               sata-phy@84000 {
-                       compatible = "marvell,mvebu-sata-phy";
-                       reg = <0x84000 0x0334>;
-                       clocks = <&gate_clk 15>;
-                       clock-names = "sata";
-                       #phy-cells = <0>;
-               };
-
-Armada 375 USB cluster
-----------------------
-
-Armada 375 comes with an USB2 host and device controller and an USB3
-controller. The USB cluster control register allows to manage common
-features of both USB controllers.
-
-Required properties:
-
-- compatible: "marvell,armada-375-usb-cluster"
-- reg: Should contain usb cluster register location and length.
-- #phy-cells : from the generic phy bindings, must be 1. Possible
-values are 1 (USB2), 2 (USB3).
-
-Example:
-               usbcluster: usb-cluster@18400 {
-                       compatible = "marvell,armada-375-usb-cluster";
-                       reg = <0x18400 0x4>;
-                       #phy-cells = <1>
-               };
diff --git a/Bindings/phy/phy-pxa-usb.txt b/Bindings/phy/phy-pxa-usb.txt
deleted file mode 100644 (file)
index d80e36a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-Marvell PXA USB PHY
--------------------
-
-Required properties:
-- compatible: one of: "marvell,mmp2-usb-phy", "marvell,pxa910-usb-phy",
-       "marvell,pxa168-usb-phy",
-- #phy-cells: must be 0
-
-Example:
-       usb-phy: usbphy@d4207000 {
-               compatible = "marvell,mmp2-usb-phy";
-               reg = <0xd4207000 0x40>;
-               #phy-cells = <0>;
-               status = "okay";
-       };
-
-This document explains the device tree binding. For general
-information about PHY subsystem refer to Documentation/driver-api/phy/phy.rst
diff --git a/Bindings/phy/pistachio-usb-phy.txt b/Bindings/phy/pistachio-usb-phy.txt
deleted file mode 100644 (file)
index c7970c0..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-IMG Pistachio USB PHY
-=====================
-
-Required properties:
---------------------
- - compatible: Must be "img,pistachio-usb-phy".
- - #phy-cells: Must be 0.  See ./phy-bindings.txt for details.
- - clocks: Must contain an entry for each entry in clock-names.
-   See ../clock/clock-bindings.txt for details.
- - clock-names: Must include "usb_phy".
- - img,cr-top: Must contain a phandle to the CR_TOP syscon node.
- - img,refclk: Indicates the reference clock source for the USB PHY.
-   See <dt-bindings/phy/phy-pistachio-usb.h> for a list of valid values.
-
-Optional properties:
---------------------
- - phy-supply: USB VBUS supply.  Must supply 5.0V.
-
-Example:
---------
-usb_phy: usb-phy {
-       compatible = "img,pistachio-usb-phy";
-       clocks = <&clk_core CLK_USB_PHY>;
-       clock-names = "usb_phy";
-       phy-supply = <&usb_vbus>;
-       img,refclk = <REFCLK_CLK_CORE>;
-       img,cr-top = <&cr_top>;
-       #phy-cells = <0>;
-};
diff --git a/Bindings/phy/qca,ar7100-usb-phy.yaml b/Bindings/phy/qca,ar7100-usb-phy.yaml
new file mode 100644 (file)
index 0000000..0296655
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/qca,ar7100-usb-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atheros AR71XX/9XXX USB PHY
+
+maintainers:
+  - Alban Bedel <albeu@free.fr>
+
+properties:
+  compatible:
+    items:
+      - const: qca,ar7100-usb-phy
+
+  reset-names:
+    description: Names of reset lines in order.
+    minItems: 1
+    items:
+      - const: phy
+      - const: suspend-override
+
+  resets:
+    description: References to the reset controllers.
+    minItems: 1
+    items:
+      - description: Reset controller for phy
+      - description: Reset controller for suspend-override
+
+  '#phy-cells':
+    const: 0
+
+required:
+  - compatible
+  - reset-names
+  - resets
+  - '#phy-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    usb-phy {
+        compatible = "qca,ar7100-usb-phy";
+        reset-names = "phy", "suspend-override";
+        resets = <&rst 4>, <&rst 3>;
+        #phy-cells = <0>;
+    };
diff --git a/Bindings/phy/qcom,m31-eusb2-phy.yaml b/Bindings/phy/qcom,m31-eusb2-phy.yaml
new file mode 100644 (file)
index 0000000..c84c62d
--- /dev/null
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/qcom,m31-eusb2-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm M31 eUSB2 phy
+
+maintainers:
+  - Wesley Cheng <quic_wcheng@quicinc.com>
+
+description:
+  M31 based eUSB2 controller, which supports LS/FS/HS usb connectivity
+  on Qualcomm chipsets.  It is paired with a eUSB2 repeater.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - qcom,sm8750-m31-eusb2-phy
+
+  reg:
+    maxItems: 1
+
+  "#phy-cells":
+    const: 0
+
+  clocks:
+    items:
+      - description: reference clock
+
+  clock-names:
+    items:
+      - const: ref
+
+  resets:
+    maxItems: 1
+
+  phys:
+    maxItems: 1
+    description:
+      Phandle to eUSB2 repeater
+
+  vdd-supply:
+    description:
+      Phandle to 0.88V regulator supply to PHY digital circuit.
+
+  vdda12-supply:
+    description:
+      Phandle to 1.2V regulator supply to PHY refclk pll block.
+
+required:
+  - compatible
+  - reg
+  - "#phy-cells"
+  - clocks
+  - clock-names
+  - resets
+  - vdd-supply
+  - vdda12-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    usb_1_hsphy: phy@88e3000 {
+        compatible = "qcom,sm8750-m31-eusb2-phy";
+        reg = <0x88e3000 0x29c>;
+
+        clocks = <&tcsrcc_usb2_clkref_en>;
+        clock-names = "ref";
+
+        resets = <&gcc_qusb2phy_prim_bcr>;
+
+        #phy-cells = <0>;
+
+        vdd-supply = <&vreg_l2d_0p88>;
+        vdda12-supply = <&vreg_l3g_1p2>;
+    };
index 2c6c9296e4c0d3219dd446d90e954c97cff32284..b6f140bf5b3b2f79b5c96e591ec0edb76cd45fa5 100644 (file)
@@ -145,6 +145,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,qcs615-qmp-gen3x1-pcie-phy
               - qcom,sar2130p-qmp-gen3x2-pcie-phy
               - qcom,sc8180x-qmp-pcie-phy
               - qcom,sdm845-qhp-pcie-phy
@@ -175,7 +176,8 @@ allOf:
         compatible:
           contains:
             enum:
-              - qcom,qcs615-qmp-gen3x1-pcie-phy
+              - qcom,sa8775p-qmp-gen4x2-pcie-phy
+              - qcom,sa8775p-qmp-gen4x4-pcie-phy
               - qcom,sc8280xp-qmp-gen3x1-pcie-phy
               - qcom,sc8280xp-qmp-gen3x2-pcie-phy
               - qcom,sc8280xp-qmp-gen3x4-pcie-phy
@@ -197,8 +199,6 @@ allOf:
           contains:
             enum:
               - qcom,qcs8300-qmp-gen4x2-pcie-phy
-              - qcom,sa8775p-qmp-gen4x2-pcie-phy
-              - qcom,sa8775p-qmp-gen4x4-pcie-phy
     then:
       properties:
         clocks:
index 358a6736a951ca5db7cff7385b3657976a667358..38ce04c35d945d0d8d319191c241920810ee9005 100644 (file)
@@ -29,6 +29,7 @@ properties:
       - qcom,sm8450-qmp-usb3-dp-phy
       - qcom,sm8550-qmp-usb3-dp-phy
       - qcom,sm8650-qmp-usb3-dp-phy
+      - qcom,sm8750-qmp-usb3-dp-phy
       - qcom,x1e80100-qmp-usb3-dp-phy
 
   reg:
@@ -133,6 +134,7 @@ allOf:
             - qcom,sm6350-qmp-usb3-dp-phy
             - qcom,sm8550-qmp-usb3-dp-phy
             - qcom,sm8650-qmp-usb3-dp-phy
+            - qcom,sm8750-qmp-usb3-dp-phy
             - qcom,x1e80100-qmp-usb3-dp-phy
     then:
       required:
index 142b3c8839d62d91377061ade3a7c400eb970609..854f70af0a6c1ff93615fa8dc1031b4c1ecc2e71 100644 (file)
@@ -17,6 +17,7 @@ properties:
     oneOf:
       - items:
           - enum:
+              - qcom,milos-snps-eusb2-phy
               - qcom,sar2130p-snps-eusb2-phy
               - qcom,sdx75-snps-eusb2-phy
               - qcom,sm8650-snps-eusb2-phy
index d16a543a784887eabc69faae2233057c4554be31..27f064a71c9fb8cb60e8333fb285f0510a4af94f 100644 (file)
@@ -39,21 +39,18 @@ properties:
     description: High-Speed disconnect threshold
     minimum: 0
     maximum: 7
-    default: 0
 
   qcom,tune-usb2-amplitude:
     $ref: /schemas/types.yaml#/definitions/uint8
     description: High-Speed transmit amplitude
     minimum: 0
     maximum: 15
-    default: 8
 
   qcom,tune-usb2-preem:
     $ref: /schemas/types.yaml#/definitions/uint8
     description: High-Speed TX pre-emphasis tuning
     minimum: 0
     maximum: 7
-    default: 5
 
 required:
   - compatible
index 2822dce8d9f405b199ace979cae0e438152cdd46..f45c5f039ae8f0b0d0d64fe0c5748f2ec504c878 100644 (file)
@@ -40,6 +40,10 @@ properties:
               - renesas,usb2-phy-r9a07g054 # RZ/V2L
           - const: renesas,rzg2l-usb2-phy
 
+      - items:
+          - const: renesas,usb2-phy-r9a09g056 # RZ/V2N
+          - const: renesas,usb2-phy-r9a09g057
+
   reg:
     maxItems: 1
 
index b2250e4a6b1b1ae072bc8e10e53528a4ca0e4a5e..16967ef8e9ecc09e24a995fc041ae3735334d98d 100644 (file)
@@ -29,6 +29,7 @@ properties:
       - samsung,s5pv210-mipi-video-phy
       - samsung,exynos5420-mipi-video-phy
       - samsung,exynos5433-mipi-video-phy
+      - samsung,exynos7870-mipi-video-phy
 
   "#phy-cells":
     const: 1
@@ -46,19 +47,20 @@ properties:
     deprecated: true
     description:
       Phandle to PMU system controller interface, valid for
-      samsung,exynos5433-mipi-video-phy (if not a child of PMU).
+      samsung,exynos5433-mipi-video-phy and samsung,exynos7870-mipi-video-phy
+      (if not a child of PMU).
 
   samsung,disp-sysreg:
     $ref: /schemas/types.yaml#/definitions/phandle
     description:
       Phandle to DISP system controller interface, valid for
-      samsung,exynos5433-mipi-video-phy.
+      samsung,exynos5433-mipi-video-phy and samsung,exynos7870-mipi-video-phy.
 
   samsung,cam0-sysreg:
     $ref: /schemas/types.yaml#/definitions/phandle
     description:
       Phandle to CAM0 system controller interface, valid for
-      samsung,exynos5433-mipi-video-phy.
+      samsung,exynos5433-mipi-video-phy and samsung,exynos7870-mipi-video-phy.
 
   samsung,cam1-sysreg:
     $ref: /schemas/types.yaml#/definitions/phandle
@@ -84,7 +86,13 @@ allOf:
         samsung,disp-sysreg: false
         samsung,cam0-sysreg: false
         samsung,cam1-sysreg: false
-    else:
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos5433-mipi-video-phy
+    then:
       properties:
         syscon: false
       required:
@@ -92,6 +100,19 @@ allOf:
         - samsung,cam0-sysreg
         - samsung,cam1-sysreg
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos7870-mipi-video-phy
+    then:
+      properties:
+        syscon: false
+        samsung,cam1-sysreg: false
+      required:
+        - samsung,disp-sysreg
+        - samsung,cam0-sysreg
+
 additionalProperties: false
 
 examples:
index cc60d2f6f70e32ea745d523c8a74022e4fb747d2..e906403208c02951ff2bf5ed8420d53ad70eb29c 100644 (file)
@@ -33,6 +33,7 @@ properties:
       - samsung,exynos7-usbdrd-phy
       - samsung,exynos7870-usbdrd-phy
       - samsung,exynos850-usbdrd-phy
+      - samsung,exynos990-usbdrd-phy
 
   clocks:
     minItems: 1
@@ -217,6 +218,7 @@ allOf:
               - samsung,exynos5420-usbdrd-phy
               - samsung,exynos7870-usbdrd-phy
               - samsung,exynos850-usbdrd-phy
+              - samsung,exynos990-usbdrd-phy
     then:
       properties:
         clocks:
diff --git a/Bindings/phy/st,spear1310-miphy.yaml b/Bindings/phy/st,spear1310-miphy.yaml
new file mode 100644 (file)
index 0000000..32f8161
--- /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/phy/st,spear1310-miphy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ST SPEAr miphy
+
+maintainers:
+  - Pratyush Anand <pratyush.anand@gmail.com>
+
+description:
+  ST Microelectronics SPEAr miphy is a phy controller supporting PCIe and SATA.
+
+properties:
+  compatible:
+    enum:
+      - st,spear1310-miphy
+      - st,spear1340-miphy
+
+  reg:
+    maxItems: 1
+
+  misc:
+    description: Phandle for the syscon node to access misc registers.
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+  '#phy-cells':
+    description: >
+      Cell[0] indicates interface type: 0 = SATA, 1 = PCIe.
+    const: 1
+
+  phy-id:
+    description: Instance id of the phy. Required when multiple PHYs are present.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - misc
+  - '#phy-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    miphy@1000 {
+        compatible = "st,spear1310-miphy";
+        reg = <0x1000 0x100>;
+        misc = <&syscon>;
+        #phy-cells = <1>;
+        phy-id = <0>;
+    };
diff --git a/Bindings/phy/st-spear-miphy.txt b/Bindings/phy/st-spear-miphy.txt
deleted file mode 100644 (file)
index 2a6bfdc..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-ST SPEAr miphy DT details
-=========================
-
-ST Microelectronics SPEAr miphy is a phy controller supporting PCIe and SATA.
-
-Required properties:
-- compatible : should be "st,spear1310-miphy" or "st,spear1340-miphy"
-- reg : offset and length of the PHY register set.
-- misc: phandle for the syscon node to access misc registers
-- #phy-cells : from the generic PHY bindings, must be 1.
-       - cell[1]: 0 if phy used for SATA, 1 for PCIe.
-
-Optional properties:
-- phy-id: Instance id of the phy. Only required when there are multiple phys
-  present on a implementation.
diff --git a/Bindings/phy/ti,da830-usb-phy.yaml b/Bindings/phy/ti,da830-usb-phy.yaml
new file mode 100644 (file)
index 0000000..e168cbc
--- /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/phy/ti,da830-usb-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI DA8xx/OMAP-L1xx/AM18xx USB PHY
+
+maintainers:
+  - David Lechner <david@lechnology.com>
+
+description: >
+  This device controls the PHY for both the USB 1.1 OHCI and USB 2.0 OTG
+  controllers on DA8xx SoCs.
+
+  It also requires a "syscon" node with compatible = "ti,da830-cfgchip", "syscon"
+  to access the CFGCHIP2 register.
+
+properties:
+  compatible:
+    items:
+      - const: ti,da830-usb-phy
+
+  '#phy-cells':
+    const: 1
+    description:
+      Consumers of this device should use index 0 for the USB 2.0 phy device and
+      index 1 for the USB 1.1 phy device.
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: usb0_clk48
+      - const: usb1_clk48
+
+required:
+  - compatible
+  - '#phy-cells'
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    usb-phy {
+        compatible = "ti,da830-usb-phy";
+        #phy-cells = <1>;
+        clocks = <&usb_phy_clk 0>, <&usb_phy_clk 1>;
+        clock-names = "usb0_clk48", "usb1_clk48";
+    };
diff --git a/Bindings/phy/ti,dm8168-usb-phy.yaml b/Bindings/phy/ti,dm8168-usb-phy.yaml
new file mode 100644 (file)
index 0000000..673dc1d
--- /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/phy/ti,dm8168-usb-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI DM8168 USB PHY
+
+maintainers:
+  - Tony Lindgren <tony@atomide.com>
+
+properties:
+  compatible:
+    const: ti,dm8168-usb-phy
+
+  reg:
+    maxItems: 1
+
+  reg-names:
+    items:
+      - const: phy
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: refclk
+
+  '#phy-cells':
+    const: 0
+
+  syscon:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: Phandle for the syscon node to access misc registers.
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - clocks
+  - clock-names
+  - '#phy-cells'
+  - syscon
+
+additionalProperties: false
+
+examples:
+  - |
+    usb-phy@20 {
+        compatible = "ti,dm8168-usb-phy";
+        reg = <0x20 0x8>;
+        reg-names = "phy";
+        clocks = <&main_fapll 6>;
+        clock-names = "refclk";
+        #phy-cells = <0>;
+        syscon = <&scm_conf>;
+    };
diff --git a/Bindings/phy/ti,keystone-usbphy.yaml b/Bindings/phy/ti,keystone-usbphy.yaml
new file mode 100644 (file)
index 0000000..08dc18e
--- /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/phy/ti,keystone-usbphy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI Keystone USB PHY
+
+maintainers:
+  - Nishanth Menon <nm@ti.com>
+  - Santosh Shilimkar <ssantosh@kernel.org>
+
+description:
+  The main purpose of this PHY driver is to enable the USB PHY reference clock
+  gate on the Keystone SOC for both the USB2 and USB3 PHY. Otherwise it is just
+  an NOP PHY driver. Hence this node is referenced as both the usb2 and usb3
+  phy node in the USB Glue layer driver node.
+
+properties:
+  compatible:
+    const: ti,keystone-usbphy
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    usb-phy@2620738 {
+        compatible = "ti,keystone-usbphy";
+        reg = <0x2620738 32>;
+    };
index a6ef4797e5c5936a42f9d64ce1b6442801f1f7cd..6ba66c2033b467b38366ee587dbf8a8d6cc0523d 100644 (file)
@@ -15,11 +15,18 @@ allOf:
 properties:
   compatible:
     oneOf:
-      - const: amlogic,pinctrl-a4
+      - enum:
+          - amlogic,pinctrl-a4
+          - amlogic,pinctrl-s6
+          - amlogic,pinctrl-s7
       - items:
           - enum:
               - amlogic,pinctrl-a5
           - const: amlogic,pinctrl-a4
+      - items:
+          - enum:
+              - amlogic,pinctrl-s7d
+          - const: amlogic,pinctrl-s7
 
   "#address-cells":
     const: 2
diff --git a/Bindings/pinctrl/eswin,eic7700-pinctrl.yaml b/Bindings/pinctrl/eswin,eic7700-pinctrl.yaml
new file mode 100644 (file)
index 0000000..d46e7ee
--- /dev/null
@@ -0,0 +1,156 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/eswin,eic7700-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Eswin Eic7700 Pinctrl
+
+maintainers:
+  - Yulin Lu <luyulin@eswincomputing.com>
+
+allOf:
+  - $ref: pinctrl.yaml#
+
+description: |
+  eic7700 pin configuration nodes act as a container for an arbitrary number of
+  subnodes. Each of these subnodes represents some desired configuration for one or
+  more pins. This configuration can include the mux function to select on those pin(s),
+  and various pin configuration parameters, such as input-enable, pull-up, etc.
+
+properties:
+  compatible:
+    const: eswin,eic7700-pinctrl
+
+  reg:
+    maxItems: 1
+
+  vrgmii-supply:
+    description:
+      Regulator supply for the RGMII interface IO power domain.
+      This property should reference a regulator that provides either 1.8V or 3.3V,
+      depending on the board-level voltage configuration required by the RGMII interface.
+
+patternProperties:
+  '-grp$':
+    type: object
+    additionalProperties: false
+
+    patternProperties:
+      '-pins$':
+        type: object
+
+        properties:
+          pins:
+            description:
+              For eic7700, specifies the name(s) of one or more pins to be configured by
+              this node.
+            items:
+              enum: [ chip_mode, mode_set0, mode_set1, mode_set2, mode_set3, xin,
+                      rst_out_n, key_reset_n, gpio0, por_sel, jtag0_tck, jtag0_tms,
+                      jtag0_tdi, jtag0_tdo, gpio5, spi2_cs0_n, jtag1_tck, jtag1_tms,
+                      jtag1_tdi, jtag1_tdo, gpio11, spi2_cs1_n, pcie_clkreq_n,
+                      pcie_wake_n, pcie_perst_n, hdmi_scl, hdmi_sda, hdmi_cec,
+                      jtag2_trst, rgmii0_clk_125, rgmii0_txen, rgmii0_txclk,
+                      rgmii0_txd0, rgmii0_txd1, rgmii0_txd2, rgmii0_txd3, i2s0_bclk,
+                      i2s0_wclk, i2s0_sdi, i2s0_sdo, i2s_mclk, rgmii0_rxclk,
+                      rgmii0_rxdv, rgmii0_rxd0, rgmii0_rxd1, rgmii0_rxd2, rgmii0_rxd3,
+                      i2s2_bclk, i2s2_wclk, i2s2_sdi, i2s2_sdo, gpio27, gpio28, gpio29,
+                      rgmii0_mdc, rgmii0_mdio, rgmii0_intb, rgmii1_clk_125, rgmii1_txen,
+                      rgmii1_txclk, rgmii1_txd0, rgmii1_txd1, rgmii1_txd2, rgmii1_txd3,
+                      i2s1_bclk, i2s1_wclk, i2s1_sdi, i2s1_sdo, gpio34, rgmii1_rxclk,
+                      rgmii1_rxdv, rgmii1_rxd0, rgmii1_rxd1, rgmii1_rxd2, rgmii1_rxd3,
+                      spi1_cs0_n, spi1_clk, spi1_d0, spi1_d1, spi1_d2, spi1_d3, spi1_cs1_n,
+                      rgmii1_mdc, rgmii1_mdio, rgmii1_intb, usb0_pwren, usb1_pwren,
+                      i2c0_scl, i2c0_sda, i2c1_scl, i2c1_sda, i2c2_scl, i2c2_sda,
+                      i2c3_scl, i2c3_sda, i2c4_scl, i2c4_sda, i2c5_scl, i2c5_sda,
+                      uart0_tx, uart0_rx, uart1_tx, uart1_rx, uart1_cts, uart1_rts,
+                      uart2_tx, uart2_rx, jtag2_tck, jtag2_tms, jtag2_tdi, jtag2_tdo,
+                      fan_pwm, fan_tach, mipi_csi0_xvs, mipi_csi0_xhs, mipi_csi0_mclk,
+                      mipi_csi1_xvs, mipi_csi1_xhs, mipi_csi1_mclk, mipi_csi2_xvs,
+                      mipi_csi2_xhs, mipi_csi2_mclk, mipi_csi3_xvs, mipi_csi3_xhs,
+                      mipi_csi3_mclk, mipi_csi4_xvs, mipi_csi4_xhs, mipi_csi4_mclk,
+                      mipi_csi5_xvs, mipi_csi5_xhs, mipi_csi5_mclk, spi3_cs_n, spi3_clk,
+                      spi3_di, spi3_do, gpio92, gpio93, s_mode, gpio95, spi0_cs_n,
+                      spi0_clk, spi0_d0, spi0_d1, spi0_d2, spi0_d3, i2c10_scl,
+                      i2c10_sda, i2c11_scl, i2c11_sda, gpio106, boot_sel0, boot_sel1,
+                      boot_sel2, boot_sel3, gpio111, lpddr_ref_clk ]
+
+          function:
+            description:
+              Specify the alternative function to be configured for the
+              given pins.
+            enum: [ disabled, boot_sel, chip_mode, emmc, fan_tach,
+                    gpio, hdmi, i2c, i2s, jtag, ddr_ref_clk_sel,
+                    lpddr_ref_clk, mipi_csi, osc, pcie, pwm,
+                    rgmii, reset, sata, sdio, spi, s_mode, uart, usb ]
+
+          input-schmitt-enable: true
+
+          input-schmitt-disable: true
+
+          bias-disable: true
+
+          bias-pull-down: true
+
+          bias-pull-up: true
+
+          input-enable: true
+
+          input-disable: true
+
+          drive-strength-microamp: true
+
+        required:
+          - pins
+
+        additionalProperties: false
+
+        allOf:
+          - $ref: pincfg-node.yaml#
+          - $ref: pinmux-node.yaml#
+
+          - if:
+              properties:
+                pins:
+                  anyOf:
+                    - pattern: '^rgmii'
+                    - const: lpddr_ref_clk
+            then:
+              properties:
+                drive-strength-microamp:
+                  enum: [3000, 6000, 9000, 12000, 15000, 18000, 21000, 24000]
+            else:
+              properties:
+                drive-strength-microamp:
+                  enum: [6000, 9000, 12000, 15000, 18000, 21000, 24000, 27000]
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    pinctrl@51600080 {
+      compatible = "eswin,eic7700-pinctrl";
+      reg = <0x51600080 0x1fff80>;
+      vrgmii-supply = <&vcc_1v8>;
+
+      dev-active-grp {
+        /* group node defining 1 standard pin */
+        gpio10-pins {
+          pins = "jtag1_tdo";
+          function = "gpio";
+          input-enable;
+          bias-pull-up;
+        };
+
+        /* group node defining 2 I2C pins */
+        i2c6-pins {
+          pins = "uart1_cts", "uart1_rts";
+          function = "i2c";
+        };
+      };
+    };
diff --git a/Bindings/pinctrl/mediatek,mt8189-pinctrl.yaml b/Bindings/pinctrl/mediatek,mt8189-pinctrl.yaml
new file mode 100644 (file)
index 0000000..32e4653
--- /dev/null
@@ -0,0 +1,213 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/mediatek,mt8189-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MediaTek MT8189 Pin Controller
+
+maintainers:
+  - Lei Xue <lei.xue@mediatek.com>
+  - Cathy Xu <ot_cathy.xu@mediatek.com>
+
+description:
+  The MediaTek's MT8189 Pin controller is used to control SoC pins.
+
+properties:
+  compatible:
+    const: mediatek,mt8189-pinctrl
+
+  reg:
+    items:
+      - description: gpio base
+      - description: lm group IO
+      - description: rb0 group IO
+      - description: rb1 group IO
+      - description: bm0 group IO
+      - description: bm1 group IO
+      - description: bm2 group IO
+      - description: lt0 group IO
+      - description: lt1 group IO
+      - description: rt group IO
+      - description: eint0 group IO
+      - description: eint1 group IO
+      - description: eint2 group IO
+      - description: eint3 group IO
+      - description: eint4 group IO
+
+  reg-names:
+    items:
+      - const: base
+      - const: lm
+      - const: rb0
+      - const: rb1
+      - const: bm0
+      - const: bm1
+      - const: bm2
+      - const: lt0
+      - const: lt1
+      - const: rt
+      - const: eint0
+      - const: eint1
+      - const: eint2
+      - const: eint3
+      - const: eint4
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  gpio-ranges:
+    maxItems: 1
+
+  gpio-line-names: true
+
+# PIN CONFIGURATION NODES
+patternProperties:
+  '-pins$':
+    type: object
+    additionalProperties: false
+
+    patternProperties:
+      '^pins':
+        type: object
+        $ref: /schemas/pinctrl/pincfg-node.yaml
+        additionalProperties: false
+        description:
+          A pinctrl node should contain at least one subnode representing the
+          pinctrl groups available on the machine. Each subnode will list the
+          pins it needs, and how they should be configured, with regard to muxer
+          configuration, pullups, drive strength, input enable/disable and input
+          schmitt.
+
+        properties:
+          pinmux:
+            description:
+              Integer array, represents gpio pin number and mux setting.
+              Supported pin number and mux varies for different SoCs, and are
+              defined as macros in arch/arm64/boot/dts/mediatek/mt8189-pinfunc.h
+              directly, for this SoC.
+
+          drive-strength:
+            enum: [2, 4, 6, 8, 10, 12, 14, 16]
+
+          bias-pull-down:
+            oneOf:
+              - type: boolean
+              - enum: [100, 101, 102, 103]
+                description: mt8189 pull down PUPD/R0/R1 type define value.
+              - enum: [75000, 5000]
+                description: mt8189 pull down RSEL type si unit value(ohm).
+            description: |
+              For pull down type is normal, it doesn't need add R1R0 define
+              and resistance value.
+
+              For pull down type is PUPD/R0/R1 type, it can add R1R0 define to
+              set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &
+              "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &
+              "MTK_PUPD_SET_R1R0_11" define in mt8189.
+
+              For pull down type is PD/RSEL, it can add resistance value(ohm)
+              to set different resistance by identifying property
+              "mediatek,rsel-resistance-in-si-unit".
+
+          bias-pull-up:
+            oneOf:
+              - type: boolean
+              - enum: [100, 101, 102, 103]
+                description: mt8189 pull up PUPD/R0/R1 type define value.
+              - enum: [1000, 1500, 2000, 3000, 4000, 5000, 75000]
+                description: mt8189 pull up RSEL type si unit value(ohm).
+            description: |
+              For pull up type is normal, it don't need add R1R0 define
+              and resistance value.
+
+              For pull up type is PUPD/R0/R1 type, it can add R1R0 define to
+              set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &
+              "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &
+              "MTK_PUPD_SET_R1R0_11" define in mt8189.
+
+              For pull up type is PU/RSEL, it can add resistance value(ohm)
+              to set different resistance by identifying property
+              "mediatek,rsel-resistance-in-si-unit".
+
+          bias-disable: true
+
+          output-high: true
+
+          output-low: true
+
+          input-enable: true
+
+          input-disable: true
+
+          input-schmitt-enable: true
+
+          input-schmitt-disable: true
+
+        required:
+          - pinmux
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-controller
+  - '#interrupt-cells'
+  - gpio-controller
+  - '#gpio-cells'
+  - gpio-ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/pinctrl/mt65xx.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #define PINMUX_GPIO51__FUNC_SCL0 (MTK_PIN_NO(51) | 2)
+    #define PINMUX_GPIO52__FUNC_SDA0 (MTK_PIN_NO(52) | 2)
+
+    pio: pinctrl@10005000 {
+        compatible = "mediatek,mt8189-pinctrl";
+        reg = <0x10005000 0x1000>,
+              <0x11b50000 0x1000>,
+              <0x11c50000 0x1000>,
+              <0x11c60000 0x1000>,
+              <0x11d20000 0x1000>,
+              <0x11d30000 0x1000>,
+              <0x11d40000 0x1000>,
+              <0x11e20000 0x1000>,
+              <0x11e30000 0x1000>,
+              <0x11f20000 0x1000>,
+              <0x11ce0000 0x1000>,
+              <0x11de0000 0x1000>,
+              <0x11e60000 0x1000>,
+              <0x1c01e000 0x1000>,
+              <0x11f00000 0x1000>;
+        reg-names = "base", "lm", "rb0", "rb1", "bm0" , "bm1",
+                    "bm2", "lt0", "lt1", "rt", "eint0", "eint1",
+                    "eint2", "eint3", "eint4";
+        gpio-controller;
+        #gpio-cells = <2>;
+        gpio-ranges = <&pio 0 0 182>;
+        interrupt-controller;
+        interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH 0>;
+        #interrupt-cells = <2>;
+
+        i2c0-pins {
+            pins {
+                pinmux = <PINMUX_GPIO51__FUNC_SCL0>,
+                         <PINMUX_GPIO52__FUNC_SDA0>;
+                bias-disable;
+            };
+        };
+    };
diff --git a/Bindings/pinctrl/nxp,lpc1850-scu.txt b/Bindings/pinctrl/nxp,lpc1850-scu.txt
deleted file mode 100644 (file)
index bd8b0c6..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-NXP LPC18xx/43xx SCU pin controller Device Tree Bindings
---------------------------------------------------------
-
-Required properties:
-- compatible           : Should be "nxp,lpc1850-scu"
-- reg                  : Address and length of the register set for the device
-- clocks               : Clock specifier (see clock bindings for details)
-
-The lpc1850-scu driver uses the generic pin multiplexing and generic pin
-configuration documented in pinctrl-bindings.txt.
-
-The following generic nodes are supported:
- - function
- - pins
- - bias-disable
- - bias-pull-up
- - bias-pull-down
- - drive-strength
- - input-enable
- - input-disable
- - input-schmitt-enable
- - input-schmitt-disable
- - slew-rate
-
-NXP specific properties:
- - nxp,gpio-pin-interrupt : Assign pin to gpio pin interrupt controller
-                           irq number 0 to 7. See example below.
-
-Not all pins support all properties so either refer to the NXP 1850/4350
-user manual or the pin table in the pinctrl-lpc18xx driver for supported
-pin properties.
-
-Example:
-pinctrl: pinctrl@40086000 {
-       compatible = "nxp,lpc1850-scu";
-       reg = <0x40086000 0x1000>;
-       clocks = <&ccu1 CLK_CPU_SCU>;
-
-       i2c0_pins: i2c0-pins {
-               i2c0_pins_cfg {
-                       pins = "i2c0_scl", "i2c0_sda";
-                       function = "i2c0";
-                       input-enable;
-               };
-       };
-
-       uart0_pins: uart0-pins {
-               uart0_rx_cfg {
-                       pins = "pf_11";
-                       function = "uart0";
-                       bias-disable;
-                       input-enable;
-               };
-
-               uart0_tx_cfg {
-                       pins = "pf_10";
-                       function = "uart0";
-                       bias-disable;
-               };
-       };
-
-       gpio_joystick_pins: gpio-joystick-pins {
-               gpio_joystick_1_cfg {
-                       pins =  "p9_0";
-                       function = "gpio";
-                       nxp,gpio-pin-interrupt = <0>;
-                       input-enable;
-                       bias-disable;
-               };
-       };
-};
diff --git a/Bindings/pinctrl/nxp,lpc1850-scu.yaml b/Bindings/pinctrl/nxp,lpc1850-scu.yaml
new file mode 100644 (file)
index 0000000..11f4135
--- /dev/null
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/nxp,lpc1850-scu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC18xx/43xx SCU pin controller
+
+description:
+  Not all pins support all pin generic node properties so either refer to
+  the NXP 1850/4350 user manual or the pin table in the pinctrl-lpc18xx
+  driver for supported pin properties.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc1850-scu
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+patternProperties:
+  '-pins$':
+    type: object
+    additionalProperties: false
+
+    patternProperties:
+      '_cfg$':
+        type: object
+
+        allOf:
+          - $ref: pincfg-node.yaml#
+          - $ref: pinmux-node.yaml#
+
+        unevaluatedProperties: false
+
+        properties:
+          nxp,gpio-pin-interrupt:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            minimum: 0
+            maximum: 7
+            description:
+              Assign pin to gpio pin interrupt controller
+              irq number 0 to 7. See example below.
+
+required:
+  - compatible
+  - reg
+  - clocks
+
+allOf:
+  - $ref: pinctrl.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc18xx-ccu.h>
+
+    pinctrl@40086000 {
+        compatible = "nxp,lpc1850-scu";
+        reg = <0x40086000 0x1000>;
+        clocks = <&ccu1 CLK_CPU_SCU>;
+
+        gpio-joystick-pins {
+            gpio-joystick-1_cfg {
+                pins = "p9_0";
+                function = "gpio";
+                nxp,gpio-pin-interrupt = <0>;
+                input-enable;
+                bias-disable;
+            };
+        };
+    };
diff --git a/Bindings/pinctrl/qcom,milos-tlmm.yaml b/Bindings/pinctrl/qcom,milos-tlmm.yaml
new file mode 100644 (file)
index 0000000..0091204
--- /dev/null
@@ -0,0 +1,133 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/qcom,milos-tlmm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Technologies, Inc. Milos TLMM block
+
+maintainers:
+  - Luca Weiss <luca.weiss@fairphone.com>
+
+description:
+  Top Level Mode Multiplexer pin controller in Qualcomm Milos SoC.
+
+allOf:
+  - $ref: /schemas/pinctrl/qcom,tlmm-common.yaml#
+
+properties:
+  compatible:
+    const: qcom,milos-tlmm
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  gpio-reserved-ranges:
+    minItems: 1
+    maxItems: 84
+
+  gpio-line-names:
+    maxItems: 167
+
+patternProperties:
+  "-state$":
+    oneOf:
+      - $ref: "#/$defs/qcom-milos-tlmm-state"
+      - patternProperties:
+          "-pins$":
+            $ref: "#/$defs/qcom-milos-tlmm-state"
+        additionalProperties: false
+
+$defs:
+  qcom-milos-tlmm-state:
+    type: object
+    description:
+      Pinctrl node's client devices use subnodes for desired pin configuration.
+      Client device subnodes use below standard properties.
+    $ref: qcom,tlmm-common.yaml#/$defs/qcom-tlmm-state
+    unevaluatedProperties: false
+
+    properties:
+      pins:
+        description:
+          List of gpio pins affected by the properties specified in this
+          subnode.
+        items:
+          oneOf:
+            - pattern: "^gpio([0-9]|[1-9][0-9]|1[0-5][0-9]|16[0-7])$"
+            - enum: [ ufs_reset, sdc2_clk, sdc2_cmd, sdc2_data ]
+        minItems: 1
+        maxItems: 36
+
+      function:
+        description:
+          Specify the alternative function to be configured for the specified
+          pins.
+        enum: [ gpio, aoss_cti, atest_char, atest_usb, audio_ext_mclk0,
+                audio_ext_mclk1, audio_ref_clk, cam_mclk, cci_async_in0,
+                cci_i2c_scl, cci_i2c_sda, cci_timer, coex_uart1_rx,
+                coex_uart1_tx, dbg_out_clk, ddr_bist_complete, ddr_bist_fail,
+                ddr_bist_start, ddr_bist_stop, ddr_pxi0, ddr_pxi1, dp0_hot,
+                egpio, gcc_gp1, gcc_gp2, gcc_gp3, host2wlan_sol, i2s0_data0,
+                i2s0_data1, i2s0_sck, i2s0_ws, ibi_i3c, jitter_bist, mdp_vsync,
+                mdp_vsync0_out, mdp_vsync1_out, mdp_vsync2_out, mdp_vsync3_out,
+                mdp_vsync_e, nav_gpio0, nav_gpio1, nav_gpio2, pcie0_clk_req_n,
+                pcie1_clk_req_n, phase_flag, pll_bist_sync, pll_clk_aux,
+                prng_rosc0, prng_rosc1, prng_rosc2, prng_rosc3, qdss_cti,
+                qdss_gpio, qlink0_enable, qlink0_request, qlink0_wmss,
+                qlink1_enable, qlink1_request, qlink1_wmss, qspi0, qup0_se0,
+                qup0_se1, qup0_se2, qup0_se3, qup0_se4, qup0_se5, qup0_se6,
+                qup1_se0, qup1_se1, qup1_se2, qup1_se3, qup1_se4, qup1_se5,
+                qup1_se6, resout_gpio_n, sd_write_protect, sdc1_clk, sdc1_cmd,
+                sdc1_data, sdc1_rclk, sdc2_clk, sdc2_cmd, sdc2_data,
+                sdc2_fb_clk, tb_trig_sdc1, tb_trig_sdc2, tgu_ch0_trigout,
+                tgu_ch1_trigout, tmess_prng0, tmess_prng1, tmess_prng2,
+                tmess_prng3, tsense_pwm1, tsense_pwm2, uim0_clk, uim0_data,
+                uim0_present, uim0_reset, uim1_clk_mira, uim1_clk_mirb,
+                uim1_data_mira, uim1_data_mirb, uim1_present_mira,
+                uim1_present_mirb, uim1_reset_mira, uim1_reset_mirb, usb0_hs,
+                usb0_phy_ps, vfr_0, vfr_1, vsense_trigger_mirnat, wcn_sw,
+                wcn_sw_ctrl ]
+
+    required:
+      - pins
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    tlmm: pinctrl@f100000 {
+        compatible = "qcom,milos-tlmm";
+        reg = <0x0f100000 0x300000>;
+
+        interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
+
+        gpio-controller;
+        #gpio-cells = <2>;
+
+        interrupt-controller;
+        #interrupt-cells = <2>;
+
+        gpio-ranges = <&tlmm 0 0 168>;
+
+        gpio-wo-state {
+            pins = "gpio1";
+            function = "gpio";
+        };
+
+        qup-uart5-default-state {
+            pins = "gpio25", "gpio26";
+            function = "qup0_se5";
+            drive-strength = <2>;
+            bias-disable;
+        };
+    };
+...
index 055cea5452eb62ab6e251a3a9193d1e5da293ccb..5e6dfcc3fe9b3c935cdd1022ef9849dc1db2347a 100644 (file)
@@ -27,6 +27,7 @@ properties:
           - qcom,pm6450-gpio
           - qcom,pm7250b-gpio
           - qcom,pm7325-gpio
+          - qcom,pm7550-gpio
           - qcom,pm7550ba-gpio
           - qcom,pm8005-gpio
           - qcom,pm8018-gpio
@@ -64,6 +65,7 @@ properties:
           - qcom,pmi8994-gpio
           - qcom,pmi8998-gpio
           - qcom,pmih0108-gpio
+          - qcom,pmiv0104-gpio
           - qcom,pmk8350-gpio
           - qcom,pmk8550-gpio
           - qcom,pmm8155au-gpio
@@ -228,6 +230,7 @@ allOf:
               - qcom,pmc8180-gpio
               - qcom,pmc8380-gpio
               - qcom,pmi8994-gpio
+              - qcom,pmiv0104-gpio
               - qcom,pmm8155au-gpio
     then:
       properties:
@@ -261,6 +264,7 @@ allOf:
               - qcom,pm660l-gpio
               - qcom,pm6150l-gpio
               - qcom,pm7250b-gpio
+              - qcom,pm7550-gpio
               - qcom,pm8038-gpio
               - qcom,pm8150b-gpio
               - qcom,pm8150l-gpio
diff --git a/Bindings/pinctrl/raspberrypi,rp1-gpio.yaml b/Bindings/pinctrl/raspberrypi,rp1-gpio.yaml
new file mode 100644 (file)
index 0000000..eec9a9b
--- /dev/null
@@ -0,0 +1,198 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/raspberrypi,rp1-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: RaspberryPi RP1 GPIO/Pinconf/Pinmux Controller submodule
+
+maintainers:
+  - A. della Porta <andrea.porta@suse.com>
+
+description:
+  The RP1 chipset is a Multi Function Device containing, among other
+  sub-peripherals, a gpio/pinconf/mux controller whose 54 pins are grouped
+  into 3 banks.
+  It works also as an interrupt controller for those gpios.
+
+properties:
+  compatible:
+    const: raspberrypi,rp1-gpio
+
+  reg:
+    maxItems: 3
+    description: One reg specifier for each one of the 3 pin banks.
+
+  '#gpio-cells':
+    description: The first cell is the pin number and the second cell is used
+      to specify the flags (see include/dt-bindings/gpio/gpio.h).
+    const: 2
+
+  gpio-controller: true
+
+  gpio-ranges:
+    maxItems: 1
+
+  gpio-line-names:
+    maxItems: 54
+
+  interrupts:
+    maxItems: 3
+    description: One interrupt specifier for each one of the 3 pin banks.
+
+  '#interrupt-cells':
+    description:
+      Specifies the Bank number [0, 1, 2] and Flags as defined in
+      include/dt-bindings/interrupt-controller/irq.h.
+    const: 2
+
+  interrupt-controller: true
+
+patternProperties:
+  '-state$':
+    oneOf:
+      - $ref: '#/$defs/raspberrypi-rp1-state'
+      - patternProperties:
+          '-pins$':
+            $ref: '#/$defs/raspberrypi-rp1-state'
+        additionalProperties: false
+
+$defs:
+  raspberrypi-rp1-state:
+    allOf:
+      - $ref: pincfg-node.yaml#
+      - $ref: pinmux-node.yaml#
+
+    description:
+      Pin controller client devices use pin configuration subnodes (children
+      and grandchildren) for desired pin configuration.
+      Client device subnodes use below standard properties.
+
+    properties:
+      pins:
+        description:
+          List of gpio pins affected by the properties specified in this
+          subnode.
+        items:
+          pattern: '^gpio([0-9]|[1-4][0-9]|5[0-3])$'
+
+      function:
+        enum: [ alt0, alt1, alt2, alt3, alt4, gpio, alt6, alt7, alt8, none,
+                aaud, dcd0, dpi, dsi0_te_ext, dsi1_te_ext, dsr0, dtr0, gpclk0,
+                gpclk1, gpclk2, gpclk3, gpclk4, gpclk5, i2c0, i2c1, i2c2, i2c3,
+                i2c4, i2c5, i2c6, i2s0, i2s1, i2s2, ir, mic, pcie_clkreq_n,
+                pio, proc_rio, pwm0, pwm1, ri0, sd0, sd1, spi0, spi1, spi2,
+                spi3, spi4, spi5, spi6, spi7, spi8, uart0, uart1, uart2, uart3,
+                uart4, uart5, vbus0, vbus1, vbus2, vbus3 ]
+
+        description:
+          Specify the alternative function to be configured for the specified
+          pins.
+
+      bias-disable: true
+      bias-pull-down: true
+      bias-pull-up: true
+      input-enable: true
+      input-schmitt-enable: true
+      output-enable: true
+      output-high: true
+      output-low: true
+      slew-rate:
+        description: 0 is slow slew rate, 1 is fast slew rate
+        enum: [ 0, 1 ]
+      drive-strength:
+        enum: [ 2, 4, 8, 12 ]
+
+    additionalProperties: false
+
+allOf:
+  - $ref: pinctrl.yaml#
+
+required:
+  - reg
+  - compatible
+  - '#gpio-cells'
+  - gpio-controller
+  - interrupts
+  - '#interrupt-cells'
+  - interrupt-controller
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    rp1 {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        rp1_gpio: pinctrl@c0400d0000 {
+            reg = <0xc0 0x400d0000  0x0 0xc000>,
+                  <0xc0 0x400e0000  0x0 0xc000>,
+                  <0xc0 0x400f0000  0x0 0xc000>;
+            compatible = "raspberrypi,rp1-gpio";
+            gpio-controller;
+            #gpio-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
+            interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
+                         <1 IRQ_TYPE_LEVEL_HIGH>,
+                         <2 IRQ_TYPE_LEVEL_HIGH>;
+            gpio-line-names =
+                   "ID_SDA", // GPIO0
+                   "ID_SCL", // GPIO1
+                   "GPIO2", "GPIO3", "GPIO4", "GPIO5", "GPIO6",
+                   "GPIO7", "GPIO8", "GPIO9", "GPIO10", "GPIO11",
+                   "GPIO12", "GPIO13", "GPIO14", "GPIO15", "GPIO16",
+                   "GPIO17", "GPIO18", "GPIO19", "GPIO20", "GPIO21",
+                   "GPIO22", "GPIO23", "GPIO24", "GPIO25", "GPIO26",
+                   "GPIO27",
+                   "PCIE_RP1_WAKE", // GPIO28
+                   "FAN_TACH", // GPIO29
+                   "HOST_SDA", // GPIO30
+                   "HOST_SCL", // GPIO31
+                   "ETH_RST_N", // GPIO32
+                   "", // GPIO33
+                   "CD0_IO0_MICCLK", // GPIO34
+                   "CD0_IO0_MICDAT0", // GPIO35
+                   "RP1_PCIE_CLKREQ_N", // GPIO36
+                   "", // GPIO37
+                   "CD0_SDA", // GPIO38
+                   "CD0_SCL", // GPIO39
+                   "CD1_SDA", // GPIO40
+                   "CD1_SCL", // GPIO41
+                   "USB_VBUS_EN", // GPIO42
+                   "USB_OC_N", // GPIO43
+                   "RP1_STAT_LED", // GPIO44
+                   "FAN_PWM", // GPIO45
+                   "CD1_IO0_MICCLK", // GPIO46
+                   "2712_WAKE", // GPIO47
+                   "CD1_IO1_MICDAT1", // GPIO48
+                   "EN_MAX_USB_CUR", // GPIO49
+                   "", // GPIO50
+                   "", // GPIO51
+                   "", // GPIO52
+                   ""; // GPIO53
+
+            rp1-i2s0-default-state {
+                function = "i2s0";
+                pins = "gpio18", "gpio19", "gpio20", "gpio21";
+                bias-disable;
+            };
+
+            rp1-uart0-default-state {
+                txd-pins {
+                    function = "uart0";
+                    pins = "gpio14";
+                    bias-disable;
+                };
+
+                rxd-pins {
+                    function = "uart0";
+                    pins = "gpio15";
+                    bias-pull-up;
+                };
+            };
+        };
+    };
index 960758dc417f7405010fab067bfbf6f5c4704179..125af766b99297dc229db158846daea974dda28e 100644 (file)
@@ -135,7 +135,7 @@ additionalProperties:
               description:
                 Pin bank index.
             - minimum: 0
-              maximum: 13
+              maximum: 14
               description:
                 Mux 0 means GPIO and mux 1 to N means
                 the specific device function.
diff --git a/Bindings/pinctrl/st,stm32-hdp.yaml b/Bindings/pinctrl/st,stm32-hdp.yaml
new file mode 100644 (file)
index 0000000..845b6b7
--- /dev/null
@@ -0,0 +1,187 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright (C) STMicroelectronics 2025.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/st,stm32-hdp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STM32 Hardware Debug Port Mux/Config
+
+maintainers:
+  - Clément LE GOFFIC <legoffic.clement@gmail.com>
+
+description:
+  STMicroelectronics's STM32 MPUs integrate a Hardware Debug Port (HDP).
+  It allows to output internal signals on SoC's GPIO.
+
+properties:
+  compatible:
+    enum:
+      - st,stm32mp131-hdp
+      - st,stm32mp151-hdp
+      - st,stm32mp251-hdp
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+patternProperties:
+  "^hdp[0-7]-pins$":
+    type: object
+    $ref: pinmux-node.yaml#
+    additionalProperties: false
+
+    properties:
+      pins:
+        pattern: '^HDP[0-7]$'
+
+      function: true
+
+    required:
+      - function
+      - pins
+
+allOf:
+  - $ref: pinctrl.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: st,stm32mp131-hdp
+    then:
+      patternProperties:
+        "^hdp[0-7]-pins$":
+          properties:
+            function:
+              enum: [ pwr_pwrwake_sys, pwr_stop_forbidden, pwr_stdby_wakeup, pwr_encomp_vddcore,
+                      bsec_out_sec_niden, aiec_sys_wakeup, none, ddrctrl_lp_req,
+                      pwr_ddr_ret_enable_n, dts_clk_ptat, sram3ctrl_tamp_erase_act, gpoval0,
+                      pwr_sel_vth_vddcpu, pwr_mpu_ram_lowspeed, ca7_naxierrirq, pwr_okin_mr,
+                      bsec_out_sec_dbgen, aiec_c1_wakeup, rcc_pwrds_mpu, ddrctrl_dfi_ctrlupd_req,
+                      ddrctrl_cactive_ddrc_asr, sram3ctrl_hw_erase_act, nic400_s0_bready, gpoval1,
+                      pwr_pwrwake_mpu, pwr_mpu_clock_disable_ack, ca7_ndbgreset_i,
+                      bsec_in_rstcore_n, bsec_out_sec_bsc_dis, ddrctrl_dfi_init_complete,
+                      ddrctrl_perf_op_is_refresh, ddrctrl_gskp_dfi_lp_req, sram3ctrl_sw_erase_act,
+                      nic400_s0_bvalid, gpoval2, pwr_sel_vth_vddcore, pwr_mpu_clock_disable_req,
+                      ca7_npmuirq0, ca7_nfiqout0, bsec_out_sec_dftlock, bsec_out_sec_jtag_dis,
+                      rcc_pwrds_sys, sram3ctrl_tamp_erase_req, ddrctrl_stat_ddrc_reg_selfref_type0,
+                      dts_valobus1_0, dts_valobus2_0, tamp_potential_tamp_erfcfg, nic400_s0_wready,
+                      nic400_s0_rready, gpoval3, pwr_stop2_active, ca7_nl2reset_i,
+                      ca7_npreset_varm_i, bsec_out_sec_dften, bsec_out_sec_dbgswenable,
+                      eth1_out_pmt_intr_o, eth2_out_pmt_intr_o, ddrctrl_stat_ddrc_reg_selfref_type1,
+                      ddrctrl_cactive_0, dts_valobus1_1, dts_valobus2_1, tamp_nreset_sram_ercfg,
+                      nic400_s0_wlast, nic400_s0_rlast, gpoval4, ca7_standbywfil2,
+                      pwr_vth_vddcore_ack, ca7_ncorereset_i, ca7_nirqout0, bsec_in_pwrok,
+                      bsec_out_sec_deviceen, eth1_out_lpi_intr_o, eth2_out_lpi_intr_o,
+                      ddrctrl_cactive_ddrc, ddrctrl_wr_credit_cnt, dts_valobus1_2, dts_valobus2_2,
+                      pka_pka_itamp_out, nic400_s0_wvalid, nic400_s0_rvalid, gpoval5,
+                      ca7_standbywfe0, pwr_vth_vddcpu_ack, ca7_evento, bsec_in_tamper_det,
+                      bsec_out_sec_spniden, eth1_out_mac_speed_o1, eth2_out_mac_speed_o1,
+                      ddrctrl_csysack_ddrc, ddrctrl_lpr_credit_cnt, dts_valobus1_3, dts_valobus2_3,
+                      saes_tamper_out, nic400_s0_awready, nic400_s0_arready, gpoval6,
+                      ca7_standbywfi0, pwr_rcc_vcpu_rdy, ca7_eventi, ca7_dbgack0, bsec_out_fuse_ok,
+                      bsec_out_sec_spiden, eth1_out_mac_speed_o0, eth2_out_mac_speed_o0,
+                      ddrctrl_csysreq_ddrc, ddrctrl_hpr_credit_cnt, dts_valobus1_4, dts_valobus2_4,
+                      rng_tamper_out, nic400_s0_awavalid, nic400_s0_aravalid, gpoval7 ]
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: st,stm32mp151-hdp
+    then:
+      patternProperties:
+        "^hdp[0-7]-pins$":
+          properties:
+            function:
+              enum: [ pwr_pwrwake_sys, cm4_sleepdeep, pwr_stdby_wkup, pwr_encomp_vddcore,
+                      bsec_out_sec_niden, none, rcc_cm4_sleepdeep, gpu_dbg7, ddrctrl_lp_req,
+                      pwr_ddr_ret_enable_n, dts_clk_ptat, gpoval0, pwr_pwrwake_mcu, cm4_halted,
+                      ca7_naxierrirq, pwr_okin_mr, bsec_out_sec_dbgen, exti_sys_wakeup,
+                      rcc_pwrds_mpu, gpu_dbg6, ddrctrl_dfi_ctrlupd_req, ddrctrl_cactive_ddrc_asr,
+                      gpoval1, pwr_pwrwake_mpu, cm4_rxev, ca7_npmuirq1, ca7_nfiqout1,
+                      bsec_in_rstcore_n, exti_c2_wakeup, rcc_pwrds_mcu, gpu_dbg5,
+                      ddrctrl_dfi_init_complete, ddrctrl_perf_op_is_refresh,
+                      ddrctrl_gskp_dfi_lp_req, gpoval2, pwr_sel_vth_vddcore, cm4_txev, ca7_npmuirq0,
+                      ca7_nfiqout0, bsec_out_sec_dftlock, exti_c1_wakeup, rcc_pwrds_sys, gpu_dbg4,
+                      ddrctrl_stat_ddrc_reg_selfref_type0, ddrctrl_cactive_1, dts_valobus1_0,
+                      dts_valobus2_0, gpoval3, pwr_mpu_pdds_not_cstbydis, cm4_sleeping, ca7_nreset1,
+                      ca7_nirqout1, bsec_out_sec_dften, bsec_out_sec_dbgswenable,
+                      eth_out_pmt_intr_o, gpu_dbg3, ddrctrl_stat_ddrc_reg_selfref_type1,
+                      ddrctrl_cactive_0, dts_valobus1_1, dts_valobus2_1, gpoval4, ca7_standbywfil2,
+                      pwr_vth_vddcore_ack, ca7_nreset0, ca7_nirqout0, bsec_in_pwrok,
+                      bsec_out_sec_deviceen, eth_out_lpi_intr_o, gpu_dbg2, ddrctrl_cactive_ddrc,
+                      ddrctrl_wr_credit_cnt, dts_valobus1_2, dts_valobus2_2, gpoval5,
+                      ca7_standbywfi1, ca7_standbywfe1, ca7_evento, ca7_dbgack1,
+                      bsec_out_sec_spniden, eth_out_mac_speed_o1, gpu_dbg1, ddrctrl_csysack_ddrc,
+                      ddrctrl_lpr_credit_cnt, dts_valobus1_3, dts_valobus2_3, gpoval6,
+                      ca7_standbywfi0, ca7_standbywfe0, ca7_dbgack0, bsec_out_fuse_ok,
+                      bsec_out_sec_spiden, eth_out_mac_speed_o0, gpu_dbg0, ddrctrl_csysreq_ddrc,
+                      ddrctrl_hpr_credit_cnt, dts_valobus1_4, dts_valobus2_4, gpoval7 ]
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: st,stm32mp251-hdp
+    then:
+      patternProperties:
+        "^hdp[0-7]-pins$":
+          properties:
+            function:
+              enum: [ pwr_pwrwake_sys, cpu2_sleep_deep, bsec_out_tst_sdr_unlock_or_disable_scan,
+                      bsec_out_nidenm, bsec_out_nidena, cpu2_state_0, rcc_pwrds_sys, gpu_dbg7,
+                      ddrss_csysreq_ddrc, ddrss_dfi_phyupd_req, cpu3_sleep_deep,
+                      d2_gbl_per_clk_bus_req, pcie_usb_cxpl_debug_info_ei_0,
+                      pcie_usb_cxpl_debug_info_ei_8, d3_state_0, gpoval0, pwr_pwrwake_cpu2,
+                      cpu2_halted, cpu2_state_1, bsec_out_dbgenm, bsec_out_dbgena, exti1_sys_wakeup,
+                      rcc_pwrds_cpu2, gpu_dbg6, ddrss_csysack_ddrc, ddrss_dfi_phymstr_req,
+                      cpu3_halted, d2_gbl_per_dma_req, pcie_usb_cxpl_debug_info_ei_1,
+                      pcie_usb_cxpl_debug_info_ei_9, d3_state_1, gpoval1, pwr_pwrwake_cpu1,
+                      cpu2_rxev, cpu1_npumirq1, cpu1_nfiqout1, bsec_out_shdbgen, exti1_cpu2_wakeup,
+                      rcc_pwrds_cpu1, gpu_dbg5, ddrss_cactive_ddrc, ddrss_dfi_lp_req, cpu3_rxev,
+                      hpdma1_clk_bus_req, pcie_usb_cxpl_debug_info_ei_2,
+                      pcie_usb_cxpl_debug_info_ei_10, d3_state_2, gpoval2, pwr_sel_vth_vddcpu,
+                      cpu2_txev, cpu1_npumirq0, cpu1_nfiqout0, bsec_out_ddbgen, exti1_cpu1_wakeup,
+                      cpu3_state_0, gpu_dbg4, ddrss_mcdcg_en, ddrss_dfi_freq_0, cpu3_txev,
+                      hpdma2_clk_bus_req, pcie_usb_cxpl_debug_info_ei_3,
+                      pcie_usb_cxpl_debug_info_ei_11, d1_state_0, gpoval3, pwr_sel_vth_vddcore,
+                      cpu2_sleeping, cpu1_evento, cpu1_nirqout1, bsec_out_spnidena, exti2_d3_wakeup,
+                      eth1_out_pmt_intr_o, gpu_dbg3, ddrss_dphycg_en, ddrss_obsp0, cpu3_sleeping,
+                      hpdma3_clk_bus_req, pcie_usb_cxpl_debug_info_ei_4,
+                      pcie_usb_cxpl_debug_info_ei_12, d1_state_1, gpoval4, cpu1_standby_wfil2,
+                      none, cpu1_nirqout0, bsec_out_spidena, exti2_cpu3_wakeup, eth1_out_lpi_intr_o,
+                      gpu_dbg2, ddrctrl_dfi_init_start, ddrss_obsp1, cpu3_state_1,
+                      d3_gbl_per_clk_bus_req, pcie_usb_cxpl_debug_info_ei_5,
+                      pcie_usb_cxpl_debug_info_ei_13, d1_state_2, gpoval5, cpu1_standby_wfi1,
+                      cpu1_standby_wfe1, cpu1_halted1, cpu1_naxierrirq, bsec_out_spnidenm,
+                      exti2_cpu2_wakeup, eth2_out_pmt_intr_o, gpu_dbg1, ddrss_dfi_init_complete,
+                      ddrss_obsp2, d2_state_0, d3_gbl_per_dma_req, pcie_usb_cxpl_debug_info_ei_6,
+                      pcie_usb_cxpl_debug_info_ei_14, cpu1_state_0, gpoval6, cpu1_standby_wfi0,
+                      cpu1_standby_wfe0, cpu1_halted0, bsec_out_spidenm, exti2_cpu1__wakeup,
+                      eth2_out_lpi_intr_o, gpu_dbg0, ddrss_dfi_ctrlupd_req, ddrss_obsp3, d2_state_1,
+                      lpdma1_clk_bus_req, pcie_usb_cxpl_debug_info_ei_7,
+                      pcie_usb_cxpl_debug_info_ei_15, cpu1_state_1, gpoval7 ]
+
+required:
+  - compatible
+  - reg
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/stm32mp1-clks.h>
+
+    pinctrl@54090000 {
+      compatible = "st,stm32mp151-hdp";
+      reg = <0x54090000 0x400>;
+      clocks = <&rcc HDP>;
+      pinctrl-names = "default";
+      pinctrl-0 = <&hdp2_gpo>;
+      hdp2_gpo: hdp2-pins {
+        function = "gpoval2";
+        pins = "HDP2";
+      };
+    };
index a28d77748095acc454d7f4f91021e828990c152e..961161c2ab62b0a6f3cc1e6135f64e4bf2b690c5 100644 (file)
@@ -32,13 +32,16 @@ properties:
 
   '#address-cells':
     const: 1
+
   '#size-cells':
     const: 1
 
   ranges: true
+
   pins-are-numbered:
     $ref: /schemas/types.yaml#/definitions/flag
     deprecated: true
+
   hwlocks: true
 
   interrupts:
@@ -67,22 +70,29 @@ patternProperties:
     additionalProperties: false
     properties:
       gpio-controller: true
+
       '#gpio-cells':
         const: 2
+
       interrupt-controller: true
       '#interrupt-cells':
         const: 2
 
       reg:
         maxItems: 1
+
       clocks:
         maxItems: 1
+
       resets:
         maxItems: 1
+
       gpio-line-names: true
+
       gpio-ranges:
         minItems: 1
         maxItems: 16
+
       ngpios:
         description:
           Number of available gpios in a bank.
@@ -160,9 +170,13 @@ patternProperties:
               * ...
               * 16 : Alternate Function 15
               * 17 : Analog
+              * 18 : Reserved
               To simplify the usage, macro is available to generate "pinmux" field.
               This macro is available here:
                 - include/dt-bindings/pinctrl/stm32-pinfunc.h
+              Setting the pinmux's function to the Reserved (RSVD) value is used to inform
+              the driver that it shall not apply the mux setting. This can be used to
+              reserve some pins, for example to a co-processor not running Linux.
               Some examples of using macro:
                /* GPIO A9 set as alternate function 2 */
                ... {
@@ -176,21 +190,32 @@ patternProperties:
                ... {
                           pinmux = <STM32_PINMUX('A', 9, ANALOG)>;
                };
+               /* GPIO A9 reserved for co-processor */
+               ... {
+                          pinmux = <STM32_PINMUX('A', 9, RSVD)>;
+               };
 
           bias-disable:
             type: boolean
+
           bias-pull-down:
             type: boolean
+
           bias-pull-up:
             type: boolean
+
           drive-push-pull:
             type: boolean
+
           drive-open-drain:
             type: boolean
+
           output-low:
             type: boolean
+
           output-high:
             type: boolean
+
           slew-rate:
             description: |
               0: Low speed
index f578be6a3bc8ad201b637a0b4ac347bdab11a724..a28e75a9cb6a575eadc0c3a3e6b024c186de3601 100644 (file)
@@ -16,8 +16,10 @@ description:
 properties:
   compatible:
     enum:
-      - allwinner,sun20i-d1-ppu
       - allwinner,sun8i-v853-ppu
+      - allwinner,sun20i-d1-ppu
+      - allwinner,sun55i-a523-pck-600
+      - allwinner,sun55i-a523-ppu
 
   reg:
     maxItems: 1
index 8fdb529d560bf7ae5cb02d9193c058f7a11d5161..b1147dbf2e7385a69fd491f0dd8e44f03a20c098 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Generic PM domains
 
 maintainers:
-  - Rafael J. Wysocki <rjw@rjwysocki.net>
+  - Rafael J. Wysocki <rafael@kernel.org>
   - Kevin Hilman <khilman@kernel.org>
   - Ulf Hansson <ulf.hansson@linaro.org>
 
index 1bf65f2a583ab70ac313309f917aaabb75dc3f85..af5fef872529b1381c1a91476a9bd3dc3e2889fe 100644 (file)
@@ -17,7 +17,9 @@ properties:
   compatible:
     oneOf:
       - enum:
+          - qcom,glymur-rpmhpd
           - qcom,mdm9607-rpmpd
+          - qcom,milos-rpmhpd
           - qcom,msm8226-rpmpd
           - qcom,msm8909-rpmpd
           - qcom,msm8916-rpmpd
diff --git a/Bindings/power/reset/apple,smc-reboot.yaml b/Bindings/power/reset/apple,smc-reboot.yaml
new file mode 100644 (file)
index 0000000..ce5ed88
--- /dev/null
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/power/reset/apple,smc-reboot.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple SMC Reboot Controller
+
+description:
+  The Apple System Management Controller (SMC) provides reboot functionality
+  on Apple Silicon SoCs. It uses NVMEM cells to store and track various
+  system state information related to boot, shutdown, and panic events.
+
+maintainers:
+  - Sven Peter <sven@kernel.org>
+
+properties:
+  compatible:
+    const: apple,smc-reboot
+
+  nvmem-cells:
+    items:
+      - description: Flag indicating shutdown (as opposed to reboot)
+      - description: Stage at which the boot process stopped (0x30 for normal boot)
+      - description: Counter for boot errors
+      - description: Counter for system panics
+
+  nvmem-cell-names:
+    items:
+      - const: shutdown_flag
+      - const: boot_stage
+      - const: boot_error_count
+      - const: panic_count
+
+required:
+  - compatible
+  - nvmem-cells
+  - nvmem-cell-names
+
+additionalProperties: false
index 3da3d02a669089af037f9492c64e0304c714b523..979a377cb4ffd577bfa51b9a3cd089acc202de0c 100644 (file)
@@ -115,40 +115,40 @@ allOf:
 
 examples:
   - |
-   #include <dt-bindings/interrupt-controller/irq.h>
-   #include <dt-bindings/input/linux-event-codes.h>
-   #include <dt-bindings/spmi/spmi.h>
-
-   spmi@c440000 {
-     reg = <0x0c440000 0x1100>;
-     #address-cells = <2>;
-     #size-cells = <0>;
-
-     pmic@0 {
-       reg = <0x0 SPMI_USID>;
-       #address-cells = <1>;
-       #size-cells = <0>;
-
-       pon@800 {
-         compatible = "qcom,pm8998-pon";
-         reg = <0x800>;
-
-         pwrkey {
-            compatible = "qcom,pm8941-pwrkey";
-            interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
-            debounce = <15625>;
-            bias-pull-up;
-            linux,code = <KEY_POWER>;
-         };
-
-         resin {
-            compatible = "qcom,pm8941-resin";
-            interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
-            debounce = <15625>;
-            bias-pull-up;
-            linux,code = <KEY_VOLUMEDOWN>;
-         };
-       };
-     };
-   };
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/input/linux-event-codes.h>
+    #include <dt-bindings/spmi/spmi.h>
+
+    spmi@c440000 {
+        reg = <0x0c440000 0x1100>;
+        #address-cells = <2>;
+        #size-cells = <0>;
+
+        pmic@0 {
+            reg = <0x0 SPMI_USID>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            pon@800 {
+                compatible = "qcom,pm8998-pon";
+                reg = <0x800>;
+
+                pwrkey {
+                    compatible = "qcom,pm8941-pwrkey";
+                    interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
+                    debounce = <15625>;
+                    bias-pull-up;
+                    linux,code = <KEY_POWER>;
+                };
+
+                resin {
+                    compatible = "qcom,pm8941-resin";
+                    interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
+                    debounce = <15625>;
+                    bias-pull-up;
+                    linux,code = <KEY_VOLUMEDOWN>;
+                };
+            };
+        };
+    };
 ...
index f494b7710c099bd44bc49abfb90fb35f00ee508b..a884e49c995fb6b50b5096e0e83fe795adbd86c3 100644 (file)
@@ -40,6 +40,7 @@ properties:
       - rockchip,rk3366-power-controller
       - rockchip,rk3368-power-controller
       - rockchip,rk3399-power-controller
+      - rockchip,rk3528-power-controller
       - rockchip,rk3562-power-controller
       - rockchip,rk3568-power-controller
       - rockchip,rk3576-power-controller
index 307c99c077217ab4b5fac30694a4a316dd51f8e4..ac9a76fc5876bef101bfd5c44e4a759288cd1c58 100644 (file)
@@ -48,7 +48,6 @@ properties:
       battery device.
 
   monitored-battery:
-    $ref: /schemas/types.yaml#/definitions/phandle
     description: |
       phandle to a "simple-battery" compatible node.
 
index 845822c87f2a4616c44907a5abaa1cc785be78ea..0e99a218e662b8400a15252fe601234bb51cd12c 100644 (file)
@@ -53,15 +53,16 @@ properties:
     minimum: 50000
     maximum: 500000
 
-  monitored-battery:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description: phandle to the battery node being monitored
+  monitored-battery: true
 
 required:
   - compatible
   - reg
   - monitored-battery
 
+allOf:
+  - $ref: power-supply.yaml#
+
 additionalProperties: false
 
 examples:
index a76afe3ca29922fe73da12126f9e107a4fef270d..8cee37b9879e2a7db9aa5514e9f065eb9a6a6ead 100644 (file)
@@ -58,9 +58,7 @@ properties:
     minimum: 100000
     maximum: 3200000
 
-  monitored-battery:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description: phandle to the battery node being monitored
+  monitored-battery: true
 
   interrupts:
     maxItems: 1
@@ -78,6 +76,7 @@ required:
   - monitored-battery
 
 allOf:
+  - $ref: power-supply.yaml#
   - if:
       properties:
         compatible:
index 256adbef55ebf83f00181d07696c2182787195c1..0b5d005dc7809418073a4d8925fc4937c3a38dcd 100644 (file)
@@ -73,9 +73,7 @@ properties:
     description: |
       Indicates that the device state has changed.
 
-  monitored-battery:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description: phandle to the battery node being monitored
+  monitored-battery: true
 
 required:
   - compatible
index dc697b6147b2130d6b234c26d19edbbcca5a1dff..f7bde324153d8b2144cf90dd850165c2e8d8088e 100644 (file)
@@ -43,10 +43,7 @@ properties:
     minItems: 1
     maxItems: 8 # Should be enough
 
-  monitored-battery:
-    description:
-      Specifies the phandle of a simple-battery connected to this gauge
-    $ref: /schemas/types.yaml#/definitions/phandle
+  monitored-battery: true
 
 required:
   - compatible
index 90c7dc7632c58dc5cbfb3abcde8e730882bfd936..70f5cd6eaeabe822babf567d92b1d7f9124f3680 100644 (file)
@@ -38,9 +38,7 @@ properties:
       - const: usbin_i
       - const: usbin_v
 
-  monitored-battery:
-    description: phandle to the simple-battery node
-    $ref: /schemas/types.yaml#/definitions/phandle
+  monitored-battery: true
 
 required:
   - compatible
@@ -51,6 +49,9 @@ required:
   - io-channel-names
   - monitored-battery
 
+allOf:
+  - $ref: power-supply.yaml#
+
 additionalProperties: false
 
 examples:
index 5b3edd79a523ff7f8f04cadc425c208a63cd8f85..d91eced9f5fb0b330c91aa61e0be9aa6bee52ae4 100644 (file)
@@ -18,7 +18,6 @@ properties:
     const: richtek,rt5033-charger
 
   monitored-battery:
-    $ref: /schemas/types.yaml#/definitions/phandle
     description: |
       Phandle to the monitored battery according to battery.yaml. The battery
       node needs to contain five parameters.
@@ -54,6 +53,9 @@ properties:
 required:
   - monitored-battery
 
+allOf:
+  - $ref: power-supply.yaml#
+
 additionalProperties: false
 
 examples:
index 525abdfb3e2d456bb4afc8e8890cf86be2545ef7..c464aa82255a6839e8416ab84b3f6fdbffb7ec1e 100644 (file)
@@ -17,9 +17,7 @@ properties:
   compatible:
     const: stericsson,ab8500-btemp
 
-  monitored-battery:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description: phandle to battery node
+  monitored-battery: true
 
   battery:
     $ref: /schemas/types.yaml#/definitions/phandle
index 10bbdcfc87b68feacf2f420cf0675f6323e9dbfa..39914b9e0cf58adffc21c28aa6bfb50e82c04757 100644 (file)
@@ -17,9 +17,7 @@ properties:
   compatible:
     const: stericsson,ab8500-chargalg
 
-  monitored-battery:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description: phandle to battery node
+  monitored-battery: true
 
   battery:
     $ref: /schemas/types.yaml#/definitions/phandle
index e33329b3af6196c8d66f0b32f57cfb14e38f22f8..994fac12c8da0632c05626caa0201524377a7a6d 100644 (file)
@@ -17,9 +17,7 @@ properties:
   compatible:
     const: stericsson,ab8500-charger
 
-  monitored-battery:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description: phandle to battery node
+  monitored-battery: true
 
   battery:
     $ref: /schemas/types.yaml#/definitions/phandle
index 6a724ca90e9965a8a0bceb6d262ecb283e1af005..92e4eb08fd6101936cf74e8aaa34760ed483cb0b 100644 (file)
@@ -17,9 +17,7 @@ properties:
   compatible:
     const: stericsson,ab8500-fg
 
-  monitored-battery:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description: phandle to battery node
+  monitored-battery: true
 
   battery:
     $ref: /schemas/types.yaml#/definitions/phandle
index 2d552becbfe6cb08c72f2a5584bdddc67443a2e4..65ed92bb05f30f91e24978d3261c7f29e4233e2b 100644 (file)
@@ -23,9 +23,7 @@ properties:
   interrupts:
     maxItems: 1
 
-  monitored-battery:
-    description: phandle to the battery node
-    $ref: /schemas/types.yaml#/definitions/phandle
+  monitored-battery: true
 
   summit,enable-usb-charging:
     type: boolean
@@ -94,6 +92,7 @@ properties:
     unevaluatedProperties: false
 
 allOf:
+  - $ref: power-supply.yaml#
   - if:
       properties:
         compatible:
index 3504c76a01d8df2daaf12d91bd86379807a718bd..a90d558e7f864eb8dfbf49490945fa227c91f0d4 100644 (file)
@@ -26,11 +26,7 @@ properties:
           - const: x-powers,axp813-battery-power-supply
       - const: x-powers,axp813-battery-power-supply
 
-  monitored-battery:
-    description:
-      Specifies the phandle of an optional simple-battery connected to
-      this gauge.
-    $ref: /schemas/types.yaml#/definitions/phandle
+  monitored-battery: true
 
   x-powers,no-thermistor:
     type: boolean
diff --git a/Bindings/powerpc/fsl/msi-pic.txt b/Bindings/powerpc/fsl/msi-pic.txt
deleted file mode 100644 (file)
index f8d2b7f..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-* Freescale MSI interrupt controller
-
-Required properties:
-- compatible : compatible list, may contain one or two entries
-  The first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572,
-  etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" or
-  "fsl,mpic-msi-v4.3" depending on the parent type and version. If mpic
-  version is 4.3, the number of MSI registers is increased to 16, MSIIR1 is
-  provided to access these 16 registers, and compatible "fsl,mpic-msi-v4.3"
-  should be used. The first entry is optional; the second entry is
-  required.
-
-- reg : It may contain one or two regions. The first region should contain
-  the address and the length of the shared message interrupt register set.
-  The second region should contain the address of aliased MSIIR or MSIIR1
-  register for platforms that have such an alias, if using MSIIR1, the second
-  region must be added because different MSI group has different MSIIR1 offset.
-
-- interrupts : each one of the interrupts here is one entry per 32 MSIs,
-  and routed to the host interrupt controller. the interrupts should
-  be set as edge sensitive.  If msi-available-ranges is present, only
-  the interrupts that correspond to available ranges shall be present.
-
-Optional properties:
-- msi-available-ranges: use <start count> style section to define which
-  msi interrupt can be used in the 256 msi interrupts. This property is
-  optional, without this, all the MSI interrupts can be used.
-  Each available range must begin and end on a multiple of 32 (i.e.
-  no splitting an individual MSI register or the associated PIC interrupt).
-  MPIC v4.3 does not support this property because the 32 interrupts of an
-  individual register are not continuous when using MSIIR1.
-
-- msi-address-64: 64-bit PCI address of the MSIIR register. The MSIIR register
-  is used for MSI messaging.  The address of MSIIR in PCI address space is
-  the MSI message address.
-
-  This property may be used in virtualized environments where the hypervisor
-  has created an alternate mapping for the MSIR block.  See below for an
-  explanation.
-
-
-Example:
-       msi@41600 {
-               compatible = "fsl,mpc8610-msi", "fsl,mpic-msi";
-               reg = <0x41600 0x80>;
-               msi-available-ranges = <0 0x100>;
-               interrupts = <
-                       0xe0 0
-                       0xe1 0
-                       0xe2 0
-                       0xe3 0
-                       0xe4 0
-                       0xe5 0
-                       0xe6 0
-                       0xe7 0>;
-               interrupt-parent = <&mpic>;
-       };
-
-       msi@41600 {
-               compatible = "fsl,mpic-msi-v4.3";
-               reg = <0x41600 0x200 0x44148 4>;
-               interrupts = <
-                       0xe0 0 0 0
-                       0xe1 0 0 0
-                       0xe2 0 0 0
-                       0xe3 0 0 0
-                       0xe4 0 0 0
-                       0xe5 0 0 0
-                       0xe6 0 0 0
-                       0xe7 0 0 0
-                       0x100 0 0 0
-                       0x101 0 0 0
-                       0x102 0 0 0
-                       0x103 0 0 0
-                       0x104 0 0 0
-                       0x105 0 0 0
-                       0x106 0 0 0
-                       0x107 0 0 0>;
-       };
-
-The Freescale hypervisor and msi-address-64
--------------------------------------------
-Normally, PCI devices have access to all of CCSR via an ATMU mapping.  The
-Freescale MSI driver calculates the address of MSIIR (in the MSI register
-block) and sets that address as the MSI message address.
-
-In a virtualized environment, the hypervisor may need to create an IOMMU
-mapping for MSIIR.  The Freescale ePAPR hypervisor has this requirement
-because of hardware limitations of the Peripheral Access Management Unit
-(PAMU), which is currently the only IOMMU that the hypervisor supports.
-The ATMU is programmed with the guest physical address, and the PAMU
-intercepts transactions and reroutes them to the true physical address.
-
-In the PAMU, each PCI controller is given only one primary window.  The
-PAMU restricts DMA operations so that they can only occur within a window.
-Because PCI devices must be able to DMA to memory, the primary window must
-be used to cover all of the guest's memory space.
-
-PAMU primary windows can be divided into 256 subwindows, and each
-subwindow can have its own address mapping ("guest physical" to "true
-physical").  However, each subwindow has to have the same alignment, which
-means they cannot be located at just any address.  Because of these
-restrictions, it is usually impossible to create a 4KB subwindow that
-covers MSIIR where it's normally located.
-
-Therefore, the hypervisor has to create a subwindow inside the same
-primary window used for memory, but mapped to the MSIR block (where MSIIR
-lives).  The first subwindow after the end of guest memory is used for
-this.  The address specified in the msi-address-64 property is the PCI
-address of MSIIR.  The hypervisor configures the PAMU to map that address to
-the true physical address of MSIIR.
index 6f69a9dfe198c188106b43decafe40bb9b89c783..df060a0d7d4a21c15e08484f5169edfba41c7b12 100644 (file)
@@ -139,10 +139,6 @@ Nintendo Wii device tree
   - interrupt-controller
   - interrupts : should contain the cascade interrupt of the "flipper" pic
 
-1.l) The General Purpose I/O (GPIO) controller node
-
-  see Documentation/devicetree/bindings/gpio/nintendo,hollywood-gpio.txt
-
 1.m) The control node
 
   Represents the control interface used to setup several miscellaneous
index 5575c58357d6e78a3c02bada54b7bdc3316fd81b..e4c2d5186dedb18701af74bbc957b82a2b0f8737 100644 (file)
@@ -14,7 +14,7 @@ description:
   The Analog Devices AXI PWM generator can generate PWM signals
   with variable pulse width and period.
 
-  https://wiki.analog.com/resources/fpga/docs/axi_pwm_gen
+  https://analogdevicesinc.github.io/hdl/library/axi_pwm_gen/index.html
 
 allOf:
   - $ref: pwm.yaml#
diff --git a/Bindings/pwm/argon40,fan-hat.yaml b/Bindings/pwm/argon40,fan-hat.yaml
new file mode 100644 (file)
index 0000000..7dbc7c2
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/argon40,fan-hat.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Argon40 Fan HAT PWM controller
+
+maintainers:
+  - Marek Vasut <marek.vasut+renesas@mailbox.org>
+
+description:
+  The trivial PWM on Argon40 Fan HAT, which is a RaspberryPi blower fan
+  hat which can be controlled over I2C, generates a fixed 30 kHz period
+  PWM signal with configurable 0..100% duty cycle to control the fan
+  speed.
+
+allOf:
+  - $ref: pwm.yaml#
+
+properties:
+  compatible:
+    const: argon40,fan-hat
+
+  reg:
+    maxItems: 1
+
+  "#pwm-cells":
+    const: 3
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      pwm@1a {
+        compatible = "argon40,fan-hat";
+        reg = <0x1a>;
+        #pwm-cells = <3>;
+      };
+    };
diff --git a/Bindings/pwm/lpc1850-sct-pwm.txt b/Bindings/pwm/lpc1850-sct-pwm.txt
deleted file mode 100644 (file)
index 43d9f4f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-* NXP LPC18xx State Configurable Timer - Pulse Width Modulator driver
-
-Required properties:
-  - compatible: Should be "nxp,lpc1850-sct-pwm"
-  - reg: Should contain physical base address and length of pwm registers.
-  - clocks: Must contain an entry for each entry in clock-names.
-    See ../clock/clock-bindings.txt for details.
-  - clock-names: Must include the following entries.
-    - pwm: PWM operating clock.
-  - #pwm-cells: Should be 3. See pwm.yaml in this directory for the description
-    of the cells format.
-
-Example:
-  pwm: pwm@40000000 {
-    compatible = "nxp,lpc1850-sct-pwm";
-    reg = <0x40000000 0x1000>;
-    clocks =<&ccu1 CLK_CPU_SCT>;
-    clock-names = "pwm";
-    #pwm-cells = <3>;
-  };
diff --git a/Bindings/pwm/lpc32xx-pwm.txt b/Bindings/pwm/lpc32xx-pwm.txt
deleted file mode 100644 (file)
index 74b5bc5..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-LPC32XX PWM controller
-
-Required properties:
-- compatible: should be "nxp,lpc3220-pwm"
-- reg: physical base address and length of the controller's registers
-
-Examples:
-
-pwm@4005c000 {
-       compatible = "nxp,lpc3220-pwm";
-       reg = <0x4005c000 0x4>;
-};
-
-pwm@4005c004 {
-       compatible = "nxp,lpc3220-pwm";
-       reg = <0x4005c004 0x4>;
-};
index 9ee1946dc2e1202b1461b86322325e6cca3582af..8df327e5281075043600ea158e664f71e24317d5 100644 (file)
@@ -11,26 +11,47 @@ maintainers:
 
 allOf:
   - $ref: pwm.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: spacemit,k1-pwm
+    then:
+      properties:
+        "#pwm-cells":
+          const: 3
+    else:
+      properties:
+        "#pwm-cells":
+          const: 1
+          description: |
+            Used for specifying the period length in nanoseconds.
 
 properties:
   compatible:
-    enum:
-      - marvell,pxa250-pwm
-      - marvell,pxa270-pwm
-      - marvell,pxa168-pwm
-      - marvell,pxa910-pwm
+    oneOf:
+      - enum:
+          - marvell,pxa250-pwm
+          - marvell,pxa270-pwm
+          - marvell,pxa168-pwm
+          - marvell,pxa910-pwm
+      - items:
+          - const: spacemit,k1-pwm
+          - const: marvell,pxa910-pwm
 
   reg:
     # Length should be 0x10
     maxItems: 1
 
   "#pwm-cells":
-    # Used for specifying the period length in nanoseconds
-    const: 1
+    description: Number of cells in a pwm specifier.
 
   clocks:
     maxItems: 1
 
+  resets:
+    maxItems: 1
+
 required:
   - compatible
   - reg
index d515c09e102176930cc99f4635b32e67087006b3..fc31758a40b06b8d1ddfa2b1e259d03557d32088 100644 (file)
@@ -18,6 +18,7 @@ properties:
       - enum:
           - mediatek,mt2712-pwm
           - mediatek,mt6795-pwm
+          - mediatek,mt6991-pwm
           - mediatek,mt7622-pwm
           - mediatek,mt7623-pwm
           - mediatek,mt7628-pwm
@@ -32,6 +33,10 @@ properties:
           - enum:
               - mediatek,mt8195-pwm
           - const: mediatek,mt8183-pwm
+      - items:
+          - enum:
+              - mediatek,mt8196-pwm
+          - const: mediatek,mt6991-pwm
 
   reg:
     maxItems: 1
diff --git a/Bindings/pwm/nxp,lpc1850-sct-pwm.yaml b/Bindings/pwm/nxp,lpc1850-sct-pwm.yaml
new file mode 100644 (file)
index 0000000..ffda012
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/nxp,lpc1850-sct-pwm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC18xx State Configurable Timer
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc1850-sct-pwm
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: pwm
+
+  '#pwm-cells':
+    const: 3
+
+  resets:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - '#pwm-cells'
+
+allOf:
+  - $ref: pwm.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc18xx-ccu.h>
+
+    pwm@40000000 {
+        compatible = "nxp,lpc1850-sct-pwm";
+        reg = <0x40000000 0x1000>;
+        clocks =<&ccu1 CLK_CPU_SCT>;
+        clock-names = "pwm";
+        #pwm-cells = <3>;
+    };
diff --git a/Bindings/pwm/nxp,lpc3220-pwm.yaml b/Bindings/pwm/nxp,lpc3220-pwm.yaml
new file mode 100644 (file)
index 0000000..d8ebb07
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/nxp,lpc3220-pwm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC32XX PWM controller
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - nxp,lpc3220-pwm
+      - nxp,lpc3220-motor-pwm
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  '#pwm-cells':
+    const: 3
+
+required:
+  - compatible
+  - reg
+  - '#pwm-cells'
+
+allOf:
+  - $ref: pwm.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    pwm@4005c000 {
+        compatible = "nxp,lpc3220-pwm";
+        reg = <0x4005c000 0x4>;
+        #pwm-cells = <3>;
+    };
+
index bbb6326d47d76fcd26d6bae5b235063d71a2c434..e0e91aa237ec5b7e917b86d132a2c1a356d0616b 100644 (file)
@@ -17,7 +17,9 @@ allOf:
 
 properties:
   compatible:
-    const: sophgo,sg2042-pwm
+    enum:
+      - sophgo,sg2042-pwm
+      - sophgo,sg2044-pwm
 
   reg:
     maxItems: 1
index e6ffbc2a229884f54c5f730723d29db8e984f490..57ff6bf1e188008fb1b88ab4c4573e1808d33b01 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Infineon Buck Regulators with PMBUS interfaces
 
 maintainers:
-  - Not Me.
+  - Guenter Roeck <linux@roeck-us.net>
 
 allOf:
   - $ref: regulator.yaml#
index 704828687970ec9316300d66112f3d5459cab5f5..685ccf9cf4d489760dfe441e3a08d7fe63846783 100644 (file)
@@ -17,9 +17,11 @@ properties:
   compatible:
     enum:
       - mediatek,mt6873-dvfsrc-regulator
+      - mediatek,mt6893-dvfsrc-regulator
       - mediatek,mt8183-dvfsrc-regulator
       - mediatek,mt8192-dvfsrc-regulator
       - mediatek,mt8195-dvfsrc-regulator
+      - mediatek,mt8196-dvfsrc-regulator
 
   dvfsrc-vcore:
     description: DVFSRC-controlled SoC Vcore regulator
index 4ffe5c3faea0758682c2767abc2679b8cf68633b..a5486c36830f0ba8d54fbcd36b29dcdb015e4456 100644 (file)
@@ -100,6 +100,15 @@ properties:
               PMIC default "STANDBY" state voltage in uV. Only Buck1~3 have such
               dvs(dynamic voltage scaling) property.
 
+          regulator-allowed-modes:
+            description: |
+              Buck regulator operating modes allowed. Valid values below.
+              Users should use the macros from dt-bindings/regulator/nxp,pca9450-regulator.h
+                0 (PCA9450_BUCK_MODE_AUTO): Auto PFM/PWM mode
+                1 (PCA9450_BUCK_MODE_FORCE_PWM): Forced PWM mode
+            items:
+              enum: [ 0, 1 ]
+
         unevaluatedProperties: false
 
     additionalProperties: false
@@ -143,6 +152,7 @@ allOf:
 examples:
   - |
     #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/regulator/nxp,pca9450-regulator.h>
 
     i2c {
         #address-cells = <1>;
@@ -179,6 +189,8 @@ examples:
                     regulator-max-microvolt = <3400000>;
                     regulator-boot-on;
                     regulator-always-on;
+                    regulator-initial-mode = <PCA9450_BUCK_MODE_FORCE_PWM>;
+                    regulator-allowed-modes = <PCA9450_BUCK_MODE_FORCE_PWM>;
                 };
                 buck5: BUCK5 {
                     regulator-name = "BUCK5";
@@ -186,6 +198,8 @@ examples:
                     regulator-max-microvolt = <3400000>;
                     regulator-boot-on;
                     regulator-always-on;
+                    regulator-allowed-modes = <PCA9450_BUCK_MODE_AUTO
+                                               PCA9450_BUCK_MODE_FORCE_PWM>;
                 };
                 buck6: BUCK6 {
                     regulator-name = "BUCK6";
index 3a5a0a6cf5cc7090f3e09850e9a13b7e6eeac68e..4c5b0629aa3e622579b54a226785139a0b986079 100644 (file)
@@ -40,6 +40,7 @@ description: |
       For PM660, smps1 - smps6, ldo1 - ldo3, ldo5 - ldo19
       For PM660L, smps1 - smps3, smps5, ldo1 - ldo8, bob
       For PM7325, smps1 - smps8, ldo1 - ldo19
+      For PM7550, smps1 - smps6, ldo1 - ldo23, bob
       For PM8005, smps1 - smps4
       For PM8009, smps1 - smps2, ldo1 - ldo7
       For PM8010, ldo1 - ldo7
@@ -53,6 +54,7 @@ description: |
       For PMI8998, bob
       For PMC8380, smps1 - smps8, ldo1 - lodo3
       For PMR735A, smps1 - smps3, ldo1 - ldo7
+      For PMR735B, ldo1 - ldo12
       For PMX55, smps1 - smps7, ldo1 - ldo16
       For PMX65, smps1 - smps8, ldo1 - ldo21
       For PMX75, smps1 - smps10, ldo1 - ldo21
@@ -66,6 +68,7 @@ properties:
       - qcom,pm660-rpmh-regulators
       - qcom,pm660l-rpmh-regulators
       - qcom,pm7325-rpmh-regulators
+      - qcom,pm7550-rpmh-regulators
       - qcom,pm8005-rpmh-regulators
       - qcom,pm8009-rpmh-regulators
       - qcom,pm8009-1-rpmh-regulators
@@ -87,6 +90,7 @@ properties:
       - qcom,pmm8155au-rpmh-regulators
       - qcom,pmm8654au-rpmh-regulators
       - qcom,pmr735a-rpmh-regulators
+      - qcom,pmr735b-rpmh-regulators
       - qcom,pmx55-rpmh-regulators
       - qcom,pmx65-rpmh-regulators
       - qcom,pmx75-rpmh-regulators
@@ -218,6 +222,25 @@ allOf:
         "^vdd-l[358]-supply$": true
         "^vdd-s[1-8]-supply$": true
 
+  - if:
+      properties:
+        compatible:
+          enum:
+            - qcom,pm7550-rpmh-regulators
+    then:
+      properties:
+        vdd-bob-supply:
+          description: BOB regulator parent supply phandle.
+        vdd-l2-l3-supply: true
+        vdd-l4-l5-supply: true
+        vdd-l9-l10-supply: true
+        vdd-l12-l14-supply: true
+        vdd-l13-l16-supply: true
+        vdd-l15-l17-l18-l19-l20-l21-l22-l23-supply: true
+      patternProperties:
+        "^vdd-l(1|[6-8]|11)-supply$": true
+        "^vdd-s[1-6]-supply$": true
+
   - if:
       properties:
         compatible:
@@ -424,6 +447,18 @@ allOf:
       patternProperties:
         "^vdd-s[1-3]-supply$": true
 
+  - if:
+      properties:
+        compatible:
+          enum:
+            - qcom,pmr735b-rpmh-regulators
+    then:
+      properties:
+        vdd-l1-l2-supply: true
+        vdd-l7-l8-supply: true
+      patternProperties:
+        "^vdd-l([3-6]|9|1[0-2])-supply$": true
+
   - if:
       properties:
         compatible:
index 41678400e63fa6f487a361544201cd76ef6ae95f..18944d39d08fcb62fa6a5530b064f54482bf83e3 100644 (file)
@@ -12,14 +12,17 @@ maintainers:
 description: |
   The RaspberryPi 7" display has an ATTINY88-based regulator/backlight
   controller on the PCB, which is used to turn the display unit on/off
-  and control the backlight.
+  and control the backlight. The V2 supports 5" and 7" panels and also
+  offers PWM backlight control.
 
 allOf:
   - $ref: regulator.yaml#
 
 properties:
   compatible:
-    const: raspberrypi,7inch-touchscreen-panel-regulator
+    enum:
+      - raspberrypi,7inch-touchscreen-panel-regulator
+      - raspberrypi,touchscreen-panel-regulator-v2
 
   reg:
     maxItems: 1
index a66007951d585b779a9de593851cf2317d3da79b..188a251940001b8535ee7005f1595f42f6ab9b34 100644 (file)
@@ -144,8 +144,8 @@ examples:
 
         interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
                               <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
-                              <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
                               <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
+                              <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
                               <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>;
         interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
 
index 5dcc2a32c080049ac6c486614a5bd4d71fd3ed62..a8cddf7e2fe1a84064730d847d2f0601b67572ff 100644 (file)
@@ -15,17 +15,26 @@ description:
 
 properties:
   compatible:
-    enum:
-      - qcom,sc8180x-adsp-pas
-      - qcom,sc8180x-cdsp-pas
-      - qcom,sc8180x-slpi-pas
-      - qcom,sm8150-adsp-pas
-      - qcom,sm8150-cdsp-pas
-      - qcom,sm8150-mpss-pas
-      - qcom,sm8150-slpi-pas
-      - qcom,sm8250-adsp-pas
-      - qcom,sm8250-cdsp-pas
-      - qcom,sm8250-slpi-pas
+    oneOf:
+      - items:
+          - enum:
+              - qcom,qcs615-adsp-pas
+          - const: qcom,sm8150-adsp-pas
+      - items:
+          - enum:
+              - qcom,qcs615-cdsp-pas
+          - const: qcom,sm8150-cdsp-pas
+      - enum:
+          - qcom,sc8180x-adsp-pas
+          - qcom,sc8180x-cdsp-pas
+          - qcom,sc8180x-slpi-pas
+          - qcom,sm8150-adsp-pas
+          - qcom,sm8150-cdsp-pas
+          - qcom,sm8150-mpss-pas
+          - qcom,sm8150-slpi-pas
+          - qcom,sm8250-adsp-pas
+          - qcom,sm8250-cdsp-pas
+          - qcom,sm8250-slpi-pas
 
   reg:
     maxItems: 1
@@ -62,16 +71,17 @@ allOf:
   - if:
       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
-            - qcom,sm8250-adsp-pas
-            - qcom,sm8250-cdsp-pas
-            - qcom,sm8250-slpi-pas
+          contains:
+            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
+              - qcom,sm8250-adsp-pas
+              - qcom,sm8250-cdsp-pas
+              - qcom,sm8250-slpi-pas
     then:
       properties:
         interrupts:
@@ -88,12 +98,13 @@ allOf:
   - if:
       properties:
         compatible:
-          enum:
-            - qcom,sc8180x-adsp-pas
-            - qcom,sc8180x-cdsp-pas
-            - qcom,sm8150-adsp-pas
-            - qcom,sm8150-cdsp-pas
-            - qcom,sm8250-cdsp-pas
+          contains:
+            enum:
+              - qcom,sc8180x-adsp-pas
+              - qcom,sc8180x-cdsp-pas
+              - qcom,sm8150-adsp-pas
+              - qcom,sm8150-cdsp-pas
+              - qcom,sm8250-cdsp-pas
     then:
       properties:
         power-domains:
index f9b2f0fdc282f0138a016d4cdd40fe8f6f964e3c..4380f622f9a914291cdadef04d1051facc73fcfe 100644 (file)
@@ -36,12 +36,13 @@ required:
 examples:
   - |
     reserved-memory {
-       #address-cells = <2>;
-       #size-cells = <2>;
-       dram_cpu_bpmp_mail: shmem@f1be0000 {
-           compatible = "nvidia,tegra264-bpmp-shmem";
-           reg = <0x0 0xf1be0000 0x0 0x2000>;
-           no-map;
-       };
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        shmem@f1be0000 {
+            compatible = "nvidia,tegra264-bpmp-shmem";
+            reg = <0x0 0xf1be0000 0x0 0x2000>;
+            no-map;
+        };
     };
 ...
diff --git a/Bindings/reset/canaan,k230-rst.yaml b/Bindings/reset/canaan,k230-rst.yaml
new file mode 100644 (file)
index 0000000..d352d0e
--- /dev/null
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/reset/canaan,k230-rst.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Canaan Kendryte K230 Reset Controller
+
+maintainers:
+  - Junhui Liu <junhui.liu@pigmoral.tech>
+
+description:
+  The Canaan Kendryte K230 reset controller is part of the SoC's system
+  controller and controls the reset registers for CPUs and various peripherals.
+
+properties:
+  compatible:
+    const: canaan,k230-rst
+
+  reg:
+    maxItems: 1
+
+  '#reset-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - '#reset-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    reset-controller@91101000 {
+      compatible = "canaan,k230-rst";
+      reg = <0x91101000 0x1000>;
+      #reset-cells = <1>;
+    };
diff --git a/Bindings/reset/nxp,lpc1850-rgu.txt b/Bindings/reset/nxp,lpc1850-rgu.txt
deleted file mode 100644 (file)
index 05d5be4..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-NXP LPC1850  Reset Generation Unit (RGU)
-========================================
-
-Please also refer to reset.txt in this directory for common reset
-controller binding usage.
-
-Required properties:
-- compatible: Should be "nxp,lpc1850-rgu"
-- reg: register base and length
-- clocks: phandle and clock specifier to RGU clocks
-- clock-names: should contain "delay" and "reg"
-- #reset-cells: should be 1
-
-See table below for valid peripheral reset numbers. Numbers not
-in the table below are either reserved or not applicable for
-normal operation.
-
-Reset  Peripheral
-  9    System control unit (SCU)
- 12    ARM Cortex-M0 subsystem core (LPC43xx only)
- 13    CPU core
- 16    LCD controller
- 17    USB0
- 18    USB1
- 19    DMA
- 20    SDIO
- 21    External memory controller (EMC)
- 22    Ethernet
- 25    Flash bank A
- 27    EEPROM
- 28    GPIO
- 29    Flash bank B
- 32    Timer0
- 33    Timer1
- 34    Timer2
- 35    Timer3
- 36    Repetitive Interrupt timer (RIT)
- 37    State Configurable Timer (SCT)
- 38    Motor control PWM (MCPWM)
- 39    QEI
- 40    ADC0
- 41    ADC1
- 42    DAC
- 44    USART0
- 45    UART1
- 46    USART2
- 47    USART3
- 48    I2C0
- 49    I2C1
- 50    SSP0
- 51    SSP1
- 52    I2S0 and I2S1
- 53    Serial Flash Interface (SPIFI)
- 54    C_CAN1
- 55    C_CAN0
- 56    ARM Cortex-M0 application core (LPC4370 only)
- 57    SGPIO (LPC43xx only)
- 58    SPI (LPC43xx only)
- 60    ADCHS (12-bit ADC) (LPC4370 only)
-
-Refer to NXP LPC18xx or LPC43xx user manual for more details about
-the reset signals and the connected block/peripheral.
-
-Reset provider example:
-rgu: reset-controller@40053000 {
-       compatible = "nxp,lpc1850-rgu";
-       reg = <0x40053000 0x1000>;
-       clocks = <&cgu BASE_SAFE_CLK>, <&ccu1 CLK_CPU_BUS>;
-       clock-names = "delay", "reg";
-       #reset-cells = <1>;
-};
-
-Reset consumer example:
-mac: ethernet@40010000 {
-       compatible = "nxp,lpc1850-dwmac", "snps,dwmac-3.611", "snps,dwmac";
-       reg = <0x40010000 0x2000>;
-       interrupts = <5>;
-       interrupt-names = "macirq";
-       clocks = <&ccu1 CLK_CPU_ETHERNET>;
-       clock-names = "stmmaceth";
-       resets = <&rgu 22>;
-       reset-names = "stmmaceth";
-};
diff --git a/Bindings/reset/nxp,lpc1850-rgu.yaml b/Bindings/reset/nxp,lpc1850-rgu.yaml
new file mode 100644 (file)
index 0000000..9c3c13c
--- /dev/null
@@ -0,0 +1,101 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/reset/nxp,lpc1850-rgu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC1850  Reset Generation Unit (RGU)
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc1850-rgu
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: delay
+      - const: reg
+
+  '#reset-cells':
+    const: 1
+    description: |
+      See table below for valid peripheral reset numbers. Numbers not
+      in the table below are either reserved or not applicable for
+      normal operation.
+
+      Reset    Peripheral
+        9      System control unit (SCU)
+       12      ARM Cortex-M0 subsystem core (LPC43xx only)
+       13      CPU core
+       16      LCD controller
+       17      USB0
+       18      USB1
+       19      DMA
+       20      SDIO
+       21      External memory controller (EMC)
+       22      Ethernet
+       25      Flash bank A
+       27      EEPROM
+       28      GPIO
+       29      Flash bank B
+       32      Timer0
+       33      Timer1
+       34      Timer2
+       35      Timer3
+       36      Repetitive Interrupt timer (RIT)
+       37      State Configurable Timer (SCT)
+       38      Motor control PWM (MCPWM)
+       39      QEI
+       40      ADC0
+       41      ADC1
+       42      DAC
+       44      USART0
+       45      UART1
+       46      USART2
+       47      USART3
+       48      I2C0
+       49      I2C1
+       50      SSP0
+       51      SSP1
+       52      I2S0 and I2S1
+       53      Serial Flash Interface (SPIFI)
+       54      C_CAN1
+       55      C_CAN0
+       56      ARM Cortex-M0 application core (LPC4370 only)
+       57      SGPIO (LPC43xx only)
+       58      SPI (LPC43xx only)
+       60      ADCHS (12-bit ADC) (LPC4370 only)
+
+      Refer to NXP LPC18xx or LPC43xx user manual for more details about
+      the reset signals and the connected block/peripheral.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - '#reset-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc18xx-ccu.h>
+    #include <dt-bindings/clock/lpc18xx-cgu.h>
+
+    reset-controller@40053000 {
+        compatible = "nxp,lpc1850-rgu";
+        reg = <0x40053000 0x1000>;
+        clocks = <&cgu BASE_SAFE_CLK>, <&ccu1 CLK_CPU_BUS>;
+        clock-names = "delay", "reg";
+        #reset-cells = <1>;
+    };
+
index c79f61c2373bc0e0a1770d5f04779872d99ad415..c1b800a10b53a8511777cc9839c7b6826d4c667a 100644 (file)
@@ -15,7 +15,12 @@ description:
 
 properties:
   compatible:
-    const: renesas,r9a09g057-usb2phy-reset     # RZ/V2H(P)
+    oneOf:
+      - items:
+          - const: renesas,r9a09g056-usb2phy-reset # RZ/V2N
+          - const: renesas,r9a09g057-usb2phy-reset
+
+      - const: renesas,r9a09g057-usb2phy-reset # RZ/V2H(P)
 
   reg:
     maxItems: 1
diff --git a/Bindings/reset/snps,dw-reset.txt b/Bindings/reset/snps,dw-reset.txt
deleted file mode 100644 (file)
index 0c241d4..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-Synopsys DesignWare Reset controller
-=======================================
-
-Please also refer to reset.txt in this directory for common reset
-controller binding usage.
-
-Required properties:
-
-- compatible: should be one of the following.
-       "snps,dw-high-reset" - for active high configuration
-       "snps,dw-low-reset" - for active low configuration
-
-- reg: physical base address of the controller and length of memory mapped
-       region.
-
-- #reset-cells: must be 1.
-
-example:
-
-       dw_rst_1: reset-controller@0000 {
-               compatible = "snps,dw-high-reset";
-               reg = <0x0000 0x4>;
-               #reset-cells = <1>;
-       };
-
-       dw_rst_2: reset-controller@1000 {
-               compatible = "snps,dw-low-reset";
-               reg = <0x1000 0x8>;
-               #reset-cells = <1>;
-       };
diff --git a/Bindings/reset/snps,dw-reset.yaml b/Bindings/reset/snps,dw-reset.yaml
new file mode 100644 (file)
index 0000000..1dde7b6
--- /dev/null
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/reset/snps,dw-reset.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Synopsys DesignWare Reset controller
+
+maintainers:
+  - Philipp Zabel <p.zabel@pengutronix.de>
+
+properties:
+  compatible:
+    enum:
+      - snps,dw-high-reset
+      - snps,dw-low-reset
+
+  reg:
+    maxItems: 1
+
+  '#reset-cells':
+    const: 1
+
+  reset-controller: true
+
+required:
+  - compatible
+  - reg
+  - '#reset-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    reset-controller@0 {
+        compatible = "snps,dw-high-reset";
+        reg = <0x0000 0x4>;
+        #reset-cells = <1>;
+    };
index 1d1b84575960c3337d8c97818361f3e3eea90ee0..08d28313b87083065090ea9cf3724d26a5017d66 100644 (file)
@@ -16,7 +16,9 @@ properties:
           - enum:
               - sophgo,sg2044-reset
           - const: sophgo,sg2042-reset
-      - const: sophgo,sg2042-reset
+      - enum:
+          - sophgo,cv1800b-reset
+          - sophgo,sg2042-reset
 
   reg:
     maxItems: 1
diff --git a/Bindings/riscv/andes.yaml b/Bindings/riscv/andes.yaml
new file mode 100644 (file)
index 0000000..aa1edf1
--- /dev/null
@@ -0,0 +1,25 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/riscv/andes.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Andes SoC-based boards
+
+maintainers:
+  - Ben Zong-You Xie <ben717@andestech.com>
+
+description:
+  Andes SoC-based boards
+
+properties:
+  $nodename:
+    const: '/'
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - andestech,voyager
+          - const: andestech,qilai
+
+additionalProperties: true
index 2c72f148a74b019e46ad5917a0b75d45777c385e..1a0cf0702a45d2df38c48f50d66b3d2ac3715da5 100644 (file)
@@ -45,6 +45,7 @@ properties:
       - items:
           - enum:
               - amd,mbv32
+              - amd,mbv64
               - andestech,ax45mp
               - canaan,k210
               - sifive,bullet0
index b38f8252342eeb7e846d3699f0799c00d340cdcd..f78614100ea8bb1fbf5de732f72cb414163f951f 100644 (file)
@@ -24,6 +24,7 @@ properties:
       - items:
           - enum:
               - microchip,sam9x7-trng
+              - microchip,sama7d65-trng
           - const: microchip,sam9x60-trng
 
   clocks:
index 827983008ecf707019f45847cd86d5686e3b2469..817cbdaa2b2d75705eda212521186c40a9975ea0 100644 (file)
@@ -20,11 +20,17 @@ properties:
   reg:
     maxItems: 1
 
+  interrupts:
+    maxItems: 1
+
 additionalProperties: false
 
 examples:
   - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
     rng@18032000 {
         compatible = "brcm,iproc-rng200";
         reg = <0x18032000 0x28>;
+        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
     };
index 5d3ac737abcbafc9fa81ce80e32e1f9973b6b9dc..e61f22eca85b11243ae6c8ae0538d10e163a20e0 100644 (file)
@@ -16,9 +16,14 @@ allOf:
 
 properties:
   compatible:
-    enum:
-      - amlogic,a4-rtc
-      - amlogic,a5-rtc
+    oneOf:
+      - enum:
+          - amlogic,a4-rtc
+          - amlogic,a5-rtc
+      - items:
+          - enum:
+              - amlogic,c3-rtc
+          - const: amlogic,a5-rtc
 
   reg:
     maxItems: 1
index 17d6280e551501554e5634c98a9293dd10487745..a86e926ae3d1ca7997c6654ee8ebff16484beb8f 100644 (file)
@@ -28,6 +28,7 @@ properties:
               - nvidia,tegra186-rtc
               - nvidia,tegra194-rtc
               - nvidia,tegra234-rtc
+              - nvidia,tegra264-rtc
           - const: nvidia,tegra20-rtc
 
   reg:
index e88b847a1cc51ce3b34c6f4391157b874e3e9a8a..e896ba59302a45d0b15d1447440ee67325cb9d2c 100644 (file)
@@ -18,7 +18,12 @@ allOf:
 
 properties:
   compatible:
-    const: nxp,lpc1788-rtc
+    oneOf:
+      - items:
+          - enum:
+              - nxp,lpc1850-rtc
+          - const: nxp,lpc1788-rtc
+      - const: nxp,lpc1788-rtc
 
   reg:
     maxItems: 1
diff --git a/Bindings/rtc/nxp,lpc3220-rtc.yaml b/Bindings/rtc/nxp,lpc3220-rtc.yaml
new file mode 100644 (file)
index 0000000..53353de
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/rtc/nxp,lpc3220-rtc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC32xx SoC Real-time Clock
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - nxp,lpc3220-rtc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  start-year: true
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - $ref: rtc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/clock/lpc32xx-clock.h>
+
+    rtc@40024000 {
+        compatible = "nxp,lpc3220-rtc";
+        reg = <0x40024000 0x1000>;
+        interrupt-parent = <&sic1>;
+        interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clk LPC32XX_CLK_RTC>;
+    };
+
index 2f892f8640d17343ebc6b2a67d93c9b6edb0e16b..1e6277e524c273300352b68aa9c14851ebb96836 100644 (file)
@@ -12,6 +12,7 @@ maintainers:
 properties:
   compatible:
     enum:
+      - microcrystal,rv8063
       - microcrystal,rv8263
       - nxp,pcf85063
       - nxp,pcf85063a
@@ -44,13 +45,19 @@ properties:
 
   wakeup-source: true
 
+  spi-cs-high: true
+
+  spi-3wire: true
+
 allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
   - $ref: rtc.yaml#
   - if:
       properties:
         compatible:
           contains:
             enum:
+              - microcrystal,rv8063
               - microcrystal,rv8263
     then:
       properties:
@@ -65,12 +72,23 @@ allOf:
       properties:
         quartz-load-femtofarads:
           const: 7000
+  - if:
+      properties:
+        compatible:
+          not:
+            contains:
+              enum:
+                - microcrystal,rv8063
+    then:
+      properties:
+        spi-cs-high: false
+        spi-3wire: false
 
 required:
   - compatible
   - reg
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
@@ -90,3 +108,16 @@ examples:
           };
         };
       };
+
+  - |
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        rtc@0 {
+            compatible = "microcrystal,rv8063";
+            reg = <0>;
+            spi-cs-high;
+            spi-3wire;
+        };
+    };
index f6fdcc7090b6348415a6a443036e36a976bd9733..1860f0e4c31a296d557faf6cc00c53bb8d79d194 100644 (file)
@@ -61,14 +61,14 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/clock/r9a06g032-sysctrl.h>
     rtc@40006000 {
-       compatible = "renesas,r9a06g032-rtc", "renesas,rzn1-rtc";
-       reg = <0x40006000 0x1000>;
-       interrupts = <GIC_SPI 66 IRQ_TYPE_EDGE_RISING>,
-                    <GIC_SPI 67 IRQ_TYPE_EDGE_RISING>,
-                    <GIC_SPI 68 IRQ_TYPE_EDGE_RISING>;
-       interrupt-names = "alarm", "timer", "pps";
-       clocks = <&sysctrl R9A06G032_HCLK_RTC>;
-       clock-names = "hclk";
-       power-domains = <&sysctrl>;
-       start-year = <2000>;
-     };
+        compatible = "renesas,r9a06g032-rtc", "renesas,rzn1-rtc";
+        reg = <0x40006000 0x1000>;
+        interrupts = <GIC_SPI 66 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 67 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 68 IRQ_TYPE_EDGE_RISING>;
+        interrupt-names = "alarm", "timer", "pps";
+        clocks = <&sysctrl R9A06G032_HCLK_RTC>;
+        clock-names = "hclk";
+        power-domains = <&sysctrl>;
+        start-year = <2000>;
+    };
similarity index 96%
rename from Bindings/soc/sophgo/sophgo,cv1800b-rtc.yaml
rename to Bindings/rtc/sophgo,cv1800b-rtc.yaml
index 5cf186c396c99348c9d1b00990bc3e9696cae714..c695d2ff9fcc1656aca0f7359a93582db7d414e0 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/sophgo/sophgo,cv1800b-rtc.yaml#
+$id: http://devicetree.org/schemas/rtc/sophgo,cv1800b-rtc.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Real Time Clock of the Sophgo CV1800 SoC
index 7330a7200831215f3295ed42bd1a8a2f1108bb33..5e0c7cd25cc68f1a651145d57b0c2da99ae249f2 100644 (file)
@@ -63,8 +63,6 @@ properties:
       - microcrystal,rv3029
       # Real Time Clock
       - microcrystal,rv8523
-      # NXP LPC32xx SoC Real-time Clock
-      - nxp,lpc3220-rtc
       # I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC
       - ricoh,r2025sd
       # I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC
index c6bc27709bf726cc21c9c834dcc1124be34654dd..b243afa69a1aeba8748ff0be92bf5dae3f7943dc 100644 (file)
@@ -48,6 +48,50 @@ allOf:
       oneOf:
         - required: [ clock-frequency ]
         - required: [ clocks ]
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: nxp,lpc1850-uart
+    then:
+      properties:
+        clock-names:
+          items:
+            - const: uartclk
+            - const: reg
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: spacemit,k1-uart
+    then:
+      properties:
+        clock-names:
+          items:
+            - const: core
+            - const: bus
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - spacemit,k1-uart
+              - nxp,lpc1850-uart
+    then:
+      required:
+        - clocks
+        - clock-names
+      properties:
+        clocks:
+          minItems: 2
+        clock-names:
+          minItems: 2
+    else:
+      properties:
+        clocks:
+          maxItems: 1
+        clock-names:
+          maxItems: 1
 
 properties:
   compatible:
@@ -142,9 +186,25 @@ properties:
 
   clock-names:
     minItems: 1
-    items:
-      - const: core
-      - const: bus
+    maxItems: 2
+    oneOf:
+      - enum:
+          - main
+          - uart
+      - items:
+          - const: core
+          - const: bus
+      - items:
+          - const: uartclk
+          - const: reg
+
+  dmas:
+    minItems: 1
+    maxItems: 4
+
+  dma-names:
+    minItems: 1
+    maxItems: 4
 
   resets:
     maxItems: 1
@@ -233,25 +293,6 @@ required:
   - reg
   - interrupts
 
-if:
-  properties:
-    compatible:
-      contains:
-        const: spacemit,k1-uart
-then:
-  required: [clock-names]
-  properties:
-    clocks:
-      minItems: 2
-    clock-names:
-      minItems: 2
-else:
-  properties:
-    clocks:
-      maxItems: 1
-    clock-names:
-      maxItems: 1
-
 unevaluatedProperties: false
 
 examples:
index 89c462653e2d332c118526a51ee447e4c6eed526..8cc848ae11cb73d45b9d5ed0b637a1499a2fc69f 100644 (file)
@@ -41,7 +41,7 @@ properties:
           - const: dma_intr2
 
   clocks:
-    minItems: 1
+    maxItems: 1
 
   clock-names:
     const: sw_baud
index d7f047b0bf24c444e2d81e0156fb01a89207ee2a..9d3e5c1d8502272f8b08f7d59f18d5e6be25d891 100644 (file)
@@ -16,9 +16,10 @@ properties:
         items:
           - const: xlnx,xuartps
           - const: cdns,uart-r1p8
-      - description: UART controller for Zynq Ultrascale+ MPSoC
-        items:
-          - const: xlnx,zynqmp-uart
+      - items:
+          - enum:
+              - axiado,ax3000-uart
+              - xlnx,zynqmp-uart
           - const: cdns,uart-r1p12
 
   reg:
index c55d9a0efa190ef3be23be40a941904a221f2c2d..5bd8a8853ae0d4ae309d28350fd54b6f9b4e731e 100644 (file)
@@ -25,6 +25,7 @@ properties:
           - enum:
               - mediatek,mt2701-uart
               - mediatek,mt2712-uart
+              - mediatek,mt6572-uart
               - mediatek,mt6580-uart
               - mediatek,mt6582-uart
               - mediatek,mt6589-uart
diff --git a/Bindings/serial/qcom,sa8255p-geni-uart.yaml b/Bindings/serial/qcom,sa8255p-geni-uart.yaml
new file mode 100644 (file)
index 0000000..c8f0192
--- /dev/null
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/qcom,sa8255p-geni-uart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Geni based QUP UART interface
+
+maintainers:
+  - Praveen Talari <quic_ptalari@quicinc.com>
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    enum:
+      - qcom,sa8255p-geni-uart
+      - qcom,sa8255p-geni-debug-uart
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    minItems: 1
+    items:
+      - description: UART core irq
+      - description: Wakeup irq (RX GPIO)
+
+  interrupt-names:
+    description:
+      The UART interrupt and optionally the RX in-band wakeup interrupt
+      as not all UART instances have a wakeup-capable interrupt routed
+      via the PDC.
+    minItems: 1
+    items:
+      - const: uart
+      - const: wakeup
+
+  power-domains:
+    minItems: 2
+    maxItems: 2
+
+  power-domain-names:
+    items:
+      - const: power
+      - const: perf
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - power-domains
+  - power-domain-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    serial@990000 {
+        compatible = "qcom,sa8255p-geni-uart";
+        reg = <0x990000 0x4000>;
+        interrupts = <GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>;
+        power-domains = <&scmi0_pd 0>, <&scmi0_dvfs 0>;
+        power-domain-names = "power", "perf";
+    };
+...
index 9480ed30915c9c4ec1ecb3445d013ed5dcef6098..4b3f98a46cd9ded0ca526a433f9eea0e6b2bd478 100644 (file)
@@ -63,6 +63,12 @@ properties:
           - const: renesas,rcar-gen4-hscif # R-Car Gen4
           - const: renesas,hscif           # generic HSCIF compatible UART
 
+      - items:
+          - enum:
+              - renesas,hscif-r8a78000     # R-Car X5H
+          - const: renesas,rcar-gen5-hscif # R-Car Gen5
+          - const: renesas,hscif           # generic HSCIF compatible UART
+
   reg:
     maxItems: 1
 
@@ -120,6 +126,7 @@ if:
           - renesas,rcar-gen2-hscif
           - renesas,rcar-gen3-hscif
           - renesas,rcar-gen4-hscif
+          - renesas,rcar-gen5-hscif
 then:
   required:
     - resets
index ea879db5f48502a2251855ccd6ea21182362c67c..f50d8e02f47643af7970de78415babbc69fe0ccc 100644 (file)
@@ -8,14 +8,20 @@ title: Renesas RSCI Serial Communication Interface
 
 maintainers:
   - Geert Uytterhoeven <geert+renesas@glider.be>
-  - Thierry Bultel <thierry.bultel.yh@bp.renesas.com>
+  - Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
 
 allOf:
   - $ref: serial.yaml#
 
 properties:
   compatible:
-    const: renesas,r9a09g077-rsci      # RZ/T2H
+    oneOf:
+      - items:
+          - const: renesas,r9a09g087-rsci # RZ/N2H
+          - const: renesas,r9a09g077-rsci # RZ/T2H
+
+      - items:
+          - const: renesas,r9a09g077-rsci # RZ/T2H
 
   reg:
     maxItems: 1
@@ -35,10 +41,15 @@ properties:
       - const: tei
 
   clocks:
-    maxItems: 1
+    minItems: 2
+    maxItems: 3
 
   clock-names:
-    const: fck # UART functional clock
+    minItems: 2
+    items:
+      - const: operation
+      - const: bus
+      - const: sck # optional external clock input
 
   power-domains:
     maxItems: 1
@@ -60,10 +71,6 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/clock/renesas-cpg-mssr.h>
 
-    aliases {
-        serial0 = &sci0;
-    };
-
     sci0: serial@80005000 {
         compatible = "renesas,r9a09g077-rsci";
         reg = <0x80005000 0x400>;
@@ -72,7 +79,7 @@ examples:
                      <GIC_SPI 592 IRQ_TYPE_EDGE_RISING>,
                      <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>;
         interrupt-names = "eri", "rxi", "txi", "tei";
-        clocks = <&cpg CPG_MOD 108>;
-        clock-names = "fck";
+        clocks = <&cpg CPG_MOD 8>, <&cpg CPG_CORE 13>;
+        clock-names = "operation", "bus";
         power-domains = <&cpg>;
     };
index 8e82999e6acb57f469d771a8445b13de5bec5c53..e925cd4c3ac8a47e4e9c0e426675290855470ff0 100644 (file)
@@ -70,6 +70,12 @@ properties:
           - const: renesas,rcar-gen4-scif # R-Car Gen4
           - const: renesas,scif           # generic SCIF compatible UART
 
+      - items:
+          - enum:
+              - renesas,scif-r8a78000     # R-Car X5H
+          - const: renesas,rcar-gen5-scif # R-Car Gen5
+          - const: renesas,scif           # generic SCIF compatible UART
+
       - items:
           - enum:
               - renesas,scif-r9a07g044      # RZ/G2{L,LC}
@@ -86,6 +92,7 @@ properties:
       - items:
           - enum:
               - renesas,scif-r9a09g047      # RZ/G3E
+              - renesas,scif-r9a09g056      # RZ/V2N
           - const: renesas,scif-r9a09g057   # RZ/V2H fallback
 
   reg:
@@ -174,6 +181,7 @@ allOf:
               - renesas,rcar-gen2-scif
               - renesas,rcar-gen3-scif
               - renesas,rcar-gen4-scif
+              - renesas,rcar-gen5-scif
               - renesas,scif-r9a07g044
               - renesas,scif-r9a09g057
     then:
index 83d9986d8e98a2a55615d15383c9c7fc89f5b52f..1a1f991d536491007c7a87b24a6efd4ec3bc0ec7 100644 (file)
@@ -28,6 +28,10 @@ properties:
           - samsung,exynos5433-uart
           - samsung,exynos850-uart
           - samsung,exynos8895-uart
+      - items:
+          - enum:
+              - samsung,exynos2200-uart
+          - const: google,gs101-uart
       - items:
           - enum:
               - samsung,exynos7-uart
index 8f1b7f704c5bc7cb9552b7d4825d96199cbc6c4f..cb9da6c97afcfd27a315414959b2b17beb4454cf 100644 (file)
@@ -108,6 +108,9 @@ properties:
       parameter. Define this if your UART does not implement the busy functionality.
     type: boolean
 
+  power-domains:
+    maxItems: 1
+
   resets:
     minItems: 1
     maxItems: 2
index 3dc66f1de02358969d2217c99bfa69bc753cae31..f3a85c67ce8a8062a01e27b22a318046fadde655 100644 (file)
@@ -186,22 +186,22 @@ examples:
         };
 
         power-controller {
-           compatible = "amlogic,meson-axg-pwrc";
-           #power-domain-cells = <1>;
-           amlogic,ao-sysctrl = <&sysctrl_AO>;
-
-           resets = <&reset_viu>,
-                    <&reset_venc>,
-                    <&reset_vcbus>,
-                    <&reset_vencl>,
-                    <&reset_vid_lock>;
-           reset-names = "viu", "venc", "vcbus", "vencl", "vid_lock";
-           clocks = <&clk_vpu>, <&clk_vapb>;
-           clock-names = "vpu", "vapb";
+            compatible = "amlogic,meson-axg-pwrc";
+            #power-domain-cells = <1>;
+            amlogic,ao-sysctrl = <&sysctrl_AO>;
+
+            resets = <&reset_viu>,
+                     <&reset_venc>,
+                     <&reset_vcbus>,
+                     <&reset_vencl>,
+                     <&reset_vid_lock>;
+            reset-names = "viu", "venc", "vcbus", "vencl", "vid_lock";
+            clocks = <&clk_vpu>, <&clk_vapb>;
+            clock-names = "vpu", "vapb";
         };
 
         phy {
-           compatible = "amlogic,axg-mipi-pcie-analog-phy";
-           #phy-cells = <0>;
+            compatible = "amlogic,axg-mipi-pcie-analog-phy";
+            #phy-cells = <0>;
         };
     };
diff --git a/Bindings/soc/fsl/fsl,imx23-digctl.yaml b/Bindings/soc/fsl/fsl,imx23-digctl.yaml
new file mode 100644 (file)
index 0000000..3de135a
--- /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/soc/fsl/fsl,imx23-digctl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale mxs digctrl for i.MX23/i.MX28
+
+description: |
+  The digital control block provides overall control of various items within
+  the top digital block of the chip, including:
+    - Default first-level page table (DFLPT) controls
+    - HCLK performance counter
+    - Free-running microseconds counter
+    - Entropy control
+    - BIST controls for ARM Core and On-Chip RAM
+    - Chip Revision register
+    - USB loop back congtrol
+    - Other miscellaneous controls
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - fsl,imx28-digctl
+          - const: fsl,imx23-digctl
+      - const: fsl,imx23-digctl
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    digctl@8001c000 {
+        compatible = "fsl,imx28-digctl", "fsl,imx23-digctl";
+        reg = <0x8001c000 0x2000>;
+        interrupts = <89>;
+    };
+
index 41fbbe059d80cebb214317df8ae15b86573546bc..851a1260f8dc8e36870b51c3156243f4158875a6 100644 (file)
@@ -25,6 +25,7 @@ properties:
   compatible:
     items:
       - enum:
+          - qcom,milos-aoss-qmp
           - qcom,qcs615-aoss-qmp
           - qcom,qcs8300-aoss-qmp
           - qcom,qdu1000-aoss-qmp
@@ -38,6 +39,7 @@ properties:
           - qcom,sdx75-aoss-qmp
           - qcom,sdm845-aoss-qmp
           - qcom,sm6350-aoss-qmp
+          - qcom,sm7150-aoss-qmp
           - qcom,sm8150-aoss-qmp
           - qcom,sm8250-aoss-qmp
           - qcom,sm8350-aoss-qmp
index ce7e20dd22c9788adc3c5e238f5e550691d0a8e4..fdc6fc17ed716d3ca148e8c86f958a8c29638896 100644 (file)
@@ -18,6 +18,7 @@ properties:
   compatible:
     items:
       - enum:
+          - qcom,sm7150-dcc
           - qcom,sm8150-dcc
           - qcom,sc7280-dcc
           - qcom,sc7180-dcc
index f2c5ec7e6437b475525008efdd5a89af8ce50964..84218636c0d8dd9435b71f63117e9c059de22362 100644 (file)
@@ -55,25 +55,25 @@ additionalProperties: false
 examples:
   - |
     eud@88e0000 {
-           compatible = "qcom,sc7280-eud", "qcom,eud";
-           reg = <0x88e0000 0x2000>,
-                 <0x88e2000 0x1000>;
+        compatible = "qcom,sc7280-eud", "qcom,eud";
+        reg = <0x88e0000 0x2000>,
+              <0x88e2000 0x1000>;
 
-           ports {
-                   #address-cells = <1>;
-                   #size-cells = <0>;
-                   port@0 {
-                           reg = <0>;
-                           eud_ep: endpoint {
-                                   remote-endpoint = <&usb2_role_switch>;
-                           };
-                   };
+        ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            port@0 {
+                reg = <0>;
+                eud_ep: endpoint {
+                    remote-endpoint = <&usb2_role_switch>;
+                };
+            };
 
-                   port@1 {
-                           reg = <1>;
-                           eud_con: endpoint {
-                                   remote-endpoint = <&con_eud>;
-                           };
-                   };
-           };
+            port@1 {
+                reg = <1>;
+                eud_con: endpoint {
+                    remote-endpoint = <&con_eud>;
+                };
+            };
+        };
     };
index 4c9e78f29523e3d77aacb4299f64ab96f9b1a831..48114bb0c9276c9326db3256401a3ecaa8b3b9fe 100644 (file)
@@ -37,6 +37,7 @@ properties:
           - const: qcom,pmic-glink
       - items:
           - enum:
+              - qcom,milos-pmic-glink
               - qcom,sm8650-pmic-glink
               - qcom,sm8750-pmic-glink
               - qcom,x1e80100-pmic-glink
diff --git a/Bindings/soc/qcom/qcom,sa8255p-geni-se-qup.yaml b/Bindings/soc/qcom/qcom,sa8255p-geni-se-qup.yaml
new file mode 100644 (file)
index 0000000..352af34
--- /dev/null
@@ -0,0 +1,107 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/qcom/qcom,sa8255p-geni-se-qup.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: GENI Serial Engine QUP Wrapper Controller
+
+maintainers:
+  - Praveen Talari <quic_ptalari@quicinc.com>
+
+description:
+  Generic Interface (GENI) based Qualcomm Universal Peripheral (QUP) wrapper
+  is a programmable module for supporting a wide range of serial interfaces
+  like UART, SPI, I2C, I3C, etc. A single QUP module can provide up to 8 Serial
+  Interfaces, using its internal Serial Engines. The GENI Serial Engine QUP
+  Wrapper controller is modeled as a node with zero or more child nodes each
+  representing a serial engine.
+
+properties:
+  compatible:
+    const: qcom,sa8255p-geni-se-qup
+
+  reg:
+    description: QUP wrapper common register address and length.
+    maxItems: 1
+
+  "#address-cells":
+    const: 2
+
+  "#size-cells":
+    const: 2
+
+  ranges: true
+
+  iommus:
+    maxItems: 1
+
+  dma-coherent: true
+
+patternProperties:
+  "spi@[0-9a-f]+$":
+    type: object
+    description: GENI serial engine based SPI controller. SPI in master mode
+                 supports up to 50MHz, up to four chip selects, programmable
+                 data path from 4 bits to 32 bits and numerous protocol
+                 variants.
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: qcom,sa8255p-geni-spi
+
+  "i2c@[0-9a-f]+$":
+    type: object
+    description: GENI serial engine based I2C controller.
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: qcom,sa8255p-geni-i2c
+
+  "serial@[0-9a-f]+$":
+    type: object
+    description: GENI Serial Engine based UART Controller.
+    additionalProperties: true
+
+    properties:
+      compatible:
+        enum:
+          - qcom,sa8255p-geni-uart
+          - qcom,sa8255p-geni-debug-uart
+
+required:
+  - compatible
+  - reg
+  - "#address-cells"
+  - "#size-cells"
+  - ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        geniqup@9c0000 {
+            compatible = "qcom,sa8255p-geni-se-qup";
+            reg = <0 0x9c0000 0 0x6000>;
+            #address-cells = <2>;
+            #size-cells = <2>;
+            ranges;
+
+            serial@990000 {
+                compatible = "qcom,sa8255p-geni-uart";
+                reg = <0 0x990000 0 0x4000>;
+                interrupts = <GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>;
+                power-domains = <&scmi0_pd 0>, <&scmi0_dvfs 0>;
+                power-domain-names = "power", "perf";
+            };
+        };
+    };
+...
index 5e6e6e6208dc552e86222ecd06cf2fbf51a8d3e4..5f9d541d177a4265b557b02749b3b6ac6c6c7d12 100644 (file)
@@ -388,6 +388,13 @@ properties:
               - renesas,gray-hawk-single # Gray Hawk Single board (RTP8A779H0ASKB0F10S)
           - const: renesas,r8a779h0
 
+      - description: R-Car V4M-7 (R8A779H2)
+        items:
+          - enum:
+              - renesas,gray-hawk-single # Gray Hawk Single board (RTP8A779H2ASKB0F10SA001)
+          - const: renesas,r8a779h2 # ES2.x
+          - const: renesas,r8a779h0
+
       - description: R-Car H3e (R8A779M0)
         items:
           - enum:
@@ -576,7 +583,7 @@ properties:
       - description: RZ/V2H(P) (R9A09G057)
         items:
           - enum:
-              - renesas,rzv2h-evk # RZ/V2H EVK
+              - renesas,rzv2h-evk # RZ/V2H EVK (RTK0EF0168C06001BJ)
           - enum:
               - renesas,r9a09g057h41 # RZ/V2H
               - renesas,r9a09g057h42 # RZ/V2H with Mali-G31 support
@@ -595,13 +602,23 @@ properties:
       - description: RZ/T2H (R9A09G077)
         items:
           - enum:
-              - renesas,rzt2h-evk # RZ/T2H Evaluation Board
+              - renesas,rzt2h-evk # RZ/T2H Evaluation Board (RTK9RZT2H0S00000BJ)
           - enum:
               - renesas,r9a09g077m04 # RZ/T2H with Single Cortex-A55 + Dual Cortex-R52 - no security
               - renesas,r9a09g077m24 # RZ/T2H with Dual Cortex-A55 + Dual Cortex-R52 - no security
               - renesas,r9a09g077m44 # RZ/T2H with Quad Cortex-A55 + Dual Cortex-R52 - no security
           - const: renesas,r9a09g077
 
+      - description: RZ/N2H (R9A09G087)
+        items:
+          - enum:
+              - renesas,rzn2h-evk # RZ/N2H Evaluation Board (RTK9RZN2H0S00000BJ)
+          - enum:
+              - renesas,r9a09g087m04 # RZ/N2H with Single Cortex-A55 + Dual Cortex-R52 - no security
+              - renesas,r9a09g087m24 # RZ/N2H with Dual Cortex-A55 + Dual Cortex-R52 - no security
+              - renesas,r9a09g087m44 # RZ/N2H with Quad Cortex-A55 + Dual Cortex-R52 - no security
+          - const: renesas,r9a09g087
+
 additionalProperties: true
 
 ...
index ccdcc889ba8ef2f3f4622f55819631687ce2d0e3..1ab0b092e2a5f59ae47911bf5d0da3ae2d7f0e5a 100644 (file)
@@ -179,10 +179,12 @@ allOf:
       properties:
         gpio:
           type: object
+          properties:
+            compatible:
+              contains:
+                const: rockchip,rk3328-grf-gpio
 
-          $ref: /schemas/gpio/rockchip,rk3328-grf-gpio.yaml#
-
-          unevaluatedProperties: false
+          additionalProperties: true
 
         power-controller:
           type: object
index 3109df43d5028c61cbcaa597e7bd8cb530eafb37..f0fb24156da9b8980dcfd5339ae75f12a71cf6d6 100644 (file)
@@ -203,6 +203,9 @@ allOf:
     then:
       required:
         - google,pmu-intr-gen-syscon
+    else:
+      properties:
+        google,pmu-intr-gen-syscon: false
 
 examples:
   - |
index d27ed6c9d61ea9db77229eca60b6b9a0abc5d305..d8b302f975474a87e4886006cf0b21cf758e4479 100644 (file)
@@ -30,6 +30,7 @@ properties:
               - samsung,exynos8895-fsys1-sysreg
               - samsung,exynos8895-peric0-sysreg
               - samsung,exynos8895-peric1-sysreg
+              - samsung,exynosautov920-hsi2-sysreg
               - samsung,exynosautov920-peric0-sysreg
               - samsung,exynosautov920-peric1-sysreg
               - tesla,fsd-cam-sysreg
similarity index 76%
rename from Bindings/riscv/sophgo.yaml
rename to Bindings/soc/sophgo/sophgo.yaml
index b4c4d7a7d7addd5011ac033119c333d5dcab6f5e..1c502618de51f36646790f2db24957be45b078e3 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/riscv/sophgo.yaml#
+$id: http://devicetree.org/schemas/soc/sophgo/sophgo.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Sophgo SoC-based boards
@@ -26,6 +26,11 @@ properties:
           - enum:
               - sophgo,huashan-pi
           - const: sophgo,cv1812h
+      - items:
+          - enum:
+              - milkv,duo-module-01-evb
+          - const: milkv,duo-module-01
+          - const: sophgo,sg2000
       - items:
           - enum:
               - sipeed,licheerv-nano-b
@@ -34,6 +39,8 @@ properties:
       - items:
           - enum:
               - milkv,pioneer
+              - sophgo,sg2042-evb-v1
+              - sophgo,sg2042-evb-v2
           - const: sophgo,sg2042
       - items:
           - enum:
index 30aaf49da03d3f2670f107aac7c80bd6c6185f4d..133a391ee68cd64e44b9355948dfd5dff655d1e0 100644 (file)
@@ -19,6 +19,9 @@ properties:
       - spacemit,k1-syscon-apbc
       - spacemit,k1-syscon-apmu
       - spacemit,k1-syscon-mpmu
+      - spacemit,k1-syscon-rcpu
+      - spacemit,k1-syscon-rcpu2
+      - spacemit,k1-syscon-apbc2
 
   reg:
     maxItems: 1
@@ -47,9 +50,6 @@ properties:
 required:
   - compatible
   - reg
-  - clocks
-  - clock-names
-  - "#clock-cells"
   - "#reset-cells"
 
 allOf:
@@ -57,13 +57,28 @@ allOf:
       properties:
         compatible:
           contains:
-            const: spacemit,k1-syscon-apbc
+            enum:
+              - spacemit,k1-syscon-apmu
+              - spacemit,k1-syscon-mpmu
     then:
+      required:
+        - "#power-domain-cells"
+    else:
       properties:
         "#power-domain-cells": false
-    else:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - spacemit,k1-syscon-apbc
+              - spacemit,k1-syscon-apmu
+              - spacemit,k1-syscon-mpmu
+    then:
       required:
-        - "#power-domain-cells"
+        - clocks
+        - clock-names
+        - "#clock-cells"
 
 additionalProperties: false
 
diff --git a/Bindings/soc/ti/ti,j784s4-bist.yaml b/Bindings/soc/ti/ti,j784s4-bist.yaml
new file mode 100644 (file)
index 0000000..a73691c
--- /dev/null
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright (C) 2025 Texas Instruments Incorporated
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/ti/ti,j784s4-bist.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments K3 BIST
+
+maintainers:
+  - Neha Malcom Francis <n-francis@ti.com>
+
+allOf:
+  - $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#
+
+description:
+  The BIST (Built-In Self Test) module is an IP block present in K3 devices
+  that support triggering of BIST tests, both PBIST (Memory BIST) and LBIST
+  (Logic BIST) on a core. Both tests are destructive in nature. At boot, BIST
+  is executed by hardware for the MCU domain automatically as part of HW POST.
+
+properties:
+  compatible:
+    const: ti,j784s4-bist
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: cfg
+      - const: ctrl_mmr
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - ti,sci-dev-id
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/soc/ti,sci_pm_domain.h>
+    bus {
+        #address-cells = <2>;
+        #size-cells = <2>;
+        safety-selftest@33c0000 {
+            compatible = "ti,j784s4-bist";
+            reg = <0x00 0x033c0000 0x00 0x400>,
+                  <0x00 0x0010c1a0 0x00 0x01c>;
+            reg-names = "cfg", "ctrl_mmr";
+            clocks = <&k3_clks 237 7>;
+            power-domains = <&k3_pds 237 TI_SCI_PD_EXCLUSIVE>;
+            ti,sci-dev-id = <234>;
+        };
+    };
index 0df41c4f60c11155df6b6c5cbdb7a5e295347d3d..56b16183c885860ce11fb5664e768100f088cad8 100644 (file)
@@ -121,13 +121,13 @@ examples:
         };
 
         wkup_m3_ipc@1324 {
-           compatible = "ti,am3352-wkup-m3-ipc";
-           reg = <0x1324 0x24>;
-           interrupts = <78>;
-           ti,rproc = <&wkup_m3>;
-           mboxes = <&am335x_mailbox &mbox_wkupm3>;
-           ti,vtt-gpio-pin = <7>;
-           firmware-name = "am335x-evm-scale-data.bin";
+            compatible = "ti,am3352-wkup-m3-ipc";
+            reg = <0x1324 0x24>;
+            interrupts = <78>;
+            ti,rproc = <&wkup_m3>;
+            mboxes = <&am335x_mailbox &mbox_wkupm3>;
+            ti,vtt-gpio-pin = <7>;
+            firmware-name = "am335x-evm-scale-data.bin";
         };
     };
 
@@ -155,20 +155,20 @@ examples:
             pinctrl-0 = <&ddr3_vtt_toggle_default>;
 
             ddr3_vtt_toggle_default: ddr_vtt_toggle_default {
-                 pinctrl-single,pins = <
+                pinctrl-single,pins = <
                     0x25C (DS0_PULL_UP_DOWN_EN | PIN_OUTPUT_PULLUP | DS0_FORCE_OFF_MODE | MUX_MODE7)
-                 >;
+                >;
             };
         };
 
         wkup_m3_ipc@1324 {
-           compatible = "ti,am4372-wkup-m3-ipc";
-           reg = <0x1324 0x24>;
-           interrupts = <78>;
-           ti,rproc = <&wkup_m3>;
-           mboxes = <&am437x_mailbox &mbox_wkupm3>;
-           ti,set-io-isolation;
-           firmware-name = "am43x-evm-scale-data.bin";
+            compatible = "ti,am4372-wkup-m3-ipc";
+            reg = <0x1324 0x24>;
+            interrupts = <78>;
+            ti,rproc = <&wkup_m3>;
+            mboxes = <&am437x_mailbox &mbox_wkupm3>;
+            ti,set-io-isolation;
+            firmware-name = "am43x-evm-scale-data.bin";
         };
     };
 
index a05e614318242e1b3c0ca21973c4755f014a797c..ce99c2d8c35dbdd6d59ddf295a8d1acc73d9fddc 100644 (file)
@@ -16,9 +16,14 @@ description:
 
 properties:
   compatible:
-    enum:
-      - atmel,at91rm9200-ssc
-      - atmel,at91sam9g45-ssc
+    oneOf:
+      - enum:
+          - atmel,at91rm9200-ssc
+          - atmel,at91sam9g45-ssc
+      - items:
+          - enum:
+              - microchip,sam9x7-ssc
+          - const: atmel,at91sam9g45-ssc
 
   reg:
     maxItems: 1
index 725b47e82062a2e1185bdc6ff044414de27220c8..cd47905eb20a79dbcfc95cad91b51cff0bd1c099 100644 (file)
@@ -41,6 +41,10 @@ properties:
     description: This pin is connected to the chip's RESET pin.
     maxItems: 1
 
+  port:
+    $ref: audio-graph-port.yaml#
+    unevaluatedProperties: false
+
 required:
   - compatible
   - reg
diff --git a/Bindings/sound/fsl,mxs-audio-sgtl5000.yaml b/Bindings/sound/fsl,mxs-audio-sgtl5000.yaml
new file mode 100644 (file)
index 0000000..d12774b
--- /dev/null
@@ -0,0 +1,81 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/fsl,mxs-audio-sgtl5000.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale MXS audio complex with SGTL5000 codec
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - bluegiga,apx4devkit-sgtl5000
+          - denx,m28evk-sgtl5000
+          - fsl,imx28-evk-sgtl5000
+          - fsl,imx28-mbmx28lc-sgtl5000
+          - fsl,imx28-tx28-sgtl5000
+      - const: fsl,mxs-audio-sgtl5000
+
+  model:
+    $ref: /schemas/types.yaml#/definitions/string
+    description: The user-visible name of this sound complex
+
+  saif-controllers:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description: The phandle list of the MXS SAIF controller
+
+  audio-codec:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: The phandle of the SGTL5000 audio codec
+
+  audio-routing:
+    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
+    description: |
+      A list of the connections between audio components.
+      Each entry is a pair of strings, the first being the
+      connection's sink, the second being the connection's
+      source. Valid names could be power supplies, SGTL5000
+      pins, and the jacks on the board:
+
+      Power supplies:
+        * Mic Bias
+
+      SGTL5000 pins:
+        * MIC_IN
+        * LINE_IN
+        * HP_OUT
+        * LINE_OUT
+
+      Board connectors:
+        * Mic Jack
+        * Line In Jack
+        * Headphone Jack
+        * Line Out Jack
+        * Ext Spk
+
+required:
+  - compatible
+  - saif-controllers
+  - audio-codec
+
+allOf:
+  - $ref: dai-common.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    sound {
+        compatible = "fsl,imx28-evk-sgtl5000", "fsl,mxs-audio-sgtl5000";
+        model = "imx28-evk-sgtl5000";
+        saif-controllers = <&saif0 &saif1>;
+        audio-codec = <&sgtl5000>;
+        audio-routing =
+            "MIC_IN", "Mic Jack",
+            "Mic Jack", "Mic Bias",
+            "Headphone Jack", "HP_OUT";
+    };
diff --git a/Bindings/sound/mediatek,mt8173-afe-pcm.yaml b/Bindings/sound/mediatek,mt8173-afe-pcm.yaml
new file mode 100644 (file)
index 0000000..d8993b5
--- /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/sound/mediatek,mt8173-afe-pcm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Mediatek AFE PCM controller for MT8173
+
+maintainers:
+  - Trevor Wu <trevor.wu@mediatek.com>
+
+properties:
+  compatible:
+    const: mediatek,mt8173-afe-pcm
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: audio infra sys clock
+      - description: audio top mux
+      - description: audio intbus mux
+      - description: apll1 clock
+      - description: apll2 clock
+      - description: i2s0 mclk mux
+      - description: i2s1 mclk mux
+      - description: i2s2 mclk mux
+      - description: i2s3 mclk mux
+      - description: i2s3 bclk mux
+
+  clock-names:
+    items:
+      - const: infra_sys_audio_clk
+      - const: top_pdn_audio
+      - const: top_pdn_aud_intbus
+      - const: bck0
+      - const: bck1
+      - const: i2s0_m
+      - const: i2s1_m
+      - const: i2s2_m
+      - const: i2s3_m
+      - const: i2s3_b
+
+  power-domains:
+    maxItems: 1
+
+  memory-region:
+    description: memory region for audio DMA buffers
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - power-domains
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/mt8173-clk.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/power/mt8173-power.h>
+
+    mt8173-afe-pcm@11220000 {
+        compatible = "mediatek,mt8173-afe-pcm";
+        reg = <0x11220000 0x1000>;
+        interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_FALLING>;
+        power-domains = <&spm MT8173_POWER_DOMAIN_AUDIO>;
+        clocks = <&infracfg CLK_INFRA_AUDIO>,
+                 <&topckgen CLK_TOP_AUDIO_SEL>,
+                 <&topckgen CLK_TOP_AUD_INTBUS_SEL>,
+                 <&topckgen CLK_TOP_APLL1_DIV0>,
+                 <&topckgen CLK_TOP_APLL2_DIV0>,
+                 <&topckgen CLK_TOP_I2S0_M_SEL>,
+                 <&topckgen CLK_TOP_I2S1_M_SEL>,
+                 <&topckgen CLK_TOP_I2S2_M_SEL>,
+                 <&topckgen CLK_TOP_I2S3_M_SEL>,
+                 <&topckgen CLK_TOP_I2S3_B_SEL>;
+         clock-names = "infra_sys_audio_clk",
+                       "top_pdn_audio",
+                       "top_pdn_aud_intbus",
+                       "bck0",
+                       "bck1",
+                       "i2s0_m",
+                       "i2s1_m",
+                       "i2s2_m",
+                       "i2s3_m",
+                       "i2s3_b";
+          memory-region = <&afe_dma_mem>;
+    };
index 7fe85b08f9dfa03caf4cf1e81f831b02a28cc05c..f5af2cf18158bbe05fcd0560ca2a87adb5c0c25e 100644 (file)
@@ -25,6 +25,10 @@ properties:
   reset-names:
     const: audiosys
 
+  memory-region:
+    description: memory region for audio DMA buffers
+    maxItems: 1
+
   mediatek,apmixedsys:
     $ref: /schemas/types.yaml#/definitions/phandle
     description: The phandle of the mediatek apmixedsys controller
@@ -170,6 +174,7 @@ examples:
                       "top_apll12_div_tdm",
                       "top_mux_audio_h",
                       "top_clk26m_clk";
+        memory-region = <&afe_dma_mem>;
     };
 
 ...
index 064ef172bef4c333f6efe3d7efeffcfa6b941358..8ddf49b0040d6e673ea9fc9d53953e358c88571b 100644 (file)
@@ -23,6 +23,10 @@ properties:
   reset-names:
     const: audiosys
 
+  memory-region:
+    description: memory region for audio DMA buffers
+    maxItems: 1
+
   mediatek,apmixedsys:
     $ref: /schemas/types.yaml#/definitions/phandle
     description: The phandle of the mediatek apmixedsys controller
@@ -95,6 +99,7 @@ examples:
                       "aud_dac_predis_clk",
                       "aud_infra_clk",
                       "aud_infra_26m_clk";
+        memory-region = <&afe_dma_mem>;
     };
 
 ...
diff --git a/Bindings/sound/mtk-afe-pcm.txt b/Bindings/sound/mtk-afe-pcm.txt
deleted file mode 100644 (file)
index e302c7f..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-Mediatek AFE PCM controller
-
-Required properties:
-- compatible = "mediatek,mt8173-afe-pcm";
-- reg: register location and size
-- interrupts: Should contain AFE interrupt
-- clock-names: should have these clock names:
-               "infra_sys_audio_clk",
-               "top_pdn_audio",
-               "top_pdn_aud_intbus",
-               "bck0",
-               "bck1",
-               "i2s0_m",
-               "i2s1_m",
-               "i2s2_m",
-               "i2s3_m",
-               "i2s3_b";
-
-Example:
-
-       afe: mt8173-afe-pcm@11220000  {
-               compatible = "mediatek,mt8173-afe-pcm";
-               reg = <0 0x11220000 0 0x1000>;
-               interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_FALLING>;
-               clocks = <&infracfg INFRA_AUDIO>,
-                       <&topckgen TOP_AUDIO_SEL>,
-                       <&topckgen TOP_AUD_INTBUS_SEL>,
-                       <&topckgen TOP_APLL1_DIV0>,
-                       <&topckgen TOP_APLL2_DIV0>,
-                       <&topckgen TOP_I2S0_M_CK_SEL>,
-                       <&topckgen TOP_I2S1_M_CK_SEL>,
-                       <&topckgen TOP_I2S2_M_CK_SEL>,
-                       <&topckgen TOP_I2S3_M_CK_SEL>,
-                       <&topckgen TOP_I2S3_B_CK_SEL>;
-               clock-names = "infra_sys_audio_clk",
-                               "top_pdn_audio",
-                               "top_pdn_aud_intbus",
-                               "bck0",
-                               "bck1",
-                               "i2s0_m",
-                               "i2s1_m",
-                               "i2s2_m",
-                               "i2s3_m",
-                               "i2s3_b";
-       };
diff --git a/Bindings/sound/mxs-audio-sgtl5000.txt b/Bindings/sound/mxs-audio-sgtl5000.txt
deleted file mode 100644 (file)
index 4eb980b..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-* Freescale MXS audio complex with SGTL5000 codec
-
-Required properties:
-- compatible           : "fsl,mxs-audio-sgtl5000"
-- model                        : The user-visible name of this sound complex
-- saif-controllers     : The phandle list of the MXS SAIF controller
-- audio-codec          : The phandle of the SGTL5000 audio codec
-- audio-routing                : A list of the connections between audio components.
-                         Each entry is a pair of strings, the first being the
-                         connection's sink, the second being the connection's
-                         source. Valid names could be power supplies, SGTL5000
-                         pins, and the jacks on the board:
-
-                         Power supplies:
-                          * Mic Bias
-
-                         SGTL5000 pins:
-                          * MIC_IN
-                          * LINE_IN
-                          * HP_OUT
-                          * LINE_OUT
-
-                         Board connectors:
-                          * Mic Jack
-                          * Line In Jack
-                          * Headphone Jack
-                          * Line Out Jack
-                          * Ext Spk
-
-Example:
-
-sound {
-       compatible = "fsl,imx28-evk-sgtl5000",
-                    "fsl,mxs-audio-sgtl5000";
-       model = "imx28-evk-sgtl5000";
-       saif-controllers = <&saif0 &saif1>;
-       audio-codec = <&sgtl5000>;
-       audio-routing =
-               "MIC_IN", "Mic Jack",
-               "Mic Jack", "Mic Bias",
-               "Headphone Jack", "HP_OUT";
-};
index f41deaa6f4df57c8186acf4cd7bb99e38dbf89f0..dd549db6c841b88a31216264239fbd49798fcc33 100644 (file)
@@ -40,7 +40,11 @@ properties:
 
   clock-names:
     minItems: 1
-    maxItems: 4
+    items:
+      - const: mclk
+      - const: macro
+      - const: dcodec
+      - const: npl
 
   clock-output-names:
     maxItems: 1
@@ -80,8 +84,7 @@ allOf:
         clocks:
           maxItems: 1
         clock-names:
-          items:
-            - const: mclk
+          maxItems: 1
 
   - if:
       properties:
@@ -94,10 +97,8 @@ allOf:
           minItems: 3
           maxItems: 3
         clock-names:
-          items:
-            - const: mclk
-            - const: macro
-            - const: dcodec
+          minItems: 3
+          maxItems: 3
 
   - if:
       properties:
@@ -112,11 +113,8 @@ allOf:
           minItems: 4
           maxItems: 4
         clock-names:
-          items:
-            - const: mclk
-            - const: macro
-            - const: dcodec
-            - const: npl
+          minItems: 4
+          maxItems: 4
 
   - if:
       properties:
@@ -130,10 +128,8 @@ allOf:
           minItems: 3
           maxItems: 3
         clock-names:
-          items:
-            - const: mclk
-            - const: macro
-            - const: dcodec
+          minItems: 3
+          maxItems: 3
 
 unevaluatedProperties: false
 
index 297aa362aa54ab41a956b3ceda73d4c7027d72a7..268f7073d7972da2ef46d36264c0f7d8f648071b 100644 (file)
@@ -29,6 +29,12 @@ properties:
     unevaluatedProperties: false
     description: Qualcomm DSP audio ports
 
+  usbd:
+    type: object
+    $ref: /schemas/sound/qcom,q6usb.yaml#
+    unevaluatedProperties: false
+    description: Qualcomm DSP USB audio ports
+
 required:
   - compatible
   - dais
@@ -64,5 +70,12 @@ examples:
                     qcom,sd-lines = <0 1 2 3>;
                 };
             };
+
+            usbd {
+                compatible = "qcom,q6usb";
+                #sound-dai-cells = <1>;
+                iommus = <&apps_smmu 0x180f 0x0>;
+                qcom,usb-audio-intr-idx = /bits/ 16 <2>;
+            };
         };
     };
index 590eb177f57abd574ca0762adb90b151df196bee..5d3dbb6cb1ae89d9f0c376be580129e08a8126d1 100644 (file)
@@ -28,10 +28,12 @@ properties:
               - qcom,sm8750-sndcard
           - const: qcom,sm8450-sndcard
       - enum:
+          - fairphone,fp4-sndcard
           - fairphone,fp5-sndcard
           - qcom,apq8096-sndcard
           - qcom,qcm6490-idp-sndcard
           - qcom,qcs6490-rb3gen2-sndcard
+          - qcom,qcs8275-sndcard
           - qcom,qcs9075-sndcard
           - qcom,qcs9100-sndcard
           - qcom,qrb4210-rb2-sndcard
index c69291f4d575ca5b4fc037ac4d59c91f0df74cd1..85283f94465d4f1ae6ec7a250e0c7f65d2fca172 100644 (file)
@@ -45,6 +45,9 @@ properties:
       purpose of handling altmode muxing and orientation switching to detect and
       enable Audio Accessory Mode.
 
+  vdd-px-supply:
+    description: A reference to the 1.2V PX supply
+
 required:
   - compatible
 
index 5acb05cdfefd763bf42d9dbbb282bacd5ed71f6c..819ca06203b18da54c07863bdad15ed4585184e9 100644 (file)
@@ -4,7 +4,7 @@
 $id: http://devicetree.org/schemas/sound/richtek,rt9123.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Richtek RT9123 Audio Amplifier
+title: Richtek RT9123/RTQ9124 Audio Amplifier
 
 maintainers:
   - ChiYuan Huang <cy_huang@richtek.com>
@@ -15,6 +15,12 @@ description:
   support various formats, including I2S, left-justified, right-justified, and
   TDM formats.
 
+  RTQ9124 is an ultra-low output noise, digital input, mono-channel Class-D
+  power amplifier that supports a 2.1MHz switching frequency. It integrates
+  both DC and AC load diagnostics, as well as real-time load monitoring to
+  assess speaker condition. The device operates from 4.5V to 18V and delivers
+  up to 30W output power.
+
 allOf:
   - $ref: dai-common.yaml#
 
@@ -22,6 +28,7 @@ properties:
   compatible:
     enum:
       - richtek,rt9123
+      - richtek,rtq9124
 
   reg:
     maxItems: 1
index 74f7d02b424b9c5d5fd7ea573d7beeb5a2253337..0b013a34e2c10787cf7627a84565078c49bdb7b6 100644 (file)
@@ -18,6 +18,7 @@ properties:
       - ti,tas5719
       - ti,tas5721
       - ti,tas5733
+      - ti,tas5753
 
   reg:
     maxItems: 1
@@ -98,6 +99,7 @@ allOf:
           contains:
             enum:
               - ti,tas5721
+              - ti,tas5753
     then:
       properties:
         HPVDD-supply: false
diff --git a/Bindings/spi/amlogic,a4-spisg.yaml b/Bindings/spi/amlogic,a4-spisg.yaml
new file mode 100644 (file)
index 0000000..9bfb808
--- /dev/null
@@ -0,0 +1,59 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright (C) 2025 Amlogic, Inc. All rights reserved
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/spi/amlogic,a4-spisg.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Amlogic SPI Scatter-Gather Controller
+
+maintainers:
+  - Xianwei Zhao <xianwei.zhao@amlogic.com>
+  - Sunny Luo <sunny.luo@amlogic.com>
+
+allOf:
+  - $ref: spi-controller.yaml#
+
+properties:
+  compatible:
+    const: amlogic,a4-spisg
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: core
+      - const: pclk
+
+  resets:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    spi@50000 {
+        compatible = "amlogic,a4-spisg";
+        reg = <0x50000 0x38>;
+        interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clkc 37>,
+                 <&clkc 93>;
+        clock-names = "core", "pclk";
+        #address-cells = <1>;
+        #size-cells = <0>;
+    };
index bf9cce53c48da5cc19dc17e6e95514d8ce2ca696..8dbda1ffb5ebc795306436896979f77dec020c2e 100644 (file)
@@ -23,6 +23,7 @@ properties:
           - fsl,ls2080a-dspi
           - fsl,ls2085a-dspi
           - fsl,lx2160a-dspi
+          - nxp,s32g2-dspi
       - items:
           - enum:
               - fsl,ls1012a-dspi
@@ -37,6 +38,9 @@ properties:
       - items:
           - const: fsl,lx2160a-dspi
           - const: fsl,ls2085a-dspi
+      - items:
+          - const: nxp,s32g3-dspi
+          - const: nxp,s32g2-dspi
 
   reg:
     maxItems: 1
@@ -114,3 +118,17 @@ examples:
             spi-cs-hold-delay-ns = <50>;
         };
     };
+  # S32G3 in target mode
+  - |
+    spi@401d4000 {
+        compatible = "nxp,s32g3-dspi", "nxp,s32g2-dspi";
+        reg = <0x401d4000 0x1000>;
+        interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clks 26>;
+        clock-names = "dspi";
+        spi-num-chipselects = <8>;
+        bus-num = <0>;
+        dmas = <&edma0 0 7>, <&edma0 0 8>;
+        dma-names = "tx", "rx";
+        spi-slave;
+    };
diff --git a/Bindings/spi/marvell,orion-spi.yaml b/Bindings/spi/marvell,orion-spi.yaml
new file mode 100644 (file)
index 0000000..7f5ec1d
--- /dev/null
@@ -0,0 +1,102 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/spi/marvell,orion-spi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Orion SPI controller
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory CLEMENT <gregory.clement@bootlin.com>
+
+allOf:
+  - $ref: /schemas/spi/spi-controller.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - marvell,orion-spi
+          - marvell,armada-380-spi  # For ap80x and cp11x
+      - items:
+          - enum:
+              - marvell,armada-370-spi
+              - marvell,armada-375-spi
+              - marvell,armada-380-spi
+              - marvell,armada-390-spi
+              - marvell,armada-xp-spi
+          - const: marvell,orion-spi
+
+  cell-index:
+    description: Instance id for the SPI controller
+    deprecated: true
+
+  reg:
+    minItems: 1
+    items:
+      - description: control registers
+      - description: CS0 MBUS target/attribute registers for direct mode
+      - description: CS1 MBUS target/attribute registers for direct mode
+      - description: CS2 MBUS target/attribute registers for direct mode
+      - description: CS3 MBUS target/attribute registers for direct mode
+      - description: CS4 MBUS target/attribute registers for direct mode
+      - description: CS5 MBUS target/attribute registers for direct mode
+      - description: CS6 MBUS target/attribute registers for direct mode
+      - description: CS7 MBUS target/attribute registers for direct mode
+
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: core
+      - const: axi
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    spi@10600 {
+      compatible = "marvell,orion-spi";
+      #address-cells = <1>;
+      #size-cells = <0>;
+      cell-index = <0>;
+      reg = <0x10600 0x28>;
+      clocks = <&coreclk 0>;
+      interrupts = <23>;
+    };
+  - |
+    #define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
+
+    bus {
+        #address-cells = <2>;
+        #size-cells = <1>;
+
+        spi@10600 {
+          compatible = "marvell,orion-spi";
+          #address-cells = <1>;
+          #size-cells = <0>;
+          cell-index = <0>;
+          reg = <MBUS_ID(0xf0, 0x01) 0x10600 0x28>, /* control */
+                <MBUS_ID(0x01, 0x1e) 0 0xffffffff>, /* CS0 */
+                <MBUS_ID(0x01, 0x5e) 0 0xffffffff>, /* CS1 */
+                <MBUS_ID(0x01, 0x9e) 0 0xffffffff>, /* CS2 */
+                <MBUS_ID(0x01, 0xde) 0 0xffffffff>, /* CS3 */
+                <MBUS_ID(0x01, 0x1f) 0 0xffffffff>, /* CS4 */
+                <MBUS_ID(0x01, 0x5f) 0 0xffffffff>, /* CS5 */
+                <MBUS_ID(0x01, 0x9f) 0 0xffffffff>, /* CS6 */
+                <MBUS_ID(0x01, 0xdf) 0 0xffffffff>; /* CS7 */
+          clocks = <&coreclk 0>;
+          interrupts = <23>;
+        };
+    };
index ed17815263a878c385a8cb5dbd4d3d390866f048..3bf3eb1f872891b0198a2af412255a1b77661fb3 100644 (file)
@@ -39,6 +39,10 @@ properties:
               - mediatek,mt7988-spi-single
               - mediatek,mt8188-spi-ipm
           - const: mediatek,spi-ipm
+      - items:
+          - enum:
+              - mediatek,mt8196-spi
+          - const: mediatek,mt6991-spi
       - items:
           - enum:
               - mediatek,mt2701-spi
@@ -46,6 +50,7 @@ properties:
               - mediatek,mt6589-spi
               - mediatek,mt6765-spi
               - mediatek,mt6893-spi
+              - mediatek,mt6991-spi
               - mediatek,mt7622-spi
               - mediatek,mt8135-spi
               - mediatek,mt8173-spi
index e2512166c1cd9f2e1b42d91695be73bbc6c34037..0cf8e7269ba993a2a0a7e76d1e9c2b5f900adb95 100644 (file)
@@ -24,6 +24,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  clocks:
+    maxItems: 1
+
   dmas:
     maxItems: 1
 
diff --git a/Bindings/spi/nxp,lpc3220-spi.yaml b/Bindings/spi/nxp,lpc3220-spi.yaml
new file mode 100644 (file)
index 0000000..d5f7809
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/spi/nxp,lpc3220-spi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC3220 SPI controller
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - nxp,lpc3220-spi
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+allOf:
+  - $ref: spi-controller.yaml#
+
+unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - clocks
+
+examples:
+  - |
+    #include <dt-bindings/clock/lpc32xx-clock.h>
+
+    spi@20088000 {
+        compatible = "nxp,lpc3220-spi";
+        reg = <0x20088000 0x1000>;
+        clocks = <&clk LPC32XX_CLK_SPI1>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+    };
+
diff --git a/Bindings/spi/renesas,rzv2h-rspi.yaml b/Bindings/spi/renesas,rzv2h-rspi.yaml
new file mode 100644 (file)
index 0000000..ab27fef
--- /dev/null
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/spi/renesas,rzv2h-rspi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas RZ/V2H(P) Renesas Serial Peripheral Interface (RSPI)
+
+maintainers:
+  - Fabrizio Castro <fabrizio.castro.jz@renesas.com>
+
+allOf:
+  - $ref: spi-controller.yaml#
+
+properties:
+  compatible:
+    const: renesas,r9a09g057-rspi # RZ/V2H(P)
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: Idle Interrupt
+      - description: Error Interrupt
+      - description: Communication End Interrupt
+      - description: Receive Buffer Full Interrupt
+      - description: Transmit Buffer Empty Interrupt
+
+  interrupt-names:
+    items:
+      - const: idle
+      - const: error
+      - const: end
+      - const: rx
+      - const: tx
+
+  clocks:
+    maxItems: 3
+
+  clock-names:
+    items:
+      - const: pclk
+      - const: pclk_sfr
+      - const: tclk
+
+  resets:
+    maxItems: 2
+
+  reset-names:
+    items:
+      - const: presetn
+      - const: tresetn
+
+  power-domains:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+  - clocks
+  - clock-names
+  - resets
+  - reset-names
+  - power-domains
+  - '#address-cells'
+  - '#size-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/renesas-cpg-mssr.h>
+    spi@12800800 {
+        compatible = "renesas,r9a09g057-rspi";
+
+        reg = <0x12800800 0x400>;
+        interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 113 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 504 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 505 IRQ_TYPE_EDGE_RISING>;
+        interrupt-names = "idle", "error", "end", "rx", "tx";
+        clocks = <&cpg CPG_MOD 0x5a>,
+                 <&cpg CPG_MOD 0x5b>,
+                 <&cpg CPG_MOD 0x5c>;
+        clock-names = "pclk", "pclk_sfr", "tclk";
+        resets = <&cpg 0x7f>, <&cpg 0x80>;
+        reset-names = "presetn", "tresetn";
+        power-domains = <&cpg>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+    };
index a65a42ccaafed1dc1bf918256462b3b36c621e48..a82360bed1882e672a20032567fc1ecf98063fb6 100644 (file)
@@ -20,6 +20,7 @@ properties:
       - enum:
           - fsl,imx7ulp-spi
           - fsl,imx8qxp-spi
+          - nxp,s32g2-lpspi
       - items:
           - enum:
               - fsl,imx8ulp-spi
@@ -27,6 +28,10 @@ properties:
               - fsl,imx94-spi
               - fsl,imx95-spi
           - const: fsl,imx7ulp-spi
+      - items:
+          - const: nxp,s32g3-lpspi
+          - const: nxp,s32g2-lpspi
+
   reg:
     maxItems: 1
 
index fb2a6039928c4379f4e12dd150d26d7cb4e947d5..b1e2a97be6995d402c89592b3a6fed7d1acc7ab2 100644 (file)
@@ -46,7 +46,6 @@ properties:
 required:
   - compatible
   - reg
-  - spi-max-frequency
   - mux-controls
 
 unevaluatedProperties: false
diff --git a/Bindings/spi/spi-orion.txt b/Bindings/spi/spi-orion.txt
deleted file mode 100644 (file)
index 8434a65..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-Marvell Orion SPI device
-
-Required properties:
-- compatible : should be on of the following:
-    - "marvell,orion-spi" for the Orion, mv78x00, Kirkwood and Dove SoCs
-    - "marvell,armada-370-spi", for the Armada 370 SoCs
-    - "marvell,armada-375-spi", for the Armada 375 SoCs
-    - "marvell,armada-380-spi", for the Armada 38x SoCs
-    - "marvell,armada-390-spi", for the Armada 39x SoCs
-    - "marvell,armada-xp-spi", for the Armada XP SoCs
-- reg : offset and length of the register set for the device.
-       This property can optionally have additional entries to configure
-       the SPI direct access mode that some of the Marvell SoCs support
-       additionally to the normal indirect access (PIO) mode. The values
-       for the MBus "target" and "attribute" are defined in the Marvell
-       SoC "Functional Specifications" Manual in the chapter "Marvell
-       Core Processor Address Decoding".
-       The eight register sets following the control registers refer to
-       chip-select lines 0 through 7 respectively.
-- cell-index : Which of multiple SPI controllers is this.
-- clocks : pointers to the reference clocks for this device, the first
-          one is the one used for the clock on the spi bus, the
-          second one is optional and is the clock used for the
-          functional part of the controller
-
-Optional properties:
-- interrupts : Is currently not used.
-- clock-names : names of used clocks, mandatory if the second clock is
-               used, the name must be "core", and "axi" (the latter
-               is only for Armada 7K/8K).
-
-
-Example:
-       spi@10600 {
-              compatible = "marvell,orion-spi";
-              #address-cells = <1>;
-              #size-cells = <0>;
-              cell-index = <0>;
-              reg = <0x10600 0x28>;
-              interrupts = <23>;
-       };
-
-Example with SPI direct mode support (optionally):
-       spi0: spi@10600 {
-               compatible = "marvell,orion-spi";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               cell-index = <0>;
-               reg = <MBUS_ID(0xf0, 0x01) 0x10600 0x28>, /* control */
-                     <MBUS_ID(0x01, 0x1e) 0 0xffffffff>, /* CS0 */
-                     <MBUS_ID(0x01, 0x5e) 0 0xffffffff>, /* CS1 */
-                     <MBUS_ID(0x01, 0x9e) 0 0xffffffff>, /* CS2 */
-                     <MBUS_ID(0x01, 0xde) 0 0xffffffff>, /* CS3 */
-                     <MBUS_ID(0x01, 0x1f) 0 0xffffffff>, /* CS4 */
-                     <MBUS_ID(0x01, 0x5f) 0 0xffffffff>, /* CS5 */
-                     <MBUS_ID(0x01, 0x9f) 0 0xffffffff>, /* CS6 */
-                     <MBUS_ID(0x01, 0xdf) 0 0xffffffff>; /* CS7 */
-               interrupts = <23>;
-       };
-
-To enable the direct mode, the board specific 'ranges' property in the
-'soc' node needs to add the entries for the desired SPI controllers
-and its chip-selects that are used in the direct mode instead of PIO
-mode. Here an example for this (SPI controller 0, device 1 and SPI
-controller 1, device 2 are used in direct mode. All other SPI device
-are used in the default indirect (PIO) mode):
-       soc {
-               /*
-                * Enable the SPI direct access by configuring an entry
-                * here in the board-specific ranges property
-                */
-               ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000>, /* internal regs */
-                        <MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000>, /* BootROM       */
-                        <MBUS_ID(0x01, 0x5e) 0 0 0xf1100000 0x10000>,  /* SPI0-DEV1 */
-                        <MBUS_ID(0x01, 0x9a) 0 0 0xf1110000 0x10000>;  /* SPI1-DEV2 */
-
-For further information on the MBus bindings, please see the MBus
-DT documentation:
-Documentation/devicetree/bindings/bus/mvebu-mbus.txt
index 8fc17e16efb206500b5b63d391f9d012d1289b22..8b6e8fc009dbdc80978f3afef84ddc688ade4348 100644 (file)
@@ -115,6 +115,7 @@ properties:
     maxItems: 4
 
   st,spi-midi-ns:
+    deprecated: true
     description: |
       Only for STM32H7, (Master Inter-Data Idleness) minimum time
       delay in nanoseconds inserted between two consecutive data frames.
index 66e54dedab140a167ad84c43f312f93af2bfa06a..0e7ead7637052a008c64b82477d060d180c43acf 100644 (file)
@@ -14,12 +14,9 @@ allOf:
 
 properties:
   compatible:
-    oneOf:
-      - const: sophgo,sg2044-spifmc-nor
-      - items:
-          - enum:
-              - sophgo,sg2042-spifmc-nor
-          - const: sophgo,sg2044-spifmc-nor
+    enum:
+      - sophgo,sg2042-spifmc-nor
+      - sophgo,sg2044-spifmc-nor
 
   reg:
     maxItems: 1
index 76e43c0ce36caa3f8f5ae1a80a214c002a28b761..ca880a226afa09c1e3d7ecde26fbdc47d5aed79c 100644 (file)
@@ -18,6 +18,38 @@ maintainers:
 
 allOf:
   - $ref: spi-controller.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: st,stm32f4-spi
+
+    then:
+      properties:
+        st,spi-midi-ns: false
+        sram: false
+        dmas:
+          maxItems: 2
+        dma-names:
+          items:
+            - const: rx
+            - const: tx
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: st,stm32mp25-spi
+
+    then:
+      properties:
+        sram: false
+        dmas:
+          maxItems: 2
+        dma-names:
+          items:
+            - const: rx
+            - const: tx
 
 properties:
   compatible:
@@ -41,16 +73,28 @@ properties:
 
   dmas:
     description: |
-      DMA specifiers for tx and rx dma. DMA fifo mode must be used. See
-      the STM32 DMA controllers bindings Documentation/devicetree/bindings/dma/stm32/*.yaml.
+      DMA specifiers for tx and rx channels. DMA fifo mode must be used. See
+      the STM32 DMA bindings Documentation/devicetree/bindings/dma/stm32/st,*dma.yaml
+    minItems: 2
     items:
       - description: rx DMA channel
       - description: tx DMA channel
+      - description: rxm2m MDMA channel
 
   dma-names:
+    minItems: 2
     items:
       - const: rx
       - const: tx
+      - const: rxm2m
+
+  sram:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: |
+      Phandles to a reserved SRAM region which is used as temporary
+      storage memory between DMA and MDMA engines.
+      The region should be defined as child node of the AHB SRAM node
+      as per the generic bindings in Documentation/devicetree/bindings/sram/sram.yaml
 
   access-controllers:
     minItems: 1
index 2711f90d9664b70fcd1e2f7e2dfd3386ed5c1952..72d35e30c439ccf4901d937f838fe7c7a81f33b1 100644 (file)
@@ -22,17 +22,32 @@ properties:
           - qcom,msm8974-imem
           - qcom,msm8976-imem
           - qcom,qcs404-imem
+          - qcom,qcs615-imem
           - qcom,qcs8300-imem
           - qcom,qdu1000-imem
           - qcom,sa8775p-imem
+          - qcom,sar2130p-imem
           - qcom,sc7180-imem
           - qcom,sc7280-imem
+          - qcom,sc8280xp-imem
           - qcom,sdm630-imem
           - qcom,sdm845-imem
           - qcom,sdx55-imem
           - qcom,sdx65-imem
+          - qcom,sdx75-imem
+          - qcom,sm6115-imem
+          - qcom,sm6125-imem
+          - qcom,sm6350-imem
           - qcom,sm6375-imem
+          - qcom,sm7150-imem
+          - qcom,sm8150-imem
+          - qcom,sm8250-imem
+          - qcom,sm8350-imem
           - qcom,sm8450-imem
+          - qcom,sm8550-imem
+          - qcom,sm8650-imem
+          - qcom,sm8750-imem
+          - qcom,x1e80100-imem
       - const: syscon
       - const: simple-mfd
 
diff --git a/Bindings/staging/iio/adc/spear-adc.txt b/Bindings/staging/iio/adc/spear-adc.txt
deleted file mode 100644 (file)
index 88bc94f..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-* ST SPEAr ADC device driver
-
-Required properties:
-- compatible: Should be "st,spear600-adc"
-- reg: Address and length of the register set for the device
-- interrupts: Should contain the ADC interrupt
-- sampling-frequency: Default sampling frequency
-
-Optional properties:
-- vref-external: External voltage reference in milli-volts. If omitted
-  the internal voltage reference will be used.
-- average-samples: Number of samples to generate an average value. If
-  omitted, single data conversion will be used.
-
-Examples:
-
-       adc: adc@d8200000 {
-               compatible = "st,spear600-adc";
-               reg = <0xd8200000 0x1000>;
-               interrupt-parent = <&vic1>;
-               interrupts = <6>;
-               sampling-frequency = <5000000>;
-               vref-external = <2500>; /* 2.5V VRef */
-       };
index f3e23e69a6389e7e5d8db66af5060978ecff8a9d..46d0b036c97eb531dec95ef52261988d3bfa3aad 100644 (file)
@@ -21,8 +21,16 @@ I. For patch submitters
        "<binding dir>: dt-bindings: ..."
 
      The 80 characters of the subject are precious. It is recommended to not
-     use "Documentation" or "doc" because that is implied. All bindings are
-     docs. Repeating "binding" again should also be avoided.
+     use "Documentation", "doc" or "YAML" because that is implied. All
+     bindings are docs and all new bindings are supposed to be in Devicetree
+     schema format.  Repeating "binding" again should also be avoided, so for
+     a new device it is often enough for example::
+
+       "dt-bindings: iio: adc: Add ROHM BD79100G"
+
+     Conversion of other formats to DT schema::
+
+       "dt-bindings: iio: adc: adi,ad7476: Convert to DT schema"
 
   2) DT binding files are written in DT schema format using json-schema
      vocabulary and YAML file format. The DT binding files must pass validation
index d96a2e32bd8fd3ca38564df572adddc5619af609..7bd0955e6d045db20c2a59f925665b68079b28ce 100644 (file)
@@ -20,16 +20,23 @@ allOf:
 
 properties:
   compatible:
-    enum:
-      - mediatek,mt2701-thermal
-      - mediatek,mt2712-thermal
-      - mediatek,mt7622-thermal
-      - mediatek,mt7981-thermal
-      - mediatek,mt7986-thermal
-      - mediatek,mt8173-thermal
-      - mediatek,mt8183-thermal
-      - mediatek,mt8365-thermal
-      - mediatek,mt8516-thermal
+    oneOf:
+      - enum:
+          - mediatek,mt2701-thermal
+          - mediatek,mt2712-thermal
+          - mediatek,mt7622-thermal
+          - mediatek,mt7986-thermal
+          - mediatek,mt8173-thermal
+          - mediatek,mt8183-thermal
+          - mediatek,mt8365-thermal
+      - items:
+          - enum:
+              - mediatek,mt8516-thermal
+          - const: mediatek,mt2701-thermal
+      - items:
+          - enum:
+              - mediatek,mt7981-thermal
+          - const: mediatek,mt7986-thermal
 
   reg:
     maxItems: 1
index 19bb1f324183bb22bc75630798da67fc834920b8..cf47a1f3b3847d4a0371d0bc711638fc5e3b6cd3 100644 (file)
@@ -21,6 +21,7 @@ properties:
       - nvidia,tegra124-soctherm
       - nvidia,tegra132-soctherm
       - nvidia,tegra210-soctherm
+      - nvidia,tegra210b01-soctherm
 
   reg:
     maxItems: 2
@@ -207,6 +208,7 @@ allOf:
             enum:
               - nvidia,tegra124-soctherm
               - nvidia,tegra210-soctherm
+              - nvidia,tegra210b01-soctherm
     then:
       properties:
         reg:
index 0e653bbe9884953b58c4d8569b8d096db47fd54f..94311ebd7652d42eb6f3ae0dba792872c90b623f 100644 (file)
@@ -49,6 +49,7 @@ properties:
       - description: v2 of TSENS
         items:
           - enum:
+              - qcom,milos-tsens
               - qcom,msm8953-tsens
               - qcom,msm8996-tsens
               - qcom,msm8998-tsens
index b717ea8261ca24ebaf709f410ec6372de1366b8a..573f447cc26ed7100638277598b0e745d436fd01 100644 (file)
@@ -21,6 +21,7 @@ properties:
       - rockchip,rk3368-tsadc
       - rockchip,rk3399-tsadc
       - rockchip,rk3568-tsadc
+      - rockchip,rk3576-tsadc
       - rockchip,rk3588-tsadc
       - rockchip,rv1108-tsadc
 
@@ -39,6 +40,17 @@ properties:
       - const: tsadc
       - const: apb_pclk
 
+  nvmem-cells:
+    items:
+      - description: cell handle to where the trim's base temperature is stored
+      - description:
+          cell handle to where the trim's tenths of Celsius base value is stored
+
+  nvmem-cell-names:
+    items:
+      - const: trim_base
+      - const: trim_base_frac
+
   resets:
     minItems: 1
     maxItems: 3
@@ -50,6 +62,12 @@ properties:
       - const: tsadc
       - const: tsadc-phy
 
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
   "#thermal-sensor-cells":
     const: 1
 
@@ -71,6 +89,27 @@ properties:
     $ref: /schemas/types.yaml#/definitions/uint32
     enum: [0, 1]
 
+patternProperties:
+  "@[0-9a-f]+$":
+    type: object
+    properties:
+      reg:
+        maxItems: 1
+        description: sensor ID, a.k.a. channel number
+
+      nvmem-cells:
+        items:
+          - description: handle of cell containing calibration data
+
+      nvmem-cell-names:
+        items:
+          - const: trim
+
+    required:
+      - reg
+
+    unevaluatedProperties: false
+
 required:
   - compatible
   - reg
@@ -79,6 +118,29 @@ required:
   - clock-names
   - resets
 
+allOf:
+  - if:
+      not:
+        properties:
+          compatible:
+            contains:
+              const: rockchip,rk3568-tsadc
+    then:
+      properties:
+        nvmem-cells: false
+        nvmem-cell-names: false
+  - if:
+      not:
+        properties:
+          compatible:
+            contains:
+              enum:
+                - rockchip,rk3568-tsadc
+                - rockchip,rk3576-tsadc
+    then:
+      patternProperties:
+        "@[0-9a-f]+$": false
+
 unevaluatedProperties: false
 
 examples:
diff --git a/Bindings/timer/andestech,plmt0.yaml b/Bindings/timer/andestech,plmt0.yaml
new file mode 100644 (file)
index 0000000..90b6120
--- /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/timer/andestech,plmt0.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Andes machine-level timer
+
+description:
+  The Andes machine-level timer device (PLMT0) provides machine-level timer
+  functionality for a set of HARTs on a RISC-V platform. It has a single
+  fixed-frequency monotonic time counter (MTIME) register and a time compare
+  register (MTIMECMP) for each HART connected to the PLMT0. A timer interrupt is
+  generated if MTIME >= MTIMECMP.
+
+maintainers:
+  - Ben Zong-You Xie <ben717@andestech.com>
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - andestech,qilai-plmt
+      - const: andestech,plmt0
+
+  reg:
+    maxItems: 1
+
+  interrupts-extended:
+    minItems: 1
+    maxItems: 32
+    description:
+      Specifies which harts are connected to the PLMT0. Each item must points
+      to a riscv,cpu-intc node, which has a riscv cpu node as parent. The
+      PLMT0 supports 1 hart up to 32 harts.
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts-extended
+
+examples:
+  - |
+    interrupt-controller@100000 {
+      compatible = "andestech,qilai-plmt", "andestech,plmt0";
+      reg = <0x100000 0x100000>;
+      interrupts-extended = <&cpu0intc 7>,
+                            <&cpu1intc 7>,
+                            <&cpu2intc 7>,
+                            <&cpu3intc 7>;
+    };
diff --git a/Bindings/timer/via,vt8500-timer.txt b/Bindings/timer/via,vt8500-timer.txt
deleted file mode 100644 (file)
index 901c73f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-VIA/Wondermedia VT8500 Timer
------------------------------------------------------
-
-Required properties:
-- compatible : "via,vt8500-timer"
-- reg : Should contain 1 register ranges(address and length)
-- interrupts : interrupt for the timer
-
-Example:
-
-       timer@d8130100 {
-               compatible = "via,vt8500-timer";
-               reg = <0xd8130100 0x28>;
-               interrupts = <36>;
-       };
diff --git a/Bindings/timer/via,vt8500-timer.yaml b/Bindings/timer/via,vt8500-timer.yaml
new file mode 100644 (file)
index 0000000..e748149
--- /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/timer/via,vt8500-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: VIA/Wondermedia VT8500 Timer
+
+description:
+  This is the timer block that is a standalone part of the system power
+  management controller on VIA/WonderMedia SoCs (VIA VT8500 and alike).
+  The hardware has a single 32-bit counter running at 3 MHz and four match
+  registers, each of which is associated with a dedicated match interrupt,
+  and the first of which can also serve as the system watchdog (if the
+  watchdog function is enabled, it will reset the system upon match instead
+  of triggering its respective interrupt)
+
+maintainers:
+  - Alexey Charkov <alchark@gmail.com>
+
+properties:
+  compatible:
+    const: via,vt8500-timer
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    minItems: 1
+    items:
+      - description: Channel 0 match. Note that if the watchdog function
+          is enabled, this interrupt will not fire and the system will
+          reboot instead once the counter reaches match register 0 value
+      - description: Channel 1 match
+      - description: Channel 2 match
+      - description: Channel 3 match
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@d8130100 {
+        compatible = "via,vt8500-timer";
+        reg = <0xd8130100 0x28>;
+        interrupts = <36>;
+    };
diff --git a/Bindings/trigger-source/adi,util-sigma-delta-spi.yaml b/Bindings/trigger-source/adi,util-sigma-delta-spi.yaml
new file mode 100644 (file)
index 0000000..ea46617
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright (c) 2025 Analog Devices, Inc.
+# Copyright (c) 2025 BayLibre, SAS
+
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/trigger-source/adi,util-sigma-delta-spi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices Util Sigma-Delta SPI IP Core
+
+maintainers:
+  - David Lechner <dlechner@baylibre.com>
+
+description:
+  The Util Sigma-Delta SPI is an FPGA IP core from Analog Devices that provides
+  a SPI offload trigger from the RDY signal of the combined DOUT/RDY pin of
+  the sigma-delta family of ADCs.
+  https://analogdevicesinc.github.io/hdl/library/util_sigma_delta_spi/index.html
+
+properties:
+  compatible:
+    const: adi,util-sigma-delta-spi
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  '#trigger-source-cells':
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - '#trigger-source-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    trigger@40000 {
+        reg = <0x40000 0x1000>;
+        compatible = "adi,util-sigma-delta-spi";
+        clocks = <&clk 0>;
+        #trigger-source-cells = <0>;
+    };
diff --git a/Bindings/trigger-source/gpio-trigger.yaml b/Bindings/trigger-source/gpio-trigger.yaml
new file mode 100644 (file)
index 0000000..1331d15
--- /dev/null
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/trigger-source/gpio-trigger.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Generic trigger source using GPIO
+
+description: A GPIO used as a trigger source.
+
+maintainers:
+  - Jonathan Santos <Jonathan.Santos@analog.com>
+
+properties:
+  compatible:
+    const: gpio-trigger
+
+  '#trigger-source-cells':
+    const: 0
+
+  gpios:
+    maxItems: 1
+    description: GPIO to be used as a trigger source.
+
+required:
+  - compatible
+  - '#trigger-source-cells'
+  - gpios
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    trigger {
+        compatible = "gpio-trigger";
+        #trigger-source-cells = <0>;
+        gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
+    };
index 27930708ccd581e0cbda04d21c2598676e1812ab..f3dd18681aa6f81255141bdda6daf8e45369a2c2 100644 (file)
@@ -30,6 +30,8 @@ properties:
     items:
       # Entries are sorted alphanumerically by the compatible
       - enum:
+            # ABB register based spi sensors
+          - abb,spi-sensor
             # Acbel fsg032 power supply
           - acbel,fsg032
             # SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert and Over Temperature Pin
@@ -39,8 +41,14 @@ properties:
           - ad,adm9240
             # AD5110 - Nonvolatile Digital Potentiometer
           - adi,ad5110
-            # Analog Devices ADP5589 Keypad Decoder and I/O Expansion
-          - adi,adp5589
+            # Temperature sensor with integrated fan control
+          - adi,adm1027
+            # Analog Devices ADT7411 Temperature Sensor and 8-channel ADC
+          - adi,adt7411
+            # Temperature sensor with integrated fan control
+          - adi,adt7463
+            # Temperature sensor with integrated fan control
+          - adi,adt7468
             # Analog Devices LT7182S Dual Channel 6A, 20V PolyPhase Step-Down Silent Switcher
           - adi,lt7182s
             # AMS iAQ-Core VOC Sensor
@@ -291,6 +299,8 @@ properties:
           - mps,mp2891
             # Monolithic Power Systems Inc. multi-phase controller mp2993
           - mps,mp2993
+            # Monolithic Power Systems Inc. hot-swap protection device
+          - mps,mp5023
             # Monolithic Power Systems Inc. multi-phase hot-swap controller mp5920
           - mps,mp5920
             # Monolithic Power Systems Inc. multi-phase hot-swap controller mp5990
@@ -299,16 +309,30 @@ properties:
           - mps,mp9941
             # Temperature sensor with integrated fan control
           - national,lm63
+            # Temperature sensor with integrated fan control
+          - national,lm64
+            # Temperature sensor
+          - national,lm95235
+            # Temperature sensor
+          - national,lm95245
+            # Temperature sensor with integrated fan control
+          - national,lm96163
             # Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor
           - national,lm80
             # Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor
           - national,lm81
             # Temperature sensor with integrated fan control
           - national,lm85
+            # Temperature sensor with integrated fan control
+          - national,lm85b
+            # Temperature sensor with integrated fan control
+          - national,lm85c
             # I2C ±0.33°C Accurate, 12-Bit + Sign Temperature Sensor and Thermal Window Comparator
           - national,lm92
             # Nuvoton Temperature Sensor
           - nuvoton,w83773g
+            # NXP ISP1301 USB transceiver
+          - nxp,isp1301
             # OKI ML86V7667 video decoder
           - oki,ml86v7667
             # ON Semiconductor ADT7462 Temperature, Voltage Monitor and Fan Controller
@@ -357,12 +381,38 @@ properties:
           - silabs,si7020
             # Skyworks SKY81452: Six-Channel White LED Driver with Touch Panel Bias Supply
           - skyworks,sky81452
+            # Temperature sensor with integrated fan control
+          - smsc,emc6d100
+            # Temperature sensor with integrated fan control
+          - smsc,emc6d101
+            # Temperature sensor with integrated fan control
+          - smsc,emc6d102
+            # Temperature sensor with integrated fan control
+          - smsc,emc6d103
+            # Temperature sensor with integrated fan control
+          - smsc,emc6d103s
             # SparkFun Qwiic Joystick (COM-15168) with i2c interface
           - sparkfun,qwiic-joystick
             # Sierra Wireless mangOH Green SPI IoT interface
           - swir,mangoh-iotport-spi
             # Ambient Light Sensor with SMBUS/Two Wire Serial Interface
           - taos,tsl2550
+            # Digital PWM System Controller PMBus
+          - ti,cd9200
+            # Digital PWM System Controller PMBus
+          - ti,cd9220
+            # Digital PWM System Controller PMBus
+          - ti,cd9222
+            # Digital PWM System Controller PMBus
+          - ti,cd9224
+            # Digital PWM System Controller PMBus
+          - ti,cd9240
+            # Digital PWM System Controller PMBus
+          - ti,cd9244
+            # Digital PWM System Controller PMBus
+          - ti,cd9246
+            # Digital PWM System Controller PMBus
+          - ti,cd9248
             # Temperature and humidity sensor with i2c interface
           - ti,hdc1000
             # Temperature and humidity sensor with i2c interface
@@ -390,12 +440,18 @@ properties:
           - ti,tmp125
             # TI DC-DC converter on PMBus
           - ti,tps40400
+            # TI DCAP+ multiphase controller
+          - ti,tps53647
+            # TI DCAP+ multiphase controller
+          - ti,tps53667
             # TI Dual channel DCAP+ multiphase controller TPS53676 with AVSBus
           - 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 TPS53685 with AMD-SVI3
+          - ti,tps53685
             # TI Dual channel DCAP+ multiphase controller TPS53688
           - ti,tps53688
             # TI DC-DC converters on PMBus
index 32fd535a514ad1cb7e9ed55c595224835161579a..1dec54fb00f308b8bc30896c729b0645c4742138 100644 (file)
@@ -9,21 +9,20 @@ title: Mediatek Universal Flash Storage (UFS) Controller
 maintainers:
   - Stanley Chu <stanley.chu@mediatek.com>
 
-allOf:
-  - $ref: ufs-common.yaml
-
 properties:
   compatible:
     enum:
       - mediatek,mt8183-ufshci
       - mediatek,mt8192-ufshci
+      - mediatek,mt8195-ufshci
 
   clocks:
-    maxItems: 1
+    minItems: 1
+    maxItems: 8
 
   clock-names:
-    items:
-      - const: ufs
+    minItems: 1
+    maxItems: 8
 
   phys:
     maxItems: 1
@@ -33,6 +32,10 @@ properties:
 
   vcc-supply: true
 
+  mediatek,ufs-disable-mcq:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description: The mask to disable MCQ (Multi-Circular Queue) for UFS host.
+
 required:
   - compatible
   - clocks
@@ -43,6 +46,37 @@ required:
 
 unevaluatedProperties: false
 
+allOf:
+  - $ref: ufs-common.yaml
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - mediatek,mt8195-ufshci
+    then:
+      properties:
+        clocks:
+          minItems: 8
+        clock-names:
+          items:
+            - const: ufs
+            - const: ufs_aes
+            - const: ufs_tick
+            - const: unipro_sysclk
+            - const: unipro_tick
+            - const: unipro_mp_bclk
+            - const: ufs_tx_symbol
+            - const: ufs_mem_sub
+    else:
+      properties:
+        clocks:
+          maxItems: 1
+        clock-names:
+          items:
+            - const: ufs
+
 examples:
   - |
     #include <dt-bindings/clock/mt8183-clk.h>
index cc5787a8cfa3ed1a50382fea6af731c2eda68422..691d6cf02c27243d2509849cea6b54b791d4efa9 100644 (file)
@@ -23,6 +23,7 @@ properties:
           - nvidia,tegra30-udc
           - nvidia,tegra114-udc
           - nvidia,tegra124-udc
+          - nxp,s32g2-usb
           - qcom,ci-hdrc
       - items:
           - enum:
@@ -37,6 +38,10 @@ properties:
           - enum:
               - nuvoton,npcm845-udc
           - const: nuvoton,npcm750-udc
+      - items:
+          - enum:
+              - nxp,s32g3-usb
+          - const: nxp,s32g2-usb
 
   clocks:
     minItems: 1
index e83d30a91b884aa8089a7de16d3980ce91b1cf66..6c3a10991b8b6a8ab768fc0e9ac230fda0dbe5dd 100644 (file)
@@ -59,7 +59,7 @@ properties:
       - const: amcc,dwc-otg
       - const: apm,apm82181-dwc-otg
       - const: snps,dwc2
-      - const: sophgo,cv1800-usb
+      - const: sophgo,cv1800b-usb
       - const: st,stm32f4x9-fsotg
       - const: st,stm32f4x9-hsotg
       - const: st,stm32f7-hsotg
index 019435540df0d43b2e98c73b3e71e5928acef041..ca677d1a8274927123af6274e0558df243331010 100644 (file)
@@ -21,6 +21,8 @@ properties:
           - fsl,imx53-usbmisc
           - fsl,imx6q-usbmisc
           - fsl,vf610-usbmisc
+          - nxp,s32g2-usbmisc
+          - nxp,s32g3-usbmisc
       - items:
           - enum:
               - fsl,imx6ul-usbmisc
index 6fe2d356dcbdec20dd47e09c36174e1f0244e642..9a94b2a74a1eb26025a183583702e9ea02372a74 100644 (file)
@@ -26,19 +26,26 @@ properties:
     description:
       The regulator that provides 3.3V or 5.0V core power to the hub.
 
-  peer-hub:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description:
-      For onboard hub controllers that support USB 3.x and USB 2.0 hubs
-      with shared resets and power supplies, this property is used to identify
-      the hubs with which these are shared.
+  peer-hub: true
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    patternProperties:
+      '^port@':
+        $ref: /schemas/graph.yaml#/properties/port
+
+        properties:
+          reg:
+            minimum: 1
+            maximum: 4
 
 required:
   - compatible
   - reg
 
 allOf:
-  - $ref: usb-device.yaml#
+  - $ref: usb-hub.yaml#
   - if:
       properties:
         compatible:
@@ -62,13 +69,6 @@ allOf:
         peer-hub: true
         vdd-supply: true
 
-patternProperties:
-  "^.*@[0-9a-f]{1,2}$":
-    description: The hard wired USB devices
-    type: object
-    $ref: /schemas/usb/usb-device.yaml
-    additionalProperties: true
-
 unevaluatedProperties: false
 
 examples:
diff --git a/Bindings/usb/isp1301.txt b/Bindings/usb/isp1301.txt
deleted file mode 100644 (file)
index ecd607d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-* NXP ISP1301 USB transceiver
-
-Required properties:
-- compatible: must be "nxp,isp1301"
-- reg: I2C address of the ISP1301 device
-
-Optional properties of devices using ISP1301:
-- transceiver: phandle of isp1301 - this helps the ISP1301 driver to find the
-               ISP1301 instance associated with the respective USB driver
-
-Example:
-
-       isp1301: usb-transceiver@2c {
-               compatible = "nxp,isp1301";
-               reg = <0x2c>;
-       };
-
-       usbd@31020000 {
-               compatible = "nxp,lpc3220-udc";
-               reg = <0x31020000 0x300>;
-               interrupt-parent = <&mic>;
-               interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>;
-               transceiver = <&isp1301>;
-       };
diff --git a/Bindings/usb/lpc32xx-udc.txt b/Bindings/usb/lpc32xx-udc.txt
deleted file mode 100644 (file)
index 29f12a5..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-* NXP LPC32xx SoC USB Device Controller (UDC)
-
-Required properties:
-- compatible: Must be "nxp,lpc3220-udc"
-- reg: Physical base address of the controller and length of memory mapped
-  region.
-- interrupts: The USB interrupts:
-              * USB Device Low Priority Interrupt
-              * USB Device High Priority Interrupt
-              * USB Device DMA Interrupt
-              * External USB Transceiver Interrupt (OTG ATX)
-- transceiver: phandle of the associated ISP1301 device - this is necessary for
-               the UDC controller for connecting to the USB physical layer
-
-Example:
-
-       isp1301: usb-transceiver@2c {
-               compatible = "nxp,isp1301";
-               reg = <0x2c>;
-       };
-
-       usbd@31020000 {
-               compatible = "nxp,lpc3220-udc";
-               reg = <0x31020000 0x300>;
-               interrupt-parent = <&mic>;
-               interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>;
-               transceiver = <&isp1301>;
-       };
diff --git a/Bindings/usb/nxp,lpc3220-udc.yaml b/Bindings/usb/nxp,lpc3220-udc.yaml
new file mode 100644 (file)
index 0000000..be0457a
--- /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/usb/nxp,lpc3220-udc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC32xx SoC USB Device Controller (UDC)
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: nxp,lpc3220-udc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: USB Device Low Priority Interrupt
+      - description: USB Device High Priority Interrupt
+      - description: USB Device DMA Interrupt
+      - description: External USB Transceiver Interrupt (OTG ATX)
+
+  clocks:
+    maxItems: 1
+
+  transceiver:
+    description:
+      phandle of the associated ISP1301 device - this is necessary for
+      the UDC controller for connecting to the USB physical layer
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - transceiver
+
+additionalProperties: false
+
+examples:
+  - |
+    usbd@31020000 {
+        compatible = "nxp,lpc3220-udc";
+        reg = <0x31020000 0x300>;
+        interrupt-parent = <&mic>;
+        interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>;
+        transceiver = <&isp1301>;
+    };
index 8dac5eba61b45bc2ea78b23ff38678f909e21317..dfd084ed90242f0e77cb2cde16023c3421c5dfab 100644 (file)
@@ -32,6 +32,7 @@ properties:
           - qcom,ipq8064-dwc3
           - qcom,ipq8074-dwc3
           - qcom,ipq9574-dwc3
+          - qcom,milos-dwc3
           - qcom,msm8953-dwc3
           - qcom,msm8994-dwc3
           - qcom,msm8996-dwc3
@@ -338,6 +339,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,milos-dwc3
               - qcom,qcm2290-dwc3
               - qcom,qcs615-dwc3
               - qcom,sar2130p-dwc3
@@ -453,6 +455,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,milos-dwc3
               - qcom,x1e80100-dwc3
     then:
       properties:
index 6f4d41ba6ca7f92517bce40c8b120ad54e21f6cb..a19816bbb1fd2141e9cda6dbd2073126bc3298fa 100644 (file)
@@ -27,6 +27,7 @@ properties:
               - renesas,usbhs-r9a07g044 # RZ/G2{L,LC}
               - renesas,usbhs-r9a07g054 # RZ/V2L
               - renesas,usbhs-r9a08g045 # RZ/G3S
+              - renesas,usbhs-r9a09g056 # RZ/V2N
               - renesas,usbhs-r9a09g057 # RZ/V2H(P)
           - const: renesas,rzg2l-usbhs
 
index 5d2a7a8d3ac6c666c8b557c2ef385918e5e97bf9..9ec8947dfcad2fa53b2dca2ca06a63710771a600 100644 (file)
@@ -21,6 +21,7 @@ patternProperties:
   "^(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
+  "^pool[0-3],.*": true
 
   # Keep list in alphabetical order.
   "^100ask,.*":
@@ -149,6 +150,8 @@ patternProperties:
     description: Arctic Sand
   "^arcx,.*":
     description: arcx Inc. / Archronix Inc.
+  "^argon40,.*":
+    description: Argon 40 Technologies Limited
   "^ariaboard,.*":
     description: Shanghai Novotech Co., Ltd. (Ariaboard)
   "^aries,.*":
@@ -200,6 +203,8 @@ patternProperties:
     description: Shanghai Awinic Technology Co., Ltd.
   "^axentia,.*":
     description: Axentia Technologies AB
+  "^axiado,.*":
+    description: Axiado Corporation
   "^axis,.*":
     description: Axis Communications AB
   "^azoteq,.*":
@@ -306,6 +311,8 @@ patternProperties:
     description: Cirrus Logic, Inc.
   "^cisco,.*":
     description: Cisco Systems, Inc.
+  "^cix,.*":
+    description: CIX Technology Group Co., Ltd.
   "^clockwork,.*":
     description: Clockwork Tech LLC
   "^cloos,.*":
@@ -398,6 +405,8 @@ patternProperties:
     description: Diodes, Inc.
   "^dioo,.*":
     description: Dioo Microcircuit Co., Ltd
+  "^djn,.*":
+    description: Shenzhen DJN Optronics Technology Co., Ltd
   "^dlc,.*":
     description: DLC Display Co., Ltd.
   "^dlg,.*":
@@ -498,6 +507,8 @@ patternProperties:
     description: Espressif Systems Co. Ltd.
   "^est,.*":
     description: ESTeem Wireless Modems
+  "^eswin,.*":
+    description: Beijing ESWIN Technology Group Co. Ltd.
   "^ettus,.*":
     description: NI Ettus Research
   "^eukrea,.*":
@@ -672,6 +683,8 @@ patternProperties:
     description: Huawei Technologies Co., Ltd.
   "^hugsun,.*":
     description: Shenzhen Hugsun Technology Co. Ltd.
+  "^huiling,.*":
+    description: Shenzhen Huiling Information Technology Co., Ltd.
   "^hwacom,.*":
     description: HwaCom Systems Inc.
   "^hxt,.*":
@@ -786,6 +799,8 @@ patternProperties:
     description: Jide Tech
   "^joz,.*":
     description: JOZ BV
+  "^jty,.*":
+    description: JTY
   "^kam,.*":
     description: Kamstrup A/S
   "^karo,.*":
@@ -890,6 +905,8 @@ patternProperties:
     description: Nanjing Loongmasses Ltd.
   "^lsi,.*":
     description: LSI Corp. (LSI Logic)
+  "^luckfox,.*":
+    description: Shenzhen Luckfox Technology Co., Ltd.
   "^lunzn,.*":
     description: Shenzhen Lunzn Technology Co., Ltd.
   "^luxul,.*":
@@ -1067,6 +1084,8 @@ patternProperties:
     description: Next Thing Co.
   "^ni,.*":
     description: National Instruments
+  "^nicera,.*":
+    description: Nippon Ceramic Co., Ltd.
   "^nintendo,.*":
     description: Nintendo
   "^nlt,.*":
@@ -1302,6 +1321,8 @@ patternProperties:
     description: Recharge Véhicule Électrique (RVE) inc.
   "^saef,.*":
     description: Saef Technology Limited
+  "^sakurapi,.*":
+    description: SakuraPi.org
   "^samsung,.*":
     description: Samsung Semiconductor
   "^samtec,.*":
index 8a6c3a75a5478329ff259eb0378d7935ca8ac30e..34951783a6330825cd05bff07480552e40c9ea07 100644 (file)
@@ -37,6 +37,7 @@ properties:
               - fsl,ls1012a-wdt
               - fsl,ls1021a-wdt
               - fsl,ls1043a-wdt
+              - fsl,ls1046a-wdt
               - fsl,vf610-wdt
           - const: fsl,imx21-wdt
 
@@ -105,6 +106,7 @@ allOf:
                 - fsl,ls1012a-wdt
                 - fsl,ls1021a-wdt
                 - fsl,ls1043a-wdt
+                - fsl,ls1046a-wdt
     then:
       properties:
         big-endian: false
index 8d2520241e37f0e8a7526cbc99d5aa0d4edc9a55..ba0bfd73ab62a86befead007d4b7d2a870b81a0c 100644 (file)
@@ -34,6 +34,7 @@ properties:
       - items:
           - enum:
               - mediatek,mt2701-wdt
+              - mediatek,mt6572-wdt
               - mediatek,mt6582-wdt
               - mediatek,mt6797-wdt
               - mediatek,mt7622-wdt
index 35ef940cbabe89e9082692061e4718cccc5d47de..8964c1c5d5220fd7de792e70157b58c94904c871 100644 (file)
@@ -19,6 +19,9 @@ properties:
   reg:
     maxItems: 1
 
+  clocks:
+    maxItems: 1
+
 required:
   - compatible
   - reg
index 1ad081de2dd04e0f3a03adce0f0c9f9b6c256f00..f8e0293a7c0621a343a493d448624bff916ba021 100644 (file)
@@ -39,10 +39,22 @@ Overall design
 Properties
 ==========
 
-- DO make 'compatible' properties specific. DON'T use wildcards in compatible
-  strings. DO use fallback compatibles when devices are the same as or a subset
-  of prior implementations. DO add new compatibles in case there are new
-  features or bugs.
+- DO make 'compatible' properties specific.
+
+   - DON'T use wildcards or device-family names in compatible strings.
+
+   - DO use fallback compatibles when devices are the same as or a superset of
+     prior implementations.
+
+   - DO add new compatibles in case there are new features or bugs.
+
+   - DO use a SoC-specific compatible for all SoC devices, followed by a
+     fallback if appropriate. SoC-specific compatibles are also preferred for
+     the fallbacks.
+
+   - DON'T use bus suffixes to encode the type of interface device is using.
+     The parent bus node already implies that interface.  DON'T add the type of
+     device, if the device cannot be anything else.
 
 - DO use a vendor prefix on device-specific property names. Consider if
   properties could be common among devices of the same class. Check other
@@ -51,12 +63,21 @@ Properties
 - DON'T redefine common properties. Just reference the definition and define
   constraints specific to the device.
 
+- DON'T add properties to avoid a specific compatible. DON'T add properties if
+  they are implied by (deducible from) the compatible.
+
 - DO use common property unit suffixes for properties with scientific units.
   Recommended suffixes are listed at
   https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml
 
 - DO define properties in terms of constraints. How many entries? What are
-  possible values? What is the order?
+  possible values? What is the order? All these constraints represent the ABI
+  as well.
+
+- DON'T make changes that break the ABI without explicit and detailed rationale
+  for why the changes have to be made and their impact. ABI impact goes beyond
+  the Linux kernel, because it also covers other open-source upstream projects.
+
 
 Typical cases and caveats
 =========================
@@ -64,7 +85,7 @@ Typical cases and caveats
 - Phandle entries, like clocks/dmas/interrupts/resets, should always be
   explicitly ordered. Include the {clock,dma,interrupt,reset}-names if there is
   more than one phandle. When used, both of these fields need the same
-  constraints (e.g.  list of items).
+  constraints (e.g. list of items).
 
 - For names used in {clock,dma,interrupt,reset}-names, do not add any suffix,
   e.g.: "tx" instead of "txirq" (for interrupt).
@@ -84,6 +105,15 @@ Typical cases and caveats
 - "syscon" is not a generic property. Use vendor and type, e.g.
   "vendor,power-manager-syscon".
 
+- Do not add instance index (IDs) properties or custom OF aliases.  If the
+  devices have different programming model, they might need different
+  compatibles.  If such devices use some other device in a different way, e.g.
+  they program the phy differently, use cell/phandle arguments.
+
+- Bindings files should be named like compatible: vendor,device.yaml. In case
+  of multiple compatibles in the binding, use one of the fallbacks or a more
+  generic name, yet still matching compatible style.
+
 Board/SoC .dts Files
 ====================
 
index fc73072f12fc58dbaf3dea3eb8cc79cfac0341c8..470d1521fa174f4fac29004b95a9b1a8c37071d9 100644 (file)
@@ -171,6 +171,9 @@ Coding style
 Use YAML coding style (two-space indentation). For DTS examples in the schema,
 preferred is four-space indentation.
 
+Place entries in 'properties' and 'required' sections in the same order, using
+style from Documentation/devicetree/bindings/dts-coding-style.rst.
+
 Testing
 -------
 
index 897b8135dc12f56b82c6683b14e2fc135daefc20..cb8ce53146f0c05dab72f9a27c262a2f51dcd66b 100644 (file)
 #define QCOM_ID_QCM8550                        604
 #define QCOM_ID_SM8750                 618
 #define QCOM_ID_IPQ5300                        624
+#define QCOM_ID_SM7635                 636
+#define QCOM_ID_SM6650                 640
+#define QCOM_ID_SM6650P                        641
 #define QCOM_ID_IPQ5321                        650
 #define QCOM_ID_IPQ5424                        651
+#define QCOM_ID_QCM6690                        657
+#define QCOM_ID_QCS6690                        658
 #define QCOM_ID_IPQ5404                        671
 #define QCOM_ID_QCS9100                        667
 #define QCOM_ID_QCS8300                        674
index 7ae96c7bd72fdea68fb8ad84426977f5234d948b..f60fff261130e1c9aa9d4840f909cfecb74ffb44 100644 (file)
 #define ASPEED_RESET_PCIE_DEV_OEN      20
 #define ASPEED_RESET_PCIE_RC_O         19
 #define ASPEED_RESET_PCIE_RC_OEN       18
+#define ASPEED_RESET_MAC2              12
+#define ASPEED_RESET_MAC1              11
 #define ASPEED_RESET_PCI_DP            5
 #define ASPEED_RESET_HACE              4
 #define ASPEED_RESET_AHB               1
diff --git a/include/dt-bindings/clock/cix,sky1.h b/include/dt-bindings/clock/cix,sky1.h
new file mode 100644 (file)
index 0000000..9245ebd
--- /dev/null
@@ -0,0 +1,279 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright 2024-2025 Cix Technology Group Co., Ltd.
+ */
+
+#ifndef _DT_BINDINGS_CLK_CIX_SKY1_H
+#define _DT_BINDINGS_CLK_CIX_SKY1_H
+
+#define CLK_TREE_CPU_GICxCLK                   0
+#define CLK_TREE_CPU_PPUCLK                    1
+#define CLK_TREE_CPU_PERIPHCLK                 2
+#define CLK_TREE_DSU_CLK                       3
+#define CLK_TREE_DSU_PCLK                      4
+#define CLK_TREE_CPU_CLK_BC0                   5
+#define CLK_TREE_CPU_CLK_BC1                   6
+#define CLK_TREE_CPU_CLK_BC2                   7
+#define CLK_TREE_CPU_CLK_BC3                   8
+#define CLK_TREE_CPU_CLK_MC0                   9
+#define CLK_TREE_CPU_CLK_MC1                   10
+#define CLK_TREE_CPU_CLK_MC2                   11
+#define CLK_TREE_CPU_CLK_MC3                   12
+#define CLK_TREE_CPU_CLK_LC0                   13
+#define CLK_TREE_CPU_CLK_LC1                   14
+#define CLK_TREE_CPU_CLK_LC2                   15
+#define CLK_TREE_CPU_CLK_LC3                   16
+#define CLK_TREE_CSI_CTRL0_PCLK                        17
+#define CLK_TREE_CSI_CTRL1_PCLK                        18
+#define CLK_TREE_CSI_CTRL2_PCLK                        19
+#define CLK_TREE_CSI_CTRL3_PCLK                        20
+#define CLK_TREE_CSI_DMA0_PCLK                 21
+#define CLK_TREE_CSI_DMA1_PCLK                 22
+#define CLK_TREE_CSI_DMA2_PCLK                 23
+#define CLK_TREE_CSI_DMA3_PCLK                 24
+#define CLK_TREE_CSI_PHY0_PSM                  25
+#define CLK_TREE_CSI_PHY1_PSM                  26
+#define CLK_TREE_CSI_PHY0_APBCLK               27
+#define CLK_TREE_CSI_PHY1_APBCLK               28
+#define CLK_TREE_FCH_APB_CLK                   29
+#define CLK_TREE_GPU_CLK_400M                  30
+#define CLK_TREE_GPU_CLK_CORE                  31
+#define CLK_TREE_GPU_CLK_STACKS                        32
+#define CLK_TREE_DP0_PIXEL0                    33
+#define CLK_TREE_DP0_PIXEL1                    34
+#define CLK_TREE_DP1_PIXEL0                    35
+#define CLK_TREE_DP1_PIXEL1                    36
+#define CLK_TREE_DP2_PIXEL0                    37
+#define CLK_TREE_DP2_PIXEL1                    38
+#define CLK_TREE_DP3_PIXEL0                    39
+#define CLK_TREE_DP3_PIXEL1                    40
+#define CLK_TREE_DP4_PIXEL0                    41
+#define CLK_TREE_DP4_PIXEL1                    42
+#define CLK_TREE_DPU_CLK                       43
+#define CLK_TREE_DPU0_ACLK                     44
+#define CLK_TREE_DPU1_ACLK                     45
+#define CLK_TREE_DPU2_ACLK                     46
+#define CLK_TREE_DPU3_ACLK                     47
+#define CLK_TREE_DPU4_ACLK                     48
+#define CLK_TREE_DPC0_VIDCLK0                  49
+#define CLK_TREE_DPC0_VIDCLK1                  50
+#define CLK_TREE_DPC1_VIDCLK0                  51
+#define CLK_TREE_DPC1_VIDCLK1                  52
+#define CLK_TREE_DPC2_VIDCLK0                  53
+#define CLK_TREE_DPC2_VIDCLK1                  54
+#define CLK_TREE_DPC3_VIDCLK0                  55
+#define CLK_TREE_DPC3_VIDCLK1                  56
+#define CLK_TREE_DPC4_VIDCLK0                  57
+#define CLK_TREE_DPC4_VIDCLK1                  58
+#define CLK_TREE_DPC0_APBCLK                   59
+#define CLK_TREE_DPC1_APBCLK                   60
+#define CLK_TREE_DPC2_APBCLK                   61
+#define CLK_TREE_DPC3_APBCLK                   62
+#define CLK_TREE_DPC4_APBCLK                   63
+#define CLK_TREE_NPU_MEMCLK                    64
+#define CLK_TREE_NPU_SYSCLK                    65
+#define CLK_TREE_NPU_DBGCLK                    66
+#define CLK_TREE_VPU_APBCLK                    67
+#define CLK_TREE_ISP_ACLK                      68
+#define CLK_TREE_ISP_SCLK                      69
+#define CLK_TREE_AUDIO_CLK4                    70
+#define CLK_TREE_AUDIO_CLK5                    71
+#define CLK_TREE_CAMERA_MCLK0                  72
+#define CLK_TREE_CAMERA_MCLK1                  73
+#define CLK_TREE_CAMERA_MCLK2                  74
+#define CLK_TREE_CAMERA_MCLK3                  75
+#define CLK_TREE_AUDIO_CLK0                    76
+#define CLK_TREE_AUDIO_CLK1                    77
+#define CLK_TREE_AUDIO_CLK2                    78
+#define CLK_TREE_AUDIO_CLK3                    79
+#define CLK_TREE_MM_NI700_CLK                  80
+#define CLK_TREE_SYS_NI700_CLK                 81
+#define CLK_TREE_GMAC0_ACLK                    82
+#define CLK_TREE_GMAC1_ACLK                    83
+#define CLK_TREE_GMAC0_DIV_ACLK                        84
+#define CLK_TREE_GMAC0_DIV_TXCLK               85
+#define CLK_TREE_GMAC0_RGMII0_TXCLK            86
+#define CLK_TREE_GMAC1_DIV_ACLK                        87
+#define CLK_TREE_GMAC1_DIV_TXCLK               88
+#define CLK_TREE_GMAC1_RGMII0_TXCLK            89
+#define CLK_TREE_GMAC0_PCLK                    90
+#define CLK_TREE_GMAC1_PCLK                    91
+#define CLK_TREE_USB2_0_AXI_GATE               92
+#define CLK_TREE_USB2_0_APB_GATE               93
+#define CLK_TREE_USB2_1_AXI_GATE               94
+#define CLK_TREE_USB2_1_APB_GATE               95
+#define CLK_TREE_USB2_2_AXI_GATE               96
+#define CLK_TREE_USB2_2_APB_GATE               97
+#define CLK_TREE_USB2_3_AXI_GATE               98
+#define CLK_TREE_USB2_3_APB_GATE               99
+#define CLK_TREE_USB2_0_PHY_GATE               100
+#define CLK_TREE_USB2_1_PHY_GATE               101
+#define CLK_TREE_USB2_2_PHY_GATE               102
+#define CLK_TREE_USB2_3_PHY_GATE               103
+#define CLK_TREE_USB3C_DRD_AXI_GATE            104
+#define CLK_TREE_USB3C_DRD_APB_GATE            105
+#define CLK_TREE_USB3C_DRD_PHY2_GATE           106
+#define CLK_TREE_USB3C_DRD_PHY3_GATE           107
+#define CLK_TREE_USB3C_0_AXI_GATE              108
+#define CLK_TREE_USB3C_0_APB_GATE              109
+#define CLK_TREE_USB3C_0_PHY2_GATE             110
+#define CLK_TREE_USB3C_0_PHY3_GATE             111
+#define CLK_TREE_USB3C_1_AXI_GATE              112
+#define CLK_TREE_USB3C_1_APB_GATE              113
+#define CLK_TREE_USB3C_1_PHY2_GATE             114
+#define CLK_TREE_USB3C_1_PHY3_GATE             115
+#define CLK_TREE_USB3C_2_AXI_GATE              116
+#define CLK_TREE_USB3C_2_APB_GATE              117
+#define CLK_TREE_USB3C_2_PHY2_GATE             118
+#define CLK_TREE_USB3C_2_PHY3_GATE             119
+#define CLK_TREE_USB3A_0_AXI_GATE              120
+#define CLK_TREE_USB3A_0_APB_GATE              121
+#define CLK_TREE_USB3A_0_PHY2_GATE             122
+#define CLK_TREE_USB3A_1_AXI_GATE              123
+#define CLK_TREE_USB3A_1_APB_GATE              124
+#define CLK_TREE_USB3A_1_PHY2_GATE             125
+#define CLK_TREE_USB3A_PHY3_GATE               126
+#define CLK_TREE_USB2_0_CLK_SOF                        127
+#define CLK_TREE_USB2_1_CLK_SOF                        128
+#define CLK_TREE_USB2_2_CLK_SOF                        129
+#define CLK_TREE_USB2_3_CLK_SOF                        130
+#define CLK_TREE_USB3C_DRD_CLK_SOF             131
+#define CLK_TREE_USB3C_H0_CLK_SOF              132
+#define CLK_TREE_USB3C_H1_CLK_SOF              133
+#define CLK_TREE_USB3C_H2_CLK_SOF              134
+#define CLK_TREE_USB3A_H0_CLK_SOF              135
+#define CLK_TREE_USB3A_H1_CLK_SOF              136
+#define CLK_TREE_USB2_0_CLK_LPM                        137
+#define CLK_TREE_USB2_1_CLK_LPM                        138
+#define CLK_TREE_USB2_2_CLK_LPM                        139
+#define CLK_TREE_USB2_3_CLK_LPM                        140
+#define CLK_TREE_USB3C_DRD_CLK_LPM             141
+#define CLK_TREE_USB3C_H0_CLK_LPM              142
+#define CLK_TREE_USB3C_H1_CLK_LPM              143
+#define CLK_TREE_USB3C_H2_CLK_LPM              144
+#define CLK_TREE_USB3A_H0_CLK_LPM              145
+#define CLK_TREE_USB3A_H1_CLK_LPM              146
+#define CLK_TREE_USB2_0_PHY_REF                        147
+#define CLK_TREE_USB2_1_PHY_REF                        148
+#define CLK_TREE_USB2_2_PHY_REF                        149
+#define CLK_TREE_USB2_3_PHY_REF                        150
+#define CLK_TREE_USB3C_DRD_PHY_REF             151
+#define CLK_TREE_USB3C_H0_PHY_REF              152
+#define CLK_TREE_USB3C_H1_PHY_REF              153
+#define CLK_TREE_USB3C_H2_PHY_REF              154
+#define CLK_TREE_USB3A_H0_PHY_REF              155
+#define CLK_TREE_USB3A_H1_PHY_REF              156
+#define CLK_TREE_USB3C_DRD_PHY_x4_REF          157
+#define CLK_TREE_USB3C_H0_PHY_x4_REF           158
+#define CLK_TREE_USB3C_H1_PHY_x4_REF           159
+#define CLK_TREE_USB3C_H2_PHY_x4_REF           160
+#define CLK_TREE_USB3A_PHY_x2_REF              161
+#define CLK_TREE_PCIE_X8CTRL_APB               162
+#define CLK_TREE_PCIE_X4CTRL_APB               163
+#define CLK_TREE_PCIE_X2CTRL_APB               164
+#define CLK_TREE_PCIE_X1_0CTRL_APB             165
+#define CLK_TREE_PCIE_X1_1CTRL_APB             166
+#define CLK_TREE_PCIE_X8_PHY_APB               167
+#define CLK_TREE_PCIE_X4_PHY_APB               168
+#define CLK_TREE_PCIE_X211_PHY_APB             169
+#define CLK_TREE_PCIE_NI700_CLK                        170
+#define CLK_TREE_PCIE_CTRL0_CLK                        171
+#define CLK_TREE_PCIE_CTRL1_CLK                        172
+#define CLK_TREE_PCIE_CTRL2_CLK                        173
+#define CLK_TREE_PCIE_CTRL3_CLK                        174
+#define CLK_TREE_PCIE_CTRL4_CLK                        175
+#define CLK_TREE_CSI_CTRL0_SYSCLK              176
+#define CLK_TREE_CSI_CTRL1_SYSCLK              177
+#define CLK_TREE_CSI_CTRL2_SYSCLK              178
+#define CLK_TREE_CSI_CTRL3_SYSCLK              179
+#define CLK_TREE_CSI_CTRL0_PIXEL0_CLK          180
+#define CLK_TREE_CSI_CTRL0_PIXEL1_CLK          181
+#define CLK_TREE_CSI_CTRL0_PIXEL2_CLK          182
+#define CLK_TREE_CSI_CTRL0_PIXEL3_CLK          183
+#define CLK_TREE_CSI_CTRL1_PIXEL0_CLK          184
+#define CLK_TREE_CSI_CTRL2_PIXEL0_CLK          185
+#define CLK_TREE_CSI_CTRL2_PIXEL1_CLK          186
+#define CLK_TREE_CSI_CTRL2_PIXEL2_CLK          187
+#define CLK_TREE_CSI_CTRL2_PIXEL3_CLK          188
+#define CLK_TREE_CSI_CTRL3_PIXEL0_CLK          189
+#define CLK_TREE_CI700_GCLK0                   190
+#define CLK_TREE_DDRC0_ACLK_CLK                        191
+#define CLK_TREE_DDRC1_ACLK_CLK                        192
+#define CLK_TREE_DDRC2_ACLK_CLK                        193
+#define CLK_TREE_DDRC3_ACLK_CLK                        194
+#define CLK_TREE_DDRC0_DFICLK_CLK              195
+#define CLK_TREE_DDRC1_DFICLK_CLK              196
+#define CLK_TREE_DDRC2_DFICLK_CLK              197
+#define CLK_TREE_DDRC3_DFICLK_CLK              198
+#define CLK_TREE_PHY0_SYNC_CLK                 199
+#define CLK_TREE_PHY1_SYNC_CLK                 200
+#define CLK_TREE_PHY2_SYNC_CLK                 201
+#define CLK_TREE_PHY3_SYNC_CLK                 202
+#define CLK_TREE_PHY0_BYPASS_CLK               203
+#define CLK_TREE_PHY1_BYPASS_CLK               204
+#define CLK_TREE_PHY2_BYPASS_CLK               205
+#define CLK_TREE_PHY3_BYPASS_CLK               206
+#define CLK_TREE_DDRC_0_APB                    207
+#define CLK_TREE_DDRC_1_APB                    208
+#define CLK_TREE_DDRC_2_APB                    209
+#define CLK_TREE_DDRC_3_APB                    210
+#define CLK_TREE_TZC400_0_APB                  211
+#define CLK_TREE_TZC400_1_APB                  212
+#define CLK_TREE_TZC400_2_APB                  213
+#define CLK_TREE_TZC400_3_APB                  214
+#define CLK_TREE_S5_SENSOR_HUB_25M             215
+#define CLK_TREE_S5_SENSOR_HUB_400M            216
+#define CLK_TREE_S5_CSS600_100M                        217
+#define CLK_TREE_S5_DFD_800M                   218
+#define CLK_TREE_S5_CSU_SE_800M                        219
+#define CLK_TREE_S5_CSU_PM_800M                        220
+#define CLK_TREE_PCIE_REF_B0                   221
+#define CLK_TREE_PCIE_REF_B1                   222
+#define CLK_TREE_PCIE_REF_B2                   223
+#define CLK_TREE_PCIE_REF_B3                   224
+#define CLK_TREE_PCIE_REF_B4                   225
+#define CLK_TREE_PCIE_REF_PHY_X8               226
+#define CLK_TREE_PCIE_REF_PHY_X4               227
+#define CLK_TREE_PCIE_REF_PHY_X211             228
+#define CLK_TREE_GMAC_REC_CLK                  229
+#define CLK_TREE_GPUTOP_PLL                    230
+#define CLK_TREE_GPUCORE_PLL                   231
+#define CLK_TREE_CPU_PLL_LIT                   232
+#define CLK_TREE_CPU_PLL0                      233
+#define CLK_TREE_CPU_PLL1                      234
+#define CLK_TREE_CPU_PLL2                      235
+#define CLK_TREE_CPU_PLL3                      236
+#define CLK_TREE_FCH_I3C0_FUNC                 237
+#define CLK_TREE_FCH_I3C1_FUNC                 238
+#define CLK_TREE_FCH_DMA_ACLK                  239
+#define CLK_TREE_FCH_XSPI_FUNC                 240
+#define CLK_TREE_FCH_XSPI_MACLK                        241
+#define CLK_TREE_FCH_TIMER_FUN                 242
+#define CLK_TREE_FCH_APB_IO_S0                 243
+#define CLK_TREE_FCH_I3C0_APB                  244
+#define CLK_TREE_FCH_I3C1_APB                  245
+#define CLK_TREE_FCH_UART0_APB                 246
+#define CLK_TREE_FCH_UART1_APB                 247
+#define CLK_TREE_FCH_UART2_APB                 248
+#define CLK_TREE_FCH_UART3_APB                 249
+#define CLK_TREE_FCH_SPI0_APB                  250
+#define CLK_TREE_FCH_SPI1_APB                  251
+#define CLK_TREE_FCH_XSPI_APB                  252
+#define CLK_TREE_FCH_I2C0_APB                  253
+#define CLK_TREE_FCH_I2C1_APB                  254
+#define CLK_TREE_FCH_I2C2_APB                  255
+#define CLK_TREE_FCH_I2C3_APB                  256
+#define CLK_TREE_FCH_I2C4_APB                  257
+#define CLK_TREE_FCH_I2C5_APB                  258
+#define CLK_TREE_FCH_I2C6_APB                  259
+#define CLK_TREE_FCH_I2C7_APB                  260
+#define CLK_TREE_FCH_TIMER_APB                 261
+#define CLK_TREE_FCH_GPIO_APB                  262
+#define CLK_TREE_FCH_UART0_FUNC                        263
+#define CLK_TREE_FCH_UART1_FUNC                        264
+#define CLK_TREE_FCH_UART2_FUNC                        265
+#define CLK_TREE_FCH_UART3_FUNC                        266
+/* 267~271 not used by AP, skip */
+#define CLK_TREE_GPU_CLK_200M                  272
+
+#endif
diff --git a/include/dt-bindings/clock/nvidia,tegra264.h b/include/dt-bindings/clock/nvidia,tegra264.h
new file mode 100644 (file)
index 0000000..0fc2ad5
--- /dev/null
@@ -0,0 +1,466 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/* Copyright (c) 2022-2025, NVIDIA CORPORATION. All rights reserved. */
+
+#ifndef DT_BINDINGS_CLOCK_NVIDIA_TEGRA264_H
+#define DT_BINDINGS_CLOCK_NVIDIA_TEGRA264_H
+
+#define TEGRA264_CLK_OSC                               1
+#define TEGRA264_CLK_CLK_S                             2
+#define TEGRA264_CLK_JTAG_REG                          3
+#define TEGRA264_CLK_SPLL                              4
+#define TEGRA264_CLK_SPLL_OUT0                         5
+#define TEGRA264_CLK_SPLL_OUT1                         6
+#define TEGRA264_CLK_SPLL_OUT2                         7
+#define TEGRA264_CLK_SPLL_OUT3                         8
+#define TEGRA264_CLK_SPLL_OUT4                         9
+#define TEGRA264_CLK_SPLL_OUT5                         10
+#define TEGRA264_CLK_SPLL_OUT6                         11
+#define TEGRA264_CLK_SPLL_OUT7                         12
+#define TEGRA264_CLK_AON_I2C                           13
+#define TEGRA264_CLK_HOST1X                            14
+#define TEGRA264_CLK_ISP                               15
+#define TEGRA264_CLK_ISP1                              16
+#define TEGRA264_CLK_ISP_ROOT                          17
+#define TEGRA264_CLK_NAFLL_PVA0_CORE                   18
+#define TEGRA264_CLK_NAFLL_PVA0_VPS                    19
+#define TEGRA264_CLK_NVCSI                             20
+#define TEGRA264_CLK_NVCSILP                           21
+#define TEGRA264_CLK_PLLP_OUT0                         22
+#define TEGRA264_CLK_PVA0_CPU_AXI                      23
+#define TEGRA264_CLK_PVA0_VPS                          24
+#define TEGRA264_CLK_PWM10                             25
+#define TEGRA264_CLK_PWM2                              26
+#define TEGRA264_CLK_PWM3                              27
+#define TEGRA264_CLK_PWM4                              28
+#define TEGRA264_CLK_PWM5                              29
+#define TEGRA264_CLK_PWM9                              30
+#define TEGRA264_CLK_QSPI0                             31
+#define TEGRA264_CLK_QSPI0_2X_PM                       32
+#define TEGRA264_CLK_RCE1_CPU                          33
+#define TEGRA264_CLK_RCE1_NIC                          34
+#define TEGRA264_CLK_RCE_CPU                           35
+#define TEGRA264_CLK_RCE_NIC                           36
+#define TEGRA264_CLK_SE                                        37
+#define TEGRA264_CLK_SEU1                              38
+#define TEGRA264_CLK_SEU2                              39
+#define TEGRA264_CLK_SEU3                              40
+#define TEGRA264_CLK_SE_ROOT                           41
+#define TEGRA264_CLK_SPI1                              42
+#define TEGRA264_CLK_SPI2                              43
+#define TEGRA264_CLK_SPI3                              44
+#define TEGRA264_CLK_SPI4                              45
+#define TEGRA264_CLK_SPI5                              46
+#define TEGRA264_CLK_TOP_I2C                           47
+#define TEGRA264_CLK_TSEC                              48
+#define TEGRA264_CLK_TSEC_PKA                          49
+#define TEGRA264_CLK_UART0                             50
+#define TEGRA264_CLK_UART10                            51
+#define TEGRA264_CLK_UART11                            52
+#define TEGRA264_CLK_UART4                             53
+#define TEGRA264_CLK_UART5                             54
+#define TEGRA264_CLK_UART8                             55
+#define TEGRA264_CLK_UART9                             56
+#define TEGRA264_CLK_VI                                        57
+#define TEGRA264_CLK_VI1                               58
+#define TEGRA264_CLK_VIC                               59
+#define TEGRA264_CLK_VI_ROOT                           60
+#define TEGRA264_CLK_DISPPLL                           61
+#define TEGRA264_CLK_SPPLL0                            62
+#define TEGRA264_CLK_SPPLL0_CLKOUT1A                   63
+#define TEGRA264_CLK_SPPLL0_CLKOUT2A                   64
+#define TEGRA264_CLK_SPPLL1                            65
+#define TEGRA264_CLK_VPLL0                             66
+#define TEGRA264_CLK_VPLL1                             67
+#define TEGRA264_CLK_VPLL2                             68
+#define TEGRA264_CLK_VPLL3                             69
+#define TEGRA264_CLK_VPLL4                             70
+#define TEGRA264_CLK_VPLL5                             71
+#define TEGRA264_CLK_VPLL6                             72
+#define TEGRA264_CLK_VPLL7                             73
+#define TEGRA264_CLK_RG0_DIV                           74
+#define TEGRA264_CLK_RG1_DIV                           75
+#define TEGRA264_CLK_RG2_DIV                           76
+#define TEGRA264_CLK_RG3_DIV                           77
+#define TEGRA264_CLK_RG4_DIV                           78
+#define TEGRA264_CLK_RG5_DIV                           79
+#define TEGRA264_CLK_RG6_DIV                           80
+#define TEGRA264_CLK_RG7_DIV                           81
+#define TEGRA264_CLK_RG0                               82
+#define TEGRA264_CLK_RG1                               83
+#define TEGRA264_CLK_RG2                               84
+#define TEGRA264_CLK_RG3                               85
+#define TEGRA264_CLK_RG4                               86
+#define TEGRA264_CLK_RG5                               87
+#define TEGRA264_CLK_RG6                               88
+#define TEGRA264_CLK_RG7                               89
+#define TEGRA264_CLK_DISP                              90
+#define TEGRA264_CLK_DSC                               91
+#define TEGRA264_CLK_DSC_ROOT                          92
+#define TEGRA264_CLK_HUB                               93
+#define TEGRA264_CLK_VPLLX_SOR0_MUXED                  94
+#define TEGRA264_CLK_VPLLX_SOR1_MUXED                  95
+#define TEGRA264_CLK_VPLLX_SOR2_MUXED                  96
+#define TEGRA264_CLK_VPLLX_SOR3_MUXED                  97
+#define TEGRA264_CLK_LINKA_SYM                         98
+#define TEGRA264_CLK_LINKB_SYM                         99
+#define TEGRA264_CLK_LINKC_SYM                         100
+#define TEGRA264_CLK_LINKD_SYM                         101
+#define TEGRA264_CLK_PRE_SOR0                          102
+#define TEGRA264_CLK_PRE_SOR1                          103
+#define TEGRA264_CLK_PRE_SOR2                          104
+#define TEGRA264_CLK_PRE_SOR3                          105
+#define TEGRA264_CLK_SOR0_PLL_REF                      106
+#define TEGRA264_CLK_SOR1_PLL_REF                      107
+#define TEGRA264_CLK_SOR2_PLL_REF                      108
+#define TEGRA264_CLK_SOR3_PLL_REF                      109
+#define TEGRA264_CLK_SOR0_PAD                          110
+#define TEGRA264_CLK_SOR1_PAD                          111
+#define TEGRA264_CLK_SOR2_PAD                          112
+#define TEGRA264_CLK_SOR3_PAD                          113
+#define TEGRA264_CLK_SOR0_REF                          114
+#define TEGRA264_CLK_SOR1_REF                          115
+#define TEGRA264_CLK_SOR2_REF                          116
+#define TEGRA264_CLK_SOR3_REF                          117
+#define TEGRA264_CLK_SOR0_DIV                          118
+#define TEGRA264_CLK_SOR1_DIV                          119
+#define TEGRA264_CLK_SOR2_DIV                          120
+#define TEGRA264_CLK_SOR3_DIV                          121
+#define TEGRA264_CLK_SOR0                              122
+#define TEGRA264_CLK_SOR1                              123
+#define TEGRA264_CLK_SOR2                              124
+#define TEGRA264_CLK_SOR3                              125
+#define TEGRA264_CLK_SF0_SOR                           126
+#define TEGRA264_CLK_SF1_SOR                           127
+#define TEGRA264_CLK_SF2_SOR                           128
+#define TEGRA264_CLK_SF3_SOR                           129
+#define TEGRA264_CLK_SF4_SOR                           130
+#define TEGRA264_CLK_SF5_SOR                           131
+#define TEGRA264_CLK_SF6_SOR                           132
+#define TEGRA264_CLK_SF7_SOR                           133
+#define TEGRA264_CLK_SF0                               134
+#define TEGRA264_CLK_SF1                               135
+#define TEGRA264_CLK_SF2                               136
+#define TEGRA264_CLK_SF3                               137
+#define TEGRA264_CLK_SF4                               138
+#define TEGRA264_CLK_SF5                               139
+#define TEGRA264_CLK_SF6                               140
+#define TEGRA264_CLK_SF7                               141
+#define TEGRA264_CLK_MAUD                              142
+#define TEGRA264_CLK_AZA_2XBIT                         143
+#define TEGRA264_CLK_DCE_CPU                           144
+#define TEGRA264_CLK_DCE_NIC                           145
+#define TEGRA264_CLK_PLLC4                             146
+#define TEGRA264_CLK_PLLC4_OUT0                                147
+#define TEGRA264_CLK_PLLC4_OUT1                                148
+#define TEGRA264_CLK_PLLC4_MUXED                       149
+#define TEGRA264_CLK_SDMMC1                            150
+#define TEGRA264_CLK_SDMMC_LEGACY_TM                   151
+#define TEGRA264_CLK_PLLC0                             152
+#define TEGRA264_CLK_NAFLL_BPMP                                153
+#define TEGRA264_CLK_PLLP_OUT_PDIV                     154
+#define TEGRA264_CLK_DISP_ROOT                         155
+#define TEGRA264_CLK_ADSP                              156
+#define TEGRA264_CLK_PLLA                              157
+#define TEGRA264_CLK_PLLA1                             158
+#define TEGRA264_CLK_PLLA1_OUT1                                159
+#define TEGRA264_CLK_PLLAON                            160
+#define TEGRA264_CLK_PLLAON_APE                                161
+#define TEGRA264_CLK_PLLA_OUT0                         162
+#define TEGRA264_CLK_AHUB                              163
+#define TEGRA264_CLK_APE                               164
+#define TEGRA264_CLK_I2S1_SCLK_IN                      165
+#define TEGRA264_CLK_I2S2_SCLK_IN                      166
+#define TEGRA264_CLK_I2S3_SCLK_IN                      167
+#define TEGRA264_CLK_I2S4_SCLK_IN                      168
+#define TEGRA264_CLK_I2S5_SCLK_IN                      169
+#define TEGRA264_CLK_I2S6_SCLK_IN                      170
+#define TEGRA264_CLK_I2S7_SCLK_IN                      171
+#define TEGRA264_CLK_I2S8_SCLK_IN                      172
+#define TEGRA264_CLK_I2S9_SCLK_IN                      173
+#define TEGRA264_CLK_I2S1_AUDIO_SYNC                   174
+#define TEGRA264_CLK_I2S2_AUDIO_SYNC                   175
+#define TEGRA264_CLK_I2S3_AUDIO_SYNC                   176
+#define TEGRA264_CLK_I2S4_AUDIO_SYNC                   177
+#define TEGRA264_CLK_I2S5_AUDIO_SYNC                   178
+#define TEGRA264_CLK_I2S6_AUDIO_SYNC                   179
+#define TEGRA264_CLK_I2S7_AUDIO_SYNC                   180
+#define TEGRA264_CLK_I2S8_AUDIO_SYNC                   181
+#define TEGRA264_CLK_DMIC1_AUDIO_SYNC                  182
+#define TEGRA264_CLK_DSPK1_AUDIO_SYNC                  183
+#define TEGRA264_CLK_I2S1                              184
+#define TEGRA264_CLK_I2S2                              185
+#define TEGRA264_CLK_I2S3                              186
+#define TEGRA264_CLK_I2S4                              187
+#define TEGRA264_CLK_I2S5                              188
+#define TEGRA264_CLK_I2S6                              189
+#define TEGRA264_CLK_I2S7                              190
+#define TEGRA264_CLK_I2S8                              191
+#define TEGRA264_CLK_I2S9                              192
+#define TEGRA264_CLK_DMIC1                             193
+#define TEGRA264_CLK_DMIC5                             194
+#define TEGRA264_CLK_DSPK1                             195
+#define TEGRA264_CLK_AON_CPU                           196
+#define TEGRA264_CLK_AON_NIC                           197
+#define TEGRA264_CLK_BPMP                              198
+#define TEGRA264_CLK_AXI_CBB                           199
+#define TEGRA264_CLK_FUSE                              200
+#define TEGRA264_CLK_TSENSE                            201
+#define TEGRA264_CLK_CSITE                             202
+#define TEGRA264_CLK_HCSITE                            203
+#define TEGRA264_CLK_DBGAPB                            204
+#define TEGRA264_CLK_LA                                        205
+#define TEGRA264_CLK_PLLREFGP                          206
+#define TEGRA264_CLK_PLLE0                             207
+#define TEGRA264_CLK_UPHY0_PLL0_XDIG                   208
+#define TEGRA264_CLK_EQOS_APP                          209
+#define TEGRA264_CLK_EQOS_MAC                          210
+#define TEGRA264_CLK_EQOS_MACSEC                       211
+#define TEGRA264_CLK_EQOS_TX_PCS                       212
+#define TEGRA264_CLK_MGBES_PTP_REF                     213
+#define TEGRA264_CLK_MGBE0_UPHY1_PLL_XDIG              214
+#define TEGRA264_CLK_MGBE0_TX_PCS                      215
+#define TEGRA264_CLK_MGBE0_MAC                         216
+#define TEGRA264_CLK_MGBE0_MACSEC                      217
+#define TEGRA264_CLK_MGBE0_APP                         218
+#define TEGRA264_CLK_MGBE1_UPHY1_PLL_XDIG              219
+#define TEGRA264_CLK_MGBE1_TX_PCS                      220
+#define TEGRA264_CLK_MGBE1_MAC                         221
+#define TEGRA264_CLK_MGBE1_MACSEC                      222
+#define TEGRA264_CLK_MGBE1_APP                         223
+#define TEGRA264_CLK_MGBE2_UPHY1_PLL_XDIG              224
+#define TEGRA264_CLK_MGBE2_TX_PCS                      225
+#define TEGRA264_CLK_MGBE2_MAC                         226
+#define TEGRA264_CLK_MGBE2_MACSEC                      227
+#define TEGRA264_CLK_MGBE2_APP                         228
+#define TEGRA264_CLK_MGBE3_UPHY1_PLL_XDIG              229
+#define TEGRA264_CLK_MGBE3_TX_PCS                      230
+#define TEGRA264_CLK_MGBE3_MAC                         231
+#define TEGRA264_CLK_MGBE3_MACSEC                      232
+#define TEGRA264_CLK_MGBE3_APP                         233
+#define TEGRA264_CLK_PLLREFUFS                         234
+#define TEGRA264_CLK_PLLREFUFS_CLKOUT624               235
+#define TEGRA264_CLK_PLLREFUFS_REFCLKOUT               236
+#define TEGRA264_CLK_PLLREFUFS_UFSDEV_REFCLKOUT                237
+#define TEGRA264_CLK_UFSHC_CG_SYS                      238
+#define TEGRA264_CLK_MPHY_L0_RX_LS_BIT_DIV             239
+#define TEGRA264_CLK_MPHY_L0_RX_LS_BIT                 240
+#define TEGRA264_CLK_MPHY_L0_RX_LS_SYMB_DIV            241
+#define TEGRA264_CLK_MPHY_L0_RX_HS_SYMB_DIV            242
+#define TEGRA264_CLK_MPHY_L0_RX_SYMB                   243
+#define TEGRA264_CLK_MPHY_L0_UPHY_TX_FIFO              244
+#define TEGRA264_CLK_MPHY_L0_TX_LS_3XBIT_DIV           245
+#define TEGRA264_CLK_MPHY_L0_TX_LS_SYMB_DIV            246
+#define TEGRA264_CLK_UPHY0_PLL4_XDIG                   247
+#define TEGRA264_CLK_MPHY_L0_TX_HS_SYMB_DIV            248
+#define TEGRA264_CLK_MPHY_L0_TX_SYMB                   249
+#define TEGRA264_CLK_MPHY_L0_TX_LS_3XBIT               250
+#define TEGRA264_CLK_MPHY_L0_RX_ANA                    251
+#define TEGRA264_CLK_MPHY_L1_RX_ANA                    252
+#define TEGRA264_CLK_MPHY_TX_1MHZ_REF                  253
+#define TEGRA264_CLK_MPHY_CORE_PLL_FIXED               254
+#define TEGRA264_CLK_MPHY_IOBIST                       255
+#define TEGRA264_CLK_UFSHC_CG_SYS_DIV                  256
+#define TEGRA264_CLK_XUSB1_CORE                                257
+#define TEGRA264_CLK_XUSB1_FALCON                      258
+#define TEGRA264_CLK_XUSB1_FS                          259
+#define TEGRA264_CLK_XUSB1_SS                          260
+#define TEGRA264_CLK_UPHY0_USB_P0_RX_CORE              261
+#define TEGRA264_CLK_UPHY0_USB_P1_RX_CORE              262
+#define TEGRA264_CLK_UPHY0_USB_P2_RX_CORE              263
+#define TEGRA264_CLK_UPHY0_USB_P3_RX_CORE              264
+#define TEGRA264_CLK_XUSB1_CLK480M_NVWRAP_CORE         265
+#define TEGRA264_CLK_XUSB1_CORE_HOST                   266
+#define TEGRA264_CLK_XUSB1_CORE_DEV                    267
+#define TEGRA264_CLK_XUSB1_CORE_SUPERSPEED             268
+#define TEGRA264_CLK_XUSB1_FALCON_HOST                 269
+#define TEGRA264_CLK_XUSB1_FALCON_SUPERSPEED           270
+#define TEGRA264_CLK_XUSB1_FS_HOST                     271
+#define TEGRA264_CLK_XUSB1_FS_DEV                      272
+#define TEGRA264_CLK_XUSB1_HS_HSICP                    273
+#define TEGRA264_CLK_XUSB1_SS_DEV                      274
+#define TEGRA264_CLK_XUSB1_SS_SUPERSPEED               275
+#define TEGRA264_CLK_AON_TOUCH                         276
+#define TEGRA264_CLK_AUD_MCLK                          277
+#define TEGRA264_CLK_EXTPERIPH1                                278
+#define TEGRA264_CLK_EXTPERIPH2                                279
+#define TEGRA264_CLK_EXTPERIPH3                                280
+#define TEGRA264_CLK_EXTPERIPH4                                281
+#define TEGRA264_CLK_JTAG_REG_UNGATED                  282
+#define TEGRA264_CLK_IST_BUS                           283
+#define TEGRA264_CLK_IST_BUS_RIST_MCC                  284
+#define TEGRA264_CLK_MATHS_SEC_RIST                    285
+#define TEGRA264_CLK_NAFLL_IST                         286
+#define TEGRA264_CLK_RIST_ROOT                         287
+#define TEGRA264_CLK_IST_CONTROLLER_RIST               288
+#define TEGRA264_CLK_MSS_ENCRYPT                       289
+#define TEGRA264_CLK_EMC                               290
+#define TEGRA264_CLK_SPPLL0_CLKOUT100                  291
+#define TEGRA264_CLK_SPPLL0_CLKOUT270                  292
+#define TEGRA264_CLK_SPPLL1_CLKOUT100                  293
+#define TEGRA264_CLK_SPPLL1_CLKOUT270                  294
+#define TEGRA264_CLK_DP_LINKA_REF                      295
+#define TEGRA264_CLK_DP_LINKB_REF                      296
+#define TEGRA264_CLK_DP_LINKC_REF                      297
+#define TEGRA264_CLK_DP_LINKD_REF                      298
+#define TEGRA264_CLK_PLLNVCSI                          299
+#define TEGRA264_CLK_PLLBPMPCAM                                300
+#define TEGRA264_CLK_UTMI_PLL1                         301
+#define TEGRA264_CLK_UTMI_PLL1_CLKOUT48                        302
+#define TEGRA264_CLK_UTMI_PLL1_CLKOUT60                        303
+#define TEGRA264_CLK_UTMI_PLL1_CLKOUT480               304
+#define TEGRA264_CLK_NAFLL_ISP                         305
+#define TEGRA264_CLK_NAFLL_RCE                         306
+#define TEGRA264_CLK_NAFLL_RCE1                                307
+#define TEGRA264_CLK_NAFLL_SE                          308
+#define TEGRA264_CLK_NAFLL_VI                          309
+#define TEGRA264_CLK_NAFLL_VIC                         310
+#define TEGRA264_CLK_NAFLL_DCE                         311
+#define TEGRA264_CLK_NAFLL_TSEC                                312
+#define TEGRA264_CLK_NAFLL_CPAIR0                      313
+#define TEGRA264_CLK_NAFLL_CPAIR1                      314
+#define TEGRA264_CLK_NAFLL_CPAIR2                      315
+#define TEGRA264_CLK_NAFLL_CPAIR3                      316
+#define TEGRA264_CLK_NAFLL_CPAIR4                      317
+#define TEGRA264_CLK_NAFLL_CPAIR5                      318
+#define TEGRA264_CLK_NAFLL_CPAIR6                      319
+#define TEGRA264_CLK_NAFLL_GPU_SYS                     320
+#define TEGRA264_CLK_NAFLL_GPU_NVD                     321
+#define TEGRA264_CLK_NAFLL_GPU_UPROC                   322
+#define TEGRA264_CLK_NAFLL_GPU_GPC0                    323
+#define TEGRA264_CLK_NAFLL_GPU_GPC1                    324
+#define TEGRA264_CLK_NAFLL_GPU_GPC2                    325
+#define TEGRA264_CLK_SOR_LINKA_INPUT                   326
+#define TEGRA264_CLK_SOR_LINKB_INPUT                   327
+#define TEGRA264_CLK_SOR_LINKC_INPUT                   328
+#define TEGRA264_CLK_SOR_LINKD_INPUT                   329
+#define TEGRA264_CLK_SOR_LINKA_AFIFO                   330
+#define TEGRA264_CLK_SOR_LINKB_AFIFO                   331
+#define TEGRA264_CLK_SOR_LINKC_AFIFO                   332
+#define TEGRA264_CLK_SOR_LINKD_AFIFO                   333
+#define TEGRA264_CLK_I2S1_PAD_M                                334
+#define TEGRA264_CLK_I2S2_PAD_M                                335
+#define TEGRA264_CLK_I2S3_PAD_M                                336
+#define TEGRA264_CLK_I2S4_PAD_M                                337
+#define TEGRA264_CLK_I2S5_PAD_M                                338
+#define TEGRA264_CLK_I2S6_PAD_M                                339
+#define TEGRA264_CLK_I2S7_PAD_M                                340
+#define TEGRA264_CLK_I2S8_PAD_M                                341
+#define TEGRA264_CLK_I2S9_PAD_M                                342
+#define TEGRA264_CLK_BPMP_NIC                          343
+#define TEGRA264_CLK_CLK1M                             344
+#define TEGRA264_CLK_RDET                              345
+#define TEGRA264_CLK_ADC_SOC_REF                       346
+#define TEGRA264_CLK_UPHY0_PLL0_TXREF                  347
+#define TEGRA264_CLK_EQOS_TX                           348
+#define TEGRA264_CLK_EQOS_TX_M                         349
+#define TEGRA264_CLK_EQOS_RX_PCS_IN                    350
+#define TEGRA264_CLK_EQOS_RX_PCS_M                     351
+#define TEGRA264_CLK_EQOS_RX_IN                                352
+#define TEGRA264_CLK_EQOS_RX                           353
+#define TEGRA264_CLK_EQOS_RX_M                         354
+#define TEGRA264_CLK_MGBE0_UPHY1_PLL_TXREF             355
+#define TEGRA264_CLK_MGBE0_TX                          356
+#define TEGRA264_CLK_MGBE0_TX_M                                357
+#define TEGRA264_CLK_MGBE0_RX_PCS_IN                   358
+#define TEGRA264_CLK_MGBE0_RX_PCS_M                    359
+#define TEGRA264_CLK_MGBE0_RX_IN                       360
+#define TEGRA264_CLK_MGBE0_RX_M                                361
+#define TEGRA264_CLK_MGBE1_UPHY1_PLL_TXREF             362
+#define TEGRA264_CLK_MGBE1_TX                          363
+#define TEGRA264_CLK_MGBE1_TX_M                                364
+#define TEGRA264_CLK_MGBE1_RX_PCS_IN                   365
+#define TEGRA264_CLK_MGBE1_RX_PCS_M                    366
+#define TEGRA264_CLK_MGBE1_RX_IN                       367
+#define TEGRA264_CLK_MGBE1_RX_M                                368
+#define TEGRA264_CLK_MGBE2_UPHY1_PLL_TXREF             369
+#define TEGRA264_CLK_MGBE2_TX                          370
+#define TEGRA264_CLK_MGBE2_TX_M                                371
+#define TEGRA264_CLK_MGBE2_RX_PCS_IN                   372
+#define TEGRA264_CLK_MGBE2_RX_PCS_M                    373
+#define TEGRA264_CLK_MGBE2_RX_IN                       374
+#define TEGRA264_CLK_MGBE2_RX_M                                375
+#define TEGRA264_CLK_MGBE3_UPHY1_PLL_TXREF             376
+#define TEGRA264_CLK_MGBE3_TX                          377
+#define TEGRA264_CLK_MGBE3_TX_M                                378
+#define TEGRA264_CLK_MGBE3_RX_PCS_IN                   379
+#define TEGRA264_CLK_MGBE3_RX_PCS_M                    380
+#define TEGRA264_CLK_MGBE3_RX_IN                       381
+#define TEGRA264_CLK_MGBE3_RX_M                                382
+#define TEGRA264_CLK_UPHY0_USB_P0_TX_CORE              383
+#define TEGRA264_CLK_UPHY0_USB_P1_TX_CORE              384
+#define TEGRA264_CLK_UPHY0_USB_P2_TX_CORE              385
+#define TEGRA264_CLK_UPHY0_USB_P3_TX_CORE              386
+#define TEGRA264_CLK_UPHY0_USB_P0_TX                   387
+#define TEGRA264_CLK_UPHY0_USB_P1_TX                   388
+#define TEGRA264_CLK_UPHY0_USB_P2_TX                   389
+#define TEGRA264_CLK_UPHY0_USB_P3_TX                   390
+#define TEGRA264_CLK_UPHY0_USB_P0_RX_IN                        391
+#define TEGRA264_CLK_UPHY0_USB_P1_RX_IN                        392
+#define TEGRA264_CLK_UPHY0_USB_P2_RX_IN                        393
+#define TEGRA264_CLK_UPHY0_USB_P3_RX_IN                        394
+#define TEGRA264_CLK_UPHY0_USB_P0_RX_M                 395
+#define TEGRA264_CLK_UPHY0_USB_P1_RX_M                 396
+#define TEGRA264_CLK_UPHY0_USB_P2_RX_M                 397
+#define TEGRA264_CLK_UPHY0_USB_P3_RX_M                 398
+#define TEGRA264_CLK_UPHY0_LANE0_TX_M                  399
+#define TEGRA264_CLK_PCIE_C1_XCLK_NOBG_M               400
+#define TEGRA264_CLK_PCIE_C2_XCLK_NOBG_M               401
+#define TEGRA264_CLK_PCIE_C3_XCLK_NOBG_M               402
+#define TEGRA264_CLK_PCIE_C4_XCLK_NOBG_M               403
+#define TEGRA264_CLK_PCIE_C5_XCLK_NOBG_M               404
+#define TEGRA264_CLK_PCIE_C1_L0_RX_M                   405
+#define TEGRA264_CLK_PCIE_C1_L1_RX_M                   406
+#define TEGRA264_CLK_PCIE_C1_L2_RX_M                   407
+#define TEGRA264_CLK_PCIE_C1_L3_RX_M                   408
+#define TEGRA264_CLK_PCIE_C2_L0_RX_M                   409
+#define TEGRA264_CLK_PCIE_C2_L1_RX_M                   410
+#define TEGRA264_CLK_PCIE_C2_L2_RX_M                   411
+#define TEGRA264_CLK_PCIE_C2_L3_RX_M                   412
+#define TEGRA264_CLK_PCIE_C3_L0_RX_M                   413
+#define TEGRA264_CLK_PCIE_C3_L1_RX_M                   414
+#define TEGRA264_CLK_PCIE_C4_L0_RX_M                   415
+#define TEGRA264_CLK_PCIE_C4_L1_RX_M                   416
+#define TEGRA264_CLK_PCIE_C4_L2_RX_M                   417
+#define TEGRA264_CLK_PCIE_C4_L3_RX_M                   418
+#define TEGRA264_CLK_PCIE_C4_L4_RX_M                   419
+#define TEGRA264_CLK_PCIE_C4_L5_RX_M                   420
+#define TEGRA264_CLK_PCIE_C4_L6_RX_M                   421
+#define TEGRA264_CLK_PCIE_C4_L7_RX_M                   422
+#define TEGRA264_CLK_PCIE_C5_L0_RX_M                   423
+#define TEGRA264_CLK_PCIE_C5_L1_RX_M                   424
+#define TEGRA264_CLK_PCIE_C5_L2_RX_M                   425
+#define TEGRA264_CLK_PCIE_C5_L3_RX_M                   426
+#define TEGRA264_CLK_MPHY_L0_RX_PWM_BIT_M              427
+#define TEGRA264_CLK_MPHY_L1_RX_PWM_BIT_M              428
+#define TEGRA264_CLK_DBB_UPHY0                         429
+#define TEGRA264_CLK_UPHY0_UXL_CORE                    430
+#define TEGRA264_CLK_ISC_CPU_ROOT                      431
+#define TEGRA264_CLK_ISC_NIC                           432
+#define TEGRA264_CLK_CTC_TXCLK0_M                      433
+#define TEGRA264_CLK_CTC_TXCLK1_M                      434
+#define TEGRA264_CLK_CTC_RXCLK0_M                      435
+#define TEGRA264_CLK_CTC_RXCLK1_M                      436
+#define TEGRA264_CLK_PLLREFGP_OUT                      437
+#define TEGRA264_CLK_PLLREFGP_OUT1                     438
+#define TEGRA264_CLK_GPU_SYS                           439
+#define TEGRA264_CLK_GPU_NVD                           440
+#define TEGRA264_CLK_GPU_UPROC                         441
+#define TEGRA264_CLK_GPU_GPC0                          442
+#define TEGRA264_CLK_GPU_GPC1                          443
+#define TEGRA264_CLK_GPU_GPC2                          444
+#define TEGRA264_CLK_PLLX                              445
+#define TEGRA264_CLK_APE_SOUNDWIRE_MSRC0               446
+#define TEGRA264_CLK_APE_SOUNDWIRE_DATA_EN_SHAPER      447
+#define TEGRA264_CLK_AO_SOUNDWIRE_MSRC0                        448
+#define TEGRA264_CLK_AO_SOUNDWIRE_DATA_EN_SHAPER       449
+#define TEGRA264_CLK_MGBE0_TX_SER                      459
+#define TEGRA264_CLK_MGBE1_TX_SER                      460
+#define TEGRA264_CLK_MGBE2_TX_SER                      461
+#define TEGRA264_CLK_MGBE3_TX_SER                      462
+#define TEGRA264_CLK_MGBE0_RX_SER                      463
+#define TEGRA264_CLK_MGBE1_RX_SER                      464
+#define TEGRA264_CLK_MGBE2_RX_SER                      465
+#define TEGRA264_CLK_MGBE3_RX_SER                      466
+#define TEGRA264_CLK_DPAUX                             467
+
+#endif /* DT_BINDINGS_CLOCK_NVIDIA_TEGRA264_H */
diff --git a/include/dt-bindings/clock/nxp,imx94-clock.h b/include/dt-bindings/clock/nxp,imx94-clock.h
new file mode 100644 (file)
index 0000000..c4ba133
--- /dev/null
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright 2025 NXP
+ */
+
+#ifndef __DT_BINDINGS_CLOCK_IMX94_H
+#define __DT_BINDINGS_CLOCK_IMX94_H
+
+#define IMX94_CLK_DISPMIX_CLK_SEL      0
+
+#define IMX94_CLK_DISPMIX_LVDS_CLK_GATE        0
+
+#endif /* __DT_BINDINGS_CLOCK_IMX94_H */
index e364006aa6eab8c1c9f8029a67087d09a73cee51..b9d8438a15ffbb73efe1a6e730ac7a532d2437ee 100644 (file)
 #define GCC_UFS_MEM_CLKREF_EN                                  239
 #define GCC_UFS_CARD_CLKREF_EN                                 240
 #define GPLL9                                                  241
+#define GCC_CAMERA_AHB_CLK                                     242
+#define GCC_CAMERA_XO_CLK                                      243
+#define GCC_CPUSS_DVM_BUS_CLK                                  244
+#define GCC_CPUSS_GNOC_CLK                                     245
+#define GCC_DISP_AHB_CLK                                       246
+#define GCC_DISP_XO_CLK                                                247
+#define GCC_GPU_CFG_AHB_CLK                                    248
+#define GCC_NPU_CFG_AHB_CLK                                    249
+#define GCC_VIDEO_AHB_CLK                                      250
+#define GCC_VIDEO_XO_CLK                                       251
 
 #define GCC_EMAC_BCR                                           0
 #define GCC_GPU_BCR                                            1
diff --git a/include/dt-bindings/clock/qcom,ipq5018-cmn-pll.h b/include/dt-bindings/clock/qcom,ipq5018-cmn-pll.h
new file mode 100644 (file)
index 0000000..586d1c9
--- /dev/null
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_IPQ5018_CMN_PLL_H
+#define _DT_BINDINGS_CLK_QCOM_IPQ5018_CMN_PLL_H
+
+/* CMN PLL core clock. */
+#define IPQ5018_CMN_PLL_CLK                    0
+
+/* The output clocks from CMN PLL of IPQ5018. */
+#define IPQ5018_XO_24MHZ_CLK                   1
+#define IPQ5018_SLEEP_32KHZ_CLK                        2
+#define IPQ5018_ETH_50MHZ_CLK                  3
+#endif
diff --git a/include/dt-bindings/clock/qcom,ipq5424-cmn-pll.h b/include/dt-bindings/clock/qcom,ipq5424-cmn-pll.h
new file mode 100644 (file)
index 0000000..f643c26
--- /dev/null
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_IPQ5424_CMN_PLL_H
+#define _DT_BINDINGS_CLK_QCOM_IPQ5424_CMN_PLL_H
+
+/* CMN PLL core clock. */
+#define IPQ5424_CMN_PLL_CLK                    0
+
+/* The output clocks from CMN PLL of IPQ5424. */
+#define IPQ5424_XO_24MHZ_CLK                   1
+#define IPQ5424_SLEEP_32KHZ_CLK                        2
+#define IPQ5424_PCS_31P25MHZ_CLK               3
+#define IPQ5424_NSS_300MHZ_CLK                 4
+#define IPQ5424_PPE_375MHZ_CLK                 5
+#define IPQ5424_ETH0_50MHZ_CLK                 6
+#define IPQ5424_ETH1_50MHZ_CLK                 7
+#define IPQ5424_ETH2_50MHZ_CLK                 8
+#define IPQ5424_ETH_25MHZ_CLK                  9
+#endif
diff --git a/include/dt-bindings/clock/qcom,milos-camcc.h b/include/dt-bindings/clock/qcom,milos-camcc.h
new file mode 100644 (file)
index 0000000..21925dc
--- /dev/null
@@ -0,0 +1,131 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025, Luca Weiss <luca.weiss@fairphone.com>
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_CAM_CC_MILOS_H
+#define _DT_BINDINGS_CLK_QCOM_CAM_CC_MILOS_H
+
+/* CAM_CC clocks */
+#define CAM_CC_PLL0                                            0
+#define CAM_CC_PLL0_OUT_EVEN                                   1
+#define CAM_CC_PLL0_OUT_ODD                                    2
+#define CAM_CC_PLL1                                            3
+#define CAM_CC_PLL1_OUT_EVEN                                   4
+#define CAM_CC_PLL2                                            5
+#define CAM_CC_PLL2_OUT_EVEN                                   6
+#define CAM_CC_PLL3                                            7
+#define CAM_CC_PLL3_OUT_EVEN                                   8
+#define CAM_CC_PLL4                                            9
+#define CAM_CC_PLL4_OUT_EVEN                                   10
+#define CAM_CC_PLL5                                            11
+#define CAM_CC_PLL5_OUT_EVEN                                   12
+#define CAM_CC_PLL6                                            13
+#define CAM_CC_PLL6_OUT_EVEN                                   14
+#define CAM_CC_BPS_AHB_CLK                                     15
+#define CAM_CC_BPS_AREG_CLK                                    16
+#define CAM_CC_BPS_CLK                                         17
+#define CAM_CC_BPS_CLK_SRC                                     18
+#define CAM_CC_CAMNOC_ATB_CLK                                  19
+#define CAM_CC_CAMNOC_AXI_CLK_SRC                              20
+#define CAM_CC_CAMNOC_AXI_HF_CLK                               21
+#define CAM_CC_CAMNOC_AXI_SF_CLK                               22
+#define CAM_CC_CAMNOC_NRT_AXI_CLK                              23
+#define CAM_CC_CAMNOC_RT_AXI_CLK                               24
+#define CAM_CC_CCI_0_CLK                                       25
+#define CAM_CC_CCI_0_CLK_SRC                                   26
+#define CAM_CC_CCI_1_CLK                                       27
+#define CAM_CC_CCI_1_CLK_SRC                                   28
+#define CAM_CC_CORE_AHB_CLK                                    29
+#define CAM_CC_CPAS_AHB_CLK                                    30
+#define CAM_CC_CPHY_RX_CLK_SRC                                 31
+#define CAM_CC_CRE_AHB_CLK                                     32
+#define CAM_CC_CRE_CLK                                         33
+#define CAM_CC_CRE_CLK_SRC                                     34
+#define CAM_CC_CSI0PHYTIMER_CLK                                        35
+#define CAM_CC_CSI0PHYTIMER_CLK_SRC                            36
+#define CAM_CC_CSI1PHYTIMER_CLK                                        37
+#define CAM_CC_CSI1PHYTIMER_CLK_SRC                            38
+#define CAM_CC_CSI2PHYTIMER_CLK                                        39
+#define CAM_CC_CSI2PHYTIMER_CLK_SRC                            40
+#define CAM_CC_CSI3PHYTIMER_CLK                                        41
+#define CAM_CC_CSI3PHYTIMER_CLK_SRC                            42
+#define CAM_CC_CSIPHY0_CLK                                     43
+#define CAM_CC_CSIPHY1_CLK                                     44
+#define CAM_CC_CSIPHY2_CLK                                     45
+#define CAM_CC_CSIPHY3_CLK                                     46
+#define CAM_CC_FAST_AHB_CLK_SRC                                        47
+#define CAM_CC_GDSC_CLK                                                48
+#define CAM_CC_ICP_ATB_CLK                                     49
+#define CAM_CC_ICP_CLK                                         50
+#define CAM_CC_ICP_CLK_SRC                                     51
+#define CAM_CC_ICP_CTI_CLK                                     52
+#define CAM_CC_ICP_TS_CLK                                      53
+#define CAM_CC_MCLK0_CLK                                       54
+#define CAM_CC_MCLK0_CLK_SRC                                   55
+#define CAM_CC_MCLK1_CLK                                       56
+#define CAM_CC_MCLK1_CLK_SRC                                   57
+#define CAM_CC_MCLK2_CLK                                       58
+#define CAM_CC_MCLK2_CLK_SRC                                   59
+#define CAM_CC_MCLK3_CLK                                       60
+#define CAM_CC_MCLK3_CLK_SRC                                   61
+#define CAM_CC_MCLK4_CLK                                       62
+#define CAM_CC_MCLK4_CLK_SRC                                   63
+#define CAM_CC_OPE_0_AHB_CLK                                   64
+#define CAM_CC_OPE_0_AREG_CLK                                  65
+#define CAM_CC_OPE_0_CLK                                       66
+#define CAM_CC_OPE_0_CLK_SRC                                   67
+#define CAM_CC_SLEEP_CLK                                       68
+#define CAM_CC_SLEEP_CLK_SRC                                   69
+#define CAM_CC_SLOW_AHB_CLK_SRC                                        70
+#define CAM_CC_SOC_AHB_CLK                                     71
+#define CAM_CC_SYS_TMR_CLK                                     72
+#define CAM_CC_TFE_0_AHB_CLK                                   73
+#define CAM_CC_TFE_0_CLK                                       74
+#define CAM_CC_TFE_0_CLK_SRC                                   75
+#define CAM_CC_TFE_0_CPHY_RX_CLK                               76
+#define CAM_CC_TFE_0_CSID_CLK                                  77
+#define CAM_CC_TFE_0_CSID_CLK_SRC                              78
+#define CAM_CC_TFE_1_AHB_CLK                                   79
+#define CAM_CC_TFE_1_CLK                                       80
+#define CAM_CC_TFE_1_CLK_SRC                                   81
+#define CAM_CC_TFE_1_CPHY_RX_CLK                               82
+#define CAM_CC_TFE_1_CSID_CLK                                  83
+#define CAM_CC_TFE_1_CSID_CLK_SRC                              84
+#define CAM_CC_TFE_2_AHB_CLK                                   85
+#define CAM_CC_TFE_2_CLK                                       86
+#define CAM_CC_TFE_2_CLK_SRC                                   87
+#define CAM_CC_TFE_2_CPHY_RX_CLK                               88
+#define CAM_CC_TFE_2_CSID_CLK                                  89
+#define CAM_CC_TFE_2_CSID_CLK_SRC                              90
+#define CAM_CC_TOP_SHIFT_CLK                                   91
+#define CAM_CC_XO_CLK_SRC                                      92
+
+/* CAM_CC resets */
+#define CAM_CC_BPS_BCR                                         0
+#define CAM_CC_CAMNOC_BCR                                      1
+#define CAM_CC_CAMSS_TOP_BCR                                   2
+#define CAM_CC_CCI_0_BCR                                       3
+#define CAM_CC_CCI_1_BCR                                       4
+#define CAM_CC_CPAS_BCR                                                5
+#define CAM_CC_CRE_BCR                                         6
+#define CAM_CC_CSI0PHY_BCR                                     7
+#define CAM_CC_CSI1PHY_BCR                                     8
+#define CAM_CC_CSI2PHY_BCR                                     9
+#define CAM_CC_CSI3PHY_BCR                                     10
+#define CAM_CC_ICP_BCR                                         11
+#define CAM_CC_MCLK0_BCR                                       12
+#define CAM_CC_MCLK1_BCR                                       13
+#define CAM_CC_MCLK2_BCR                                       14
+#define CAM_CC_MCLK3_BCR                                       15
+#define CAM_CC_MCLK4_BCR                                       16
+#define CAM_CC_OPE_0_BCR                                       17
+#define CAM_CC_TFE_0_BCR                                       18
+#define CAM_CC_TFE_1_BCR                                       19
+#define CAM_CC_TFE_2_BCR                                       20
+
+/* CAM_CC power domains */
+#define CAM_CC_CAMSS_TOP_GDSC                                  0
+
+#endif
diff --git a/include/dt-bindings/clock/qcom,milos-dispcc.h b/include/dt-bindings/clock/qcom,milos-dispcc.h
new file mode 100644 (file)
index 0000000..c70f23f
--- /dev/null
@@ -0,0 +1,61 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025, Luca Weiss <luca.weiss@fairphone.com>
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_DISP_CC_MILOS_H
+#define _DT_BINDINGS_CLK_QCOM_DISP_CC_MILOS_H
+
+/* DISP_CC clocks */
+#define DISP_CC_PLL0                                           0
+#define DISP_CC_MDSS_ACCU_CLK                                  1
+#define DISP_CC_MDSS_AHB1_CLK                                  2
+#define DISP_CC_MDSS_AHB_CLK                                   3
+#define DISP_CC_MDSS_AHB_CLK_SRC                               4
+#define DISP_CC_MDSS_BYTE0_CLK                                 5
+#define DISP_CC_MDSS_BYTE0_CLK_SRC                             6
+#define DISP_CC_MDSS_BYTE0_DIV_CLK_SRC                         7
+#define DISP_CC_MDSS_BYTE0_INTF_CLK                            8
+#define DISP_CC_MDSS_DPTX0_AUX_CLK                             9
+#define DISP_CC_MDSS_DPTX0_AUX_CLK_SRC                         10
+#define DISP_CC_MDSS_DPTX0_CRYPTO_CLK                          11
+#define DISP_CC_MDSS_DPTX0_LINK_CLK                            12
+#define DISP_CC_MDSS_DPTX0_LINK_CLK_SRC                                13
+#define DISP_CC_MDSS_DPTX0_LINK_DIV_CLK_SRC                    14
+#define DISP_CC_MDSS_DPTX0_LINK_INTF_CLK                       15
+#define DISP_CC_MDSS_DPTX0_PIXEL0_CLK                          16
+#define DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC                      17
+#define DISP_CC_MDSS_DPTX0_PIXEL1_CLK                          18
+#define DISP_CC_MDSS_DPTX0_PIXEL1_CLK_SRC                      19
+#define DISP_CC_MDSS_DPTX0_USB_ROUTER_LINK_INTF_CLK            20
+#define DISP_CC_MDSS_ESC0_CLK                                  21
+#define DISP_CC_MDSS_ESC0_CLK_SRC                              22
+#define DISP_CC_MDSS_MDP1_CLK                                  23
+#define DISP_CC_MDSS_MDP_CLK                                   24
+#define DISP_CC_MDSS_MDP_CLK_SRC                               25
+#define DISP_CC_MDSS_MDP_LUT1_CLK                              26
+#define DISP_CC_MDSS_MDP_LUT_CLK                               27
+#define DISP_CC_MDSS_NON_GDSC_AHB_CLK                          28
+#define DISP_CC_MDSS_PCLK0_CLK                                 29
+#define DISP_CC_MDSS_PCLK0_CLK_SRC                             30
+#define DISP_CC_MDSS_RSCC_AHB_CLK                              31
+#define DISP_CC_MDSS_RSCC_VSYNC_CLK                            32
+#define DISP_CC_MDSS_VSYNC1_CLK                                        33
+#define DISP_CC_MDSS_VSYNC_CLK                                 34
+#define DISP_CC_MDSS_VSYNC_CLK_SRC                             35
+#define DISP_CC_SLEEP_CLK                                      36
+#define DISP_CC_SLEEP_CLK_SRC                                  37
+#define DISP_CC_XO_CLK                                         38
+#define DISP_CC_XO_CLK_SRC                                     39
+
+/* DISP_CC resets */
+#define DISP_CC_MDSS_CORE_BCR                                  0
+#define DISP_CC_MDSS_CORE_INT2_BCR                             1
+#define DISP_CC_MDSS_RSCC_BCR                                  2
+
+/* DISP_CC power domains */
+#define DISP_CC_MDSS_CORE_GDSC                                 0
+#define DISP_CC_MDSS_CORE_INT2_GDSC                            1
+
+#endif
diff --git a/include/dt-bindings/clock/qcom,milos-gcc.h b/include/dt-bindings/clock/qcom,milos-gcc.h
new file mode 100644 (file)
index 0000000..a530ca3
--- /dev/null
@@ -0,0 +1,210 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025, Luca Weiss <luca.weiss@fairphone.com>
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_GCC_MILOS_H
+#define _DT_BINDINGS_CLK_QCOM_GCC_MILOS_H
+
+/* GCC clocks */
+#define GCC_GPLL0                                              0
+#define GCC_GPLL0_OUT_EVEN                                     1
+#define GCC_GPLL2                                              2
+#define GCC_GPLL4                                              3
+#define GCC_GPLL6                                              4
+#define GCC_GPLL7                                              5
+#define GCC_GPLL9                                              6
+#define GCC_AGGRE_NOC_PCIE_AXI_CLK                             7
+#define GCC_AGGRE_UFS_PHY_AXI_CLK                              8
+#define GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK                       9
+#define GCC_AGGRE_USB3_PRIM_AXI_CLK                            10
+#define GCC_BOOT_ROM_AHB_CLK                                   11
+#define GCC_CAMERA_AHB_CLK                                     12
+#define GCC_CAMERA_HF_AXI_CLK                                  13
+#define GCC_CAMERA_HF_XO_CLK                                   14
+#define GCC_CAMERA_SF_AXI_CLK                                  15
+#define GCC_CAMERA_SF_XO_CLK                                   16
+#define GCC_CFG_NOC_PCIE_ANOC_AHB_CLK                          17
+#define GCC_CFG_NOC_USB3_PRIM_AXI_CLK                          18
+#define GCC_CNOC_PCIE_SF_AXI_CLK                               19
+#define GCC_DDRSS_GPU_AXI_CLK                                  20
+#define GCC_DDRSS_PCIE_SF_QTB_CLK                              21
+#define GCC_DISP_AHB_CLK                                       22
+#define GCC_DISP_GPLL0_DIV_CLK_SRC                             23
+#define GCC_DISP_HF_AXI_CLK                                    24
+#define GCC_DISP_XO_CLK                                                25
+#define GCC_GP1_CLK                                            26
+#define GCC_GP1_CLK_SRC                                                27
+#define GCC_GP2_CLK                                            28
+#define GCC_GP2_CLK_SRC                                                29
+#define GCC_GP3_CLK                                            30
+#define GCC_GP3_CLK_SRC                                                31
+#define GCC_GPU_CFG_AHB_CLK                                    32
+#define GCC_GPU_GPLL0_CLK_SRC                                  33
+#define GCC_GPU_GPLL0_DIV_CLK_SRC                              34
+#define GCC_GPU_MEMNOC_GFX_CLK                                 35
+#define GCC_GPU_SNOC_DVM_GFX_CLK                               36
+#define GCC_PCIE_0_AUX_CLK                                     37
+#define GCC_PCIE_0_AUX_CLK_SRC                                 38
+#define GCC_PCIE_0_CFG_AHB_CLK                                 39
+#define GCC_PCIE_0_MSTR_AXI_CLK                                        40
+#define GCC_PCIE_0_PHY_RCHNG_CLK                               41
+#define GCC_PCIE_0_PHY_RCHNG_CLK_SRC                           42
+#define GCC_PCIE_0_PIPE_CLK                                    43
+#define GCC_PCIE_0_PIPE_CLK_SRC                                        44
+#define GCC_PCIE_0_PIPE_DIV2_CLK                               45
+#define GCC_PCIE_0_PIPE_DIV2_CLK_SRC                           46
+#define GCC_PCIE_0_SLV_AXI_CLK                                 47
+#define GCC_PCIE_0_SLV_Q2A_AXI_CLK                             48
+#define GCC_PCIE_1_AUX_CLK                                     49
+#define GCC_PCIE_1_AUX_CLK_SRC                                 50
+#define GCC_PCIE_1_CFG_AHB_CLK                                 51
+#define GCC_PCIE_1_MSTR_AXI_CLK                                        52
+#define GCC_PCIE_1_PHY_RCHNG_CLK                               53
+#define GCC_PCIE_1_PHY_RCHNG_CLK_SRC                           54
+#define GCC_PCIE_1_PIPE_CLK                                    55
+#define GCC_PCIE_1_PIPE_CLK_SRC                                        56
+#define GCC_PCIE_1_PIPE_DIV2_CLK                               57
+#define GCC_PCIE_1_PIPE_DIV2_CLK_SRC                           58
+#define GCC_PCIE_1_SLV_AXI_CLK                                 59
+#define GCC_PCIE_1_SLV_Q2A_AXI_CLK                             60
+#define GCC_PCIE_RSCC_CFG_AHB_CLK                              61
+#define GCC_PCIE_RSCC_XO_CLK                                   62
+#define GCC_PDM2_CLK                                           63
+#define GCC_PDM2_CLK_SRC                                       64
+#define GCC_PDM_AHB_CLK                                                65
+#define GCC_PDM_XO4_CLK                                                66
+#define GCC_QMIP_CAMERA_NRT_AHB_CLK                            67
+#define GCC_QMIP_CAMERA_RT_AHB_CLK                             68
+#define GCC_QMIP_DISP_AHB_CLK                                  69
+#define GCC_QMIP_GPU_AHB_CLK                                   70
+#define GCC_QMIP_PCIE_AHB_CLK                                  71
+#define GCC_QMIP_VIDEO_CV_CPU_AHB_CLK                          72
+#define GCC_QMIP_VIDEO_CVP_AHB_CLK                             73
+#define GCC_QMIP_VIDEO_V_CPU_AHB_CLK                           74
+#define GCC_QMIP_VIDEO_VCODEC_AHB_CLK                          75
+#define GCC_QUPV3_WRAP0_CORE_2X_CLK                            76
+#define GCC_QUPV3_WRAP0_CORE_CLK                               77
+#define GCC_QUPV3_WRAP0_QSPI_REF_CLK                           78
+#define GCC_QUPV3_WRAP0_QSPI_REF_CLK_SRC                       79
+#define GCC_QUPV3_WRAP0_S0_CLK                                 80
+#define GCC_QUPV3_WRAP0_S0_CLK_SRC                             81
+#define GCC_QUPV3_WRAP0_S1_CLK                                 82
+#define GCC_QUPV3_WRAP0_S1_CLK_SRC                             83
+#define GCC_QUPV3_WRAP0_S2_CLK                                 84
+#define GCC_QUPV3_WRAP0_S2_CLK_SRC                             85
+#define GCC_QUPV3_WRAP0_S3_CLK                                 86
+#define GCC_QUPV3_WRAP0_S3_CLK_SRC                             87
+#define GCC_QUPV3_WRAP0_S4_CLK                                 88
+#define GCC_QUPV3_WRAP0_S4_CLK_SRC                             89
+#define GCC_QUPV3_WRAP0_S5_CLK                                 90
+#define GCC_QUPV3_WRAP0_S5_CLK_SRC                             91
+#define GCC_QUPV3_WRAP0_S6_CLK                                 92
+#define GCC_QUPV3_WRAP0_S6_CLK_SRC                             93
+#define GCC_QUPV3_WRAP1_CORE_2X_CLK                            94
+#define GCC_QUPV3_WRAP1_CORE_CLK                               95
+#define GCC_QUPV3_WRAP1_QSPI_REF_CLK                           96
+#define GCC_QUPV3_WRAP1_QSPI_REF_CLK_SRC                       97
+#define GCC_QUPV3_WRAP1_S0_CLK                                 98
+#define GCC_QUPV3_WRAP1_S0_CLK_SRC                             99
+#define GCC_QUPV3_WRAP1_S1_CLK                                 100
+#define GCC_QUPV3_WRAP1_S1_CLK_SRC                             101
+#define GCC_QUPV3_WRAP1_S2_CLK                                 102
+#define GCC_QUPV3_WRAP1_S2_CLK_SRC                             103
+#define GCC_QUPV3_WRAP1_S3_CLK                                 104
+#define GCC_QUPV3_WRAP1_S3_CLK_SRC                             105
+#define GCC_QUPV3_WRAP1_S4_CLK                                 106
+#define GCC_QUPV3_WRAP1_S4_CLK_SRC                             107
+#define GCC_QUPV3_WRAP1_S5_CLK                                 108
+#define GCC_QUPV3_WRAP1_S5_CLK_SRC                             109
+#define GCC_QUPV3_WRAP1_S6_CLK                                 110
+#define GCC_QUPV3_WRAP1_S6_CLK_SRC                             111
+#define GCC_QUPV3_WRAP_0_M_AHB_CLK                             112
+#define GCC_QUPV3_WRAP_0_S_AHB_CLK                             113
+#define GCC_QUPV3_WRAP_1_M_AHB_CLK                             114
+#define GCC_QUPV3_WRAP_1_S_AHB_CLK                             115
+#define GCC_SDCC1_AHB_CLK                                      116
+#define GCC_SDCC1_APPS_CLK                                     117
+#define GCC_SDCC1_APPS_CLK_SRC                                 118
+#define GCC_SDCC1_ICE_CORE_CLK                                 119
+#define GCC_SDCC1_ICE_CORE_CLK_SRC                             120
+#define GCC_SDCC2_AHB_CLK                                      121
+#define GCC_SDCC2_APPS_CLK                                     122
+#define GCC_SDCC2_APPS_CLK_SRC                                 123
+#define GCC_UFS_PHY_AHB_CLK                                    124
+#define GCC_UFS_PHY_AXI_CLK                                    125
+#define GCC_UFS_PHY_AXI_CLK_SRC                                        126
+#define GCC_UFS_PHY_AXI_HW_CTL_CLK                             127
+#define GCC_UFS_PHY_ICE_CORE_CLK                               128
+#define GCC_UFS_PHY_ICE_CORE_CLK_SRC                           129
+#define GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK                                130
+#define GCC_UFS_PHY_PHY_AUX_CLK                                        131
+#define GCC_UFS_PHY_PHY_AUX_CLK_SRC                            132
+#define GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK                         133
+#define GCC_UFS_PHY_RX_SYMBOL_0_CLK                            134
+#define GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC                                135
+#define GCC_UFS_PHY_RX_SYMBOL_1_CLK                            136
+#define GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC                                137
+#define GCC_UFS_PHY_TX_SYMBOL_0_CLK                            138
+#define GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC                                139
+#define GCC_UFS_PHY_UNIPRO_CORE_CLK                            140
+#define GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC                                141
+#define GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK                     142
+#define GCC_USB30_PRIM_ATB_CLK                                 143
+#define GCC_USB30_PRIM_MASTER_CLK                              144
+#define GCC_USB30_PRIM_MASTER_CLK_SRC                          145
+#define GCC_USB30_PRIM_MOCK_UTMI_CLK                           146
+#define GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC                       147
+#define GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC               148
+#define GCC_USB30_PRIM_SLEEP_CLK                               149
+#define GCC_USB3_PRIM_PHY_AUX_CLK                              150
+#define GCC_USB3_PRIM_PHY_AUX_CLK_SRC                          151
+#define GCC_USB3_PRIM_PHY_COM_AUX_CLK                          152
+#define GCC_USB3_PRIM_PHY_PIPE_CLK                             153
+#define GCC_USB3_PRIM_PHY_PIPE_CLK_SRC                         154
+#define GCC_VIDEO_AHB_CLK                                      155
+#define GCC_VIDEO_AXI0_CLK                                     156
+#define GCC_VIDEO_XO_CLK                                       157
+
+/* GCC resets */
+#define GCC_CAMERA_BCR                                         0
+#define GCC_DISPLAY_BCR                                                1
+#define GCC_GPU_BCR                                            2
+#define GCC_PCIE_0_BCR                                         3
+#define GCC_PCIE_0_LINK_DOWN_BCR                               4
+#define GCC_PCIE_0_NOCSR_COM_PHY_BCR                           5
+#define GCC_PCIE_0_PHY_BCR                                     6
+#define GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR                       7
+#define GCC_PCIE_1_BCR                                         8
+#define GCC_PCIE_1_LINK_DOWN_BCR                               9
+#define GCC_PCIE_1_NOCSR_COM_PHY_BCR                           10
+#define GCC_PCIE_1_PHY_BCR                                     11
+#define GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR                       12
+#define GCC_PCIE_RSCC_BCR                                      13
+#define GCC_PDM_BCR                                            14
+#define GCC_QUPV3_WRAPPER_0_BCR                                        15
+#define GCC_QUPV3_WRAPPER_1_BCR                                        16
+#define GCC_QUSB2PHY_PRIM_BCR                                  17
+#define GCC_QUSB2PHY_SEC_BCR                                   18
+#define GCC_SDCC1_BCR                                          19
+#define GCC_SDCC2_BCR                                          20
+#define GCC_UFS_PHY_BCR                                                21
+#define GCC_USB30_PRIM_BCR                                     22
+#define GCC_USB3_DP_PHY_PRIM_BCR                               23
+#define GCC_USB3_PHY_PRIM_BCR                                  24
+#define GCC_USB3PHY_PHY_PRIM_BCR                               25
+#define GCC_VIDEO_AXI0_CLK_ARES                                        26
+#define GCC_VIDEO_BCR                                          27
+
+/* GCC power domains */
+#define PCIE_0_GDSC                                            0
+#define PCIE_0_PHY_GDSC                                                1
+#define PCIE_1_GDSC                                            2
+#define PCIE_1_PHY_GDSC                                                3
+#define UFS_PHY_GDSC                                           4
+#define UFS_MEM_PHY_GDSC                                       5
+#define USB30_PRIM_GDSC                                                6
+#define USB3_PHY_GDSC                                          7
+
+#endif
diff --git a/include/dt-bindings/clock/qcom,milos-gpucc.h b/include/dt-bindings/clock/qcom,milos-gpucc.h
new file mode 100644 (file)
index 0000000..6ff1925
--- /dev/null
@@ -0,0 +1,56 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025, Luca Weiss <luca.weiss@fairphone.com>
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_GPU_CC_MILOS_H
+#define _DT_BINDINGS_CLK_QCOM_GPU_CC_MILOS_H
+
+/* GPU_CC clocks */
+#define GPU_CC_PLL0                                            0
+#define GPU_CC_PLL0_OUT_EVEN                                   1
+#define GPU_CC_AHB_CLK                                         2
+#define GPU_CC_CB_CLK                                          3
+#define GPU_CC_CX_ACCU_SHIFT_CLK                               4
+#define GPU_CC_CX_FF_CLK                                       5
+#define GPU_CC_CX_GMU_CLK                                      6
+#define GPU_CC_CXO_AON_CLK                                     7
+#define GPU_CC_CXO_CLK                                         8
+#define GPU_CC_DEMET_CLK                                       9
+#define GPU_CC_DEMET_DIV_CLK_SRC                               10
+#define GPU_CC_DPM_CLK                                         11
+#define GPU_CC_FF_CLK_SRC                                      12
+#define GPU_CC_FREQ_MEASURE_CLK                                        13
+#define GPU_CC_GMU_CLK_SRC                                     14
+#define GPU_CC_GX_ACCU_SHIFT_CLK                               15
+#define GPU_CC_GX_ACD_AHB_FF_CLK                               16
+#define GPU_CC_GX_AHB_FF_CLK                                   17
+#define GPU_CC_GX_GMU_CLK                                      18
+#define GPU_CC_GX_RCG_AHB_FF_CLK                               19
+#define GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK                         20
+#define GPU_CC_HUB_AON_CLK                                     21
+#define GPU_CC_HUB_CLK_SRC                                     22
+#define GPU_CC_HUB_CX_INT_CLK                                  23
+#define GPU_CC_HUB_DIV_CLK_SRC                                 24
+#define GPU_CC_MEMNOC_GFX_CLK                                  25
+#define GPU_CC_RSCC_HUB_AON_CLK                                        26
+#define GPU_CC_RSCC_XO_AON_CLK                                 27
+#define GPU_CC_SLEEP_CLK                                       28
+#define GPU_CC_XO_CLK_SRC                                      29
+#define GPU_CC_XO_DIV_CLK_SRC                                  30
+
+/* GPU_CC resets */
+#define GPU_CC_CB_BCR                                          0
+#define GPU_CC_CX_BCR                                          1
+#define GPU_CC_FAST_HUB_BCR                                    2
+#define GPU_CC_FF_BCR                                          3
+#define GPU_CC_GMU_BCR                                         4
+#define GPU_CC_GX_BCR                                          5
+#define GPU_CC_RBCPR_BCR                                       6
+#define GPU_CC_XO_BCR                                          7
+
+/* GPU_CC power domains */
+#define GPU_CC_CX_GDSC                                         0
+
+#endif
diff --git a/include/dt-bindings/clock/qcom,milos-videocc.h b/include/dt-bindings/clock/qcom,milos-videocc.h
new file mode 100644 (file)
index 0000000..3544db8
--- /dev/null
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025, Luca Weiss <luca.weiss@fairphone.com>
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_VIDEO_CC_MILOS_H
+#define _DT_BINDINGS_CLK_QCOM_VIDEO_CC_MILOS_H
+
+/* VIDEO_CC clocks */
+#define VIDEO_CC_PLL0                                          0
+#define VIDEO_CC_AHB_CLK                                       1
+#define VIDEO_CC_AHB_CLK_SRC                                   2
+#define VIDEO_CC_MVS0_CLK                                      3
+#define VIDEO_CC_MVS0_CLK_SRC                                  4
+#define VIDEO_CC_MVS0_DIV_CLK_SRC                              5
+#define VIDEO_CC_MVS0_SHIFT_CLK                                        6
+#define VIDEO_CC_MVS0C_CLK                                     7
+#define VIDEO_CC_MVS0C_DIV2_DIV_CLK_SRC                                8
+#define VIDEO_CC_MVS0C_SHIFT_CLK                               9
+#define VIDEO_CC_SLEEP_CLK                                     10
+#define VIDEO_CC_SLEEP_CLK_SRC                                 11
+#define VIDEO_CC_XO_CLK                                                12
+#define VIDEO_CC_XO_CLK_SRC                                    13
+
+/* VIDEO_CC resets */
+#define VIDEO_CC_INTERFACE_BCR                                 0
+#define VIDEO_CC_MVS0_BCR                                      1
+#define VIDEO_CC_MVS0C_CLK_ARES                                        2
+#define VIDEO_CC_MVS0C_BCR                                     3
+
+/* VIDEO_CC power domains */
+#define VIDEO_CC_MVS0_GDSC                                     0
+#define VIDEO_CC_MVS0C_GDSC                                    1
+
+#endif
diff --git a/include/dt-bindings/clock/qcom,qcs615-camcc.h b/include/dt-bindings/clock/qcom,qcs615-camcc.h
new file mode 100644 (file)
index 0000000..aec57dd
--- /dev/null
@@ -0,0 +1,110 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_CAM_CC_QCS615_H
+#define _DT_BINDINGS_CLK_QCOM_CAM_CC_QCS615_H
+
+/* CAM_CC clocks */
+#define CAM_CC_BPS_AHB_CLK                                     0
+#define CAM_CC_BPS_AREG_CLK                                    1
+#define CAM_CC_BPS_AXI_CLK                                     2
+#define CAM_CC_BPS_CLK                                         3
+#define CAM_CC_BPS_CLK_SRC                                     4
+#define CAM_CC_CAMNOC_ATB_CLK                                  5
+#define CAM_CC_CAMNOC_AXI_CLK                                  6
+#define CAM_CC_CCI_CLK                                         7
+#define CAM_CC_CCI_CLK_SRC                                     8
+#define CAM_CC_CORE_AHB_CLK                                    9
+#define CAM_CC_CPAS_AHB_CLK                                    10
+#define CAM_CC_CPHY_RX_CLK_SRC                                 11
+#define CAM_CC_CSI0PHYTIMER_CLK                                        12
+#define CAM_CC_CSI0PHYTIMER_CLK_SRC                            13
+#define CAM_CC_CSI1PHYTIMER_CLK                                        14
+#define CAM_CC_CSI1PHYTIMER_CLK_SRC                            15
+#define CAM_CC_CSI2PHYTIMER_CLK                                        16
+#define CAM_CC_CSI2PHYTIMER_CLK_SRC                            17
+#define CAM_CC_CSIPHY0_CLK                                     18
+#define CAM_CC_CSIPHY1_CLK                                     19
+#define CAM_CC_CSIPHY2_CLK                                     20
+#define CAM_CC_FAST_AHB_CLK_SRC                                        21
+#define CAM_CC_ICP_ATB_CLK                                     22
+#define CAM_CC_ICP_CLK                                         23
+#define CAM_CC_ICP_CLK_SRC                                     24
+#define CAM_CC_ICP_CTI_CLK                                     25
+#define CAM_CC_ICP_TS_CLK                                      26
+#define CAM_CC_IFE_0_AXI_CLK                                   27
+#define CAM_CC_IFE_0_CLK                                       28
+#define CAM_CC_IFE_0_CLK_SRC                                   29
+#define CAM_CC_IFE_0_CPHY_RX_CLK                               30
+#define CAM_CC_IFE_0_CSID_CLK                                  31
+#define CAM_CC_IFE_0_CSID_CLK_SRC                              32
+#define CAM_CC_IFE_0_DSP_CLK                                   33
+#define CAM_CC_IFE_1_AXI_CLK                                   34
+#define CAM_CC_IFE_1_CLK                                       35
+#define CAM_CC_IFE_1_CLK_SRC                                   36
+#define CAM_CC_IFE_1_CPHY_RX_CLK                               37
+#define CAM_CC_IFE_1_CSID_CLK                                  38
+#define CAM_CC_IFE_1_CSID_CLK_SRC                              39
+#define CAM_CC_IFE_1_DSP_CLK                                   40
+#define CAM_CC_IFE_LITE_CLK                                    41
+#define CAM_CC_IFE_LITE_CLK_SRC                                        42
+#define CAM_CC_IFE_LITE_CPHY_RX_CLK                            43
+#define CAM_CC_IFE_LITE_CSID_CLK                               44
+#define CAM_CC_IFE_LITE_CSID_CLK_SRC                           45
+#define CAM_CC_IPE_0_AHB_CLK                                   46
+#define CAM_CC_IPE_0_AREG_CLK                                  47
+#define CAM_CC_IPE_0_AXI_CLK                                   48
+#define CAM_CC_IPE_0_CLK                                       49
+#define CAM_CC_IPE_0_CLK_SRC                                   50
+#define CAM_CC_JPEG_CLK                                                51
+#define CAM_CC_JPEG_CLK_SRC                                    52
+#define CAM_CC_LRME_CLK                                                53
+#define CAM_CC_LRME_CLK_SRC                                    54
+#define CAM_CC_MCLK0_CLK                                       55
+#define CAM_CC_MCLK0_CLK_SRC                                   56
+#define CAM_CC_MCLK1_CLK                                       57
+#define CAM_CC_MCLK1_CLK_SRC                                   58
+#define CAM_CC_MCLK2_CLK                                       59
+#define CAM_CC_MCLK2_CLK_SRC                                   60
+#define CAM_CC_MCLK3_CLK                                       61
+#define CAM_CC_MCLK3_CLK_SRC                                   62
+#define CAM_CC_PLL0                                            63
+#define CAM_CC_PLL1                                            64
+#define CAM_CC_PLL2                                            65
+#define CAM_CC_PLL2_OUT_AUX2                                   66
+#define CAM_CC_PLL3                                            67
+#define CAM_CC_SLOW_AHB_CLK_SRC                                        68
+#define CAM_CC_SOC_AHB_CLK                                     69
+#define CAM_CC_SYS_TMR_CLK                                     70
+
+/* CAM_CC power domains */
+#define BPS_GDSC                                               0
+#define IFE_0_GDSC                                             1
+#define IFE_1_GDSC                                             2
+#define IPE_0_GDSC                                             3
+#define TITAN_TOP_GDSC                                         4
+
+/* CAM_CC resets */
+#define CAM_CC_BPS_BCR                                         0
+#define CAM_CC_CAMNOC_BCR                                      1
+#define CAM_CC_CCI_BCR                                         2
+#define CAM_CC_CPAS_BCR                                                3
+#define CAM_CC_CSI0PHY_BCR                                     4
+#define CAM_CC_CSI1PHY_BCR                                     5
+#define CAM_CC_CSI2PHY_BCR                                     6
+#define CAM_CC_ICP_BCR                                         7
+#define CAM_CC_IFE_0_BCR                                       8
+#define CAM_CC_IFE_1_BCR                                       9
+#define CAM_CC_IFE_LITE_BCR                                    10
+#define CAM_CC_IPE_0_BCR                                       11
+#define CAM_CC_JPEG_BCR                                                12
+#define CAM_CC_LRME_BCR                                                13
+#define CAM_CC_MCLK0_BCR                                       14
+#define CAM_CC_MCLK1_BCR                                       15
+#define CAM_CC_MCLK2_BCR                                       16
+#define CAM_CC_MCLK3_BCR                                       17
+#define CAM_CC_TITAN_TOP_BCR                                   18
+
+#endif
diff --git a/include/dt-bindings/clock/qcom,qcs615-dispcc.h b/include/dt-bindings/clock/qcom,qcs615-dispcc.h
new file mode 100644 (file)
index 0000000..9a29945
--- /dev/null
@@ -0,0 +1,52 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_DISP_CC_QCS615_H
+#define _DT_BINDINGS_CLK_QCOM_DISP_CC_QCS615_H
+
+/* DISP_CC clocks */
+#define DISP_CC_MDSS_AHB_CLK                                   0
+#define DISP_CC_MDSS_AHB_CLK_SRC                               1
+#define DISP_CC_MDSS_BYTE0_CLK                                 2
+#define DISP_CC_MDSS_BYTE0_CLK_SRC                             3
+#define DISP_CC_MDSS_BYTE0_DIV_CLK_SRC                         4
+#define DISP_CC_MDSS_BYTE0_INTF_CLK                            5
+#define DISP_CC_MDSS_DP_AUX_CLK                                        6
+#define DISP_CC_MDSS_DP_AUX_CLK_SRC                            7
+#define DISP_CC_MDSS_DP_CRYPTO_CLK                             8
+#define DISP_CC_MDSS_DP_CRYPTO_CLK_SRC                         9
+#define DISP_CC_MDSS_DP_LINK_CLK                               10
+#define DISP_CC_MDSS_DP_LINK_CLK_SRC                           11
+#define DISP_CC_MDSS_DP_LINK_DIV_CLK_SRC                       12
+#define DISP_CC_MDSS_DP_LINK_INTF_CLK                          13
+#define DISP_CC_MDSS_DP_PIXEL1_CLK                             14
+#define DISP_CC_MDSS_DP_PIXEL1_CLK_SRC                         15
+#define DISP_CC_MDSS_DP_PIXEL_CLK                              16
+#define DISP_CC_MDSS_DP_PIXEL_CLK_SRC                          17
+#define DISP_CC_MDSS_ESC0_CLK                                  18
+#define DISP_CC_MDSS_ESC0_CLK_SRC                              19
+#define DISP_CC_MDSS_MDP_CLK                                   20
+#define DISP_CC_MDSS_MDP_CLK_SRC                               21
+#define DISP_CC_MDSS_MDP_LUT_CLK                               22
+#define DISP_CC_MDSS_NON_GDSC_AHB_CLK                          23
+#define DISP_CC_MDSS_PCLK0_CLK                                 24
+#define DISP_CC_MDSS_PCLK0_CLK_SRC                             25
+#define DISP_CC_MDSS_ROT_CLK                                   26
+#define DISP_CC_MDSS_ROT_CLK_SRC                               27
+#define DISP_CC_MDSS_RSCC_AHB_CLK                              28
+#define DISP_CC_MDSS_RSCC_VSYNC_CLK                            29
+#define DISP_CC_MDSS_VSYNC_CLK                                 30
+#define DISP_CC_MDSS_VSYNC_CLK_SRC                             31
+#define DISP_CC_PLL0                                           32
+#define DISP_CC_XO_CLK                                         33
+
+/* DISP_CC power domains */
+#define MDSS_CORE_GDSC                                         0
+
+/* DISP_CC resets */
+#define DISP_CC_MDSS_CORE_BCR                                  0
+#define DISP_CC_MDSS_RSCC_BCR                                  1
+
+#endif
diff --git a/include/dt-bindings/clock/qcom,qcs615-gpucc.h b/include/dt-bindings/clock/qcom,qcs615-gpucc.h
new file mode 100644 (file)
index 0000000..6d8394b
--- /dev/null
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_GPU_CC_QCS615_H
+#define _DT_BINDINGS_CLK_QCOM_GPU_CC_QCS615_H
+
+/* GPU_CC clocks */
+#define CRC_DIV_PLL0                                           0
+#define CRC_DIV_PLL1                                           1
+#define GPU_CC_PLL0                                            2
+#define GPU_CC_PLL1                                            3
+#define GPU_CC_CRC_AHB_CLK                                     4
+#define GPU_CC_CX_GFX3D_CLK                                    5
+#define GPU_CC_CX_GFX3D_SLV_CLK                                        6
+#define GPU_CC_CX_GMU_CLK                                      7
+#define GPU_CC_CX_SNOC_DVM_CLK                                 8
+#define GPU_CC_CXO_AON_CLK                                     9
+#define GPU_CC_CXO_CLK                                         10
+#define GPU_CC_GMU_CLK_SRC                                     11
+#define GPU_CC_GX_GFX3D_CLK                                    12
+#define GPU_CC_GX_GFX3D_CLK_SRC                                        13
+#define GPU_CC_GX_GMU_CLK                                      14
+#define GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK                         15
+#define GPU_CC_SLEEP_CLK                                       16
+
+/* GPU_CC power domains */
+#define CX_GDSC                                                        0
+#define GX_GDSC                                                        1
+
+/* GPU_CC resets */
+#define GPU_CC_CX_BCR                                          0
+#define GPU_CC_GFX3D_AON_BCR                                   1
+#define GPU_CC_GMU_BCR                                         2
+#define GPU_CC_GX_BCR                                          3
+#define GPU_CC_XO_BCR                                          4
+
+#endif
diff --git a/include/dt-bindings/clock/qcom,qcs615-videocc.h b/include/dt-bindings/clock/qcom,qcs615-videocc.h
new file mode 100644 (file)
index 0000000..0ca3efb
--- /dev/null
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_VIDEO_CC_QCS615_H
+#define _DT_BINDINGS_CLK_QCOM_VIDEO_CC_QCS615_H
+
+/* VIDEO_CC clocks */
+#define VIDEO_CC_SLEEP_CLK                                     0
+#define VIDEO_CC_SLEEP_CLK_SRC                                 1
+#define VIDEO_CC_VCODEC0_AXI_CLK                               2
+#define VIDEO_CC_VCODEC0_CORE_CLK                              3
+#define VIDEO_CC_VENUS_AHB_CLK                                 4
+#define VIDEO_CC_VENUS_CLK_SRC                                 5
+#define VIDEO_CC_VENUS_CTL_AXI_CLK                             6
+#define VIDEO_CC_VENUS_CTL_CORE_CLK                            7
+#define VIDEO_CC_XO_CLK                                                8
+#define VIDEO_PLL0                                             9
+
+/* VIDEO_CC power domains */
+#define VCODEC0_GDSC                                           0
+#define VENUS_GDSC                                             1
+
+/* VIDEO_CC resets */
+#define VIDEO_CC_INTERFACE_BCR                                 0
+#define VIDEO_CC_VCODEC0_BCR                                   1
+#define VIDEO_CC_VENUS_BCR                                     2
+
+#endif
diff --git a/include/dt-bindings/clock/qcom,sc8180x-camcc.h b/include/dt-bindings/clock/qcom,sc8180x-camcc.h
new file mode 100644 (file)
index 0000000..3e57b80
--- /dev/null
@@ -0,0 +1,181 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_CAM_CC_SC8180X_H
+#define _DT_BINDINGS_CLK_QCOM_CAM_CC_SC8180X_H
+
+/* CAM_CC clocks */
+#define CAM_CC_BPS_AHB_CLK                                     0
+#define CAM_CC_BPS_AREG_CLK                                    1
+#define CAM_CC_BPS_AXI_CLK                                     2
+#define CAM_CC_BPS_CLK                                         3
+#define CAM_CC_BPS_CLK_SRC                                     4
+#define CAM_CC_CAMNOC_AXI_CLK                                  5
+#define CAM_CC_CAMNOC_AXI_CLK_SRC                              6
+#define CAM_CC_CAMNOC_DCD_XO_CLK                               7
+#define CAM_CC_CCI_0_CLK                                       8
+#define CAM_CC_CCI_0_CLK_SRC                                   9
+#define CAM_CC_CCI_1_CLK                                       10
+#define CAM_CC_CCI_1_CLK_SRC                                   11
+#define CAM_CC_CCI_2_CLK                                       12
+#define CAM_CC_CCI_2_CLK_SRC                                   13
+#define CAM_CC_CCI_3_CLK                                       14
+#define CAM_CC_CCI_3_CLK_SRC                                   15
+#define CAM_CC_CORE_AHB_CLK                                    16
+#define CAM_CC_CPAS_AHB_CLK                                    17
+#define CAM_CC_CPHY_RX_CLK_SRC                                 18
+#define CAM_CC_CSI0PHYTIMER_CLK                                        19
+#define CAM_CC_CSI0PHYTIMER_CLK_SRC                            20
+#define CAM_CC_CSI1PHYTIMER_CLK                                        21
+#define CAM_CC_CSI1PHYTIMER_CLK_SRC                            22
+#define CAM_CC_CSI2PHYTIMER_CLK                                        23
+#define CAM_CC_CSI2PHYTIMER_CLK_SRC                            24
+#define CAM_CC_CSI3PHYTIMER_CLK                                        25
+#define CAM_CC_CSI3PHYTIMER_CLK_SRC                            26
+#define CAM_CC_CSIPHY0_CLK                                     27
+#define CAM_CC_CSIPHY1_CLK                                     28
+#define CAM_CC_CSIPHY2_CLK                                     29
+#define CAM_CC_CSIPHY3_CLK                                     30
+#define CAM_CC_FAST_AHB_CLK_SRC                                        31
+#define CAM_CC_FD_CORE_CLK                                     32
+#define CAM_CC_FD_CORE_CLK_SRC                                 33
+#define CAM_CC_FD_CORE_UAR_CLK                                 34
+#define CAM_CC_ICP_AHB_CLK                                     35
+#define CAM_CC_ICP_CLK                                         36
+#define CAM_CC_ICP_CLK_SRC                                     37
+#define CAM_CC_IFE_0_AXI_CLK                                   38
+#define CAM_CC_IFE_0_CLK                                       39
+#define CAM_CC_IFE_0_CLK_SRC                                   40
+#define CAM_CC_IFE_0_CPHY_RX_CLK                               41
+#define CAM_CC_IFE_0_CSID_CLK                                  42
+#define CAM_CC_IFE_0_CSID_CLK_SRC                              43
+#define CAM_CC_IFE_0_DSP_CLK                                   44
+#define CAM_CC_IFE_1_AXI_CLK                                   45
+#define CAM_CC_IFE_1_CLK                                       46
+#define CAM_CC_IFE_1_CLK_SRC                                   47
+#define CAM_CC_IFE_1_CPHY_RX_CLK                               48
+#define CAM_CC_IFE_1_CSID_CLK                                  49
+#define CAM_CC_IFE_1_CSID_CLK_SRC                              50
+#define CAM_CC_IFE_1_DSP_CLK                                   51
+#define CAM_CC_IFE_2_AXI_CLK                                   52
+#define CAM_CC_IFE_2_CLK                                       53
+#define CAM_CC_IFE_2_CLK_SRC                                   54
+#define CAM_CC_IFE_2_CPHY_RX_CLK                               55
+#define CAM_CC_IFE_2_CSID_CLK                                  56
+#define CAM_CC_IFE_2_CSID_CLK_SRC                              57
+#define CAM_CC_IFE_2_DSP_CLK                                   58
+#define CAM_CC_IFE_3_AXI_CLK                                   59
+#define CAM_CC_IFE_3_CLK                                       60
+#define CAM_CC_IFE_3_CLK_SRC                                   61
+#define CAM_CC_IFE_3_CPHY_RX_CLK                               62
+#define CAM_CC_IFE_3_CSID_CLK                                  63
+#define CAM_CC_IFE_3_CSID_CLK_SRC                              64
+#define CAM_CC_IFE_3_DSP_CLK                                   65
+#define CAM_CC_IFE_LITE_0_CLK                                  66
+#define CAM_CC_IFE_LITE_0_CLK_SRC                              67
+#define CAM_CC_IFE_LITE_0_CPHY_RX_CLK                          68
+#define CAM_CC_IFE_LITE_0_CSID_CLK                             69
+#define CAM_CC_IFE_LITE_0_CSID_CLK_SRC                         70
+#define CAM_CC_IFE_LITE_1_CLK                                  71
+#define CAM_CC_IFE_LITE_1_CLK_SRC                              72
+#define CAM_CC_IFE_LITE_1_CPHY_RX_CLK                          73
+#define CAM_CC_IFE_LITE_1_CSID_CLK                             74
+#define CAM_CC_IFE_LITE_1_CSID_CLK_SRC                         75
+#define CAM_CC_IFE_LITE_2_CLK                                  76
+#define CAM_CC_IFE_LITE_2_CLK_SRC                              77
+#define CAM_CC_IFE_LITE_2_CPHY_RX_CLK                          78
+#define CAM_CC_IFE_LITE_2_CSID_CLK                             79
+#define CAM_CC_IFE_LITE_2_CSID_CLK_SRC                         80
+#define CAM_CC_IFE_LITE_3_CLK                                  81
+#define CAM_CC_IFE_LITE_3_CLK_SRC                              82
+#define CAM_CC_IFE_LITE_3_CPHY_RX_CLK                          83
+#define CAM_CC_IFE_LITE_3_CSID_CLK                             84
+#define CAM_CC_IFE_LITE_3_CSID_CLK_SRC                         85
+#define CAM_CC_IPE_0_AHB_CLK                                   86
+#define CAM_CC_IPE_0_AREG_CLK                                  87
+#define CAM_CC_IPE_0_AXI_CLK                                   88
+#define CAM_CC_IPE_0_CLK                                       89
+#define CAM_CC_IPE_0_CLK_SRC                                   90
+#define CAM_CC_IPE_1_AHB_CLK                                   91
+#define CAM_CC_IPE_1_AREG_CLK                                  92
+#define CAM_CC_IPE_1_AXI_CLK                                   93
+#define CAM_CC_IPE_1_CLK                                       94
+#define CAM_CC_JPEG_CLK                                                95
+#define CAM_CC_JPEG_CLK_SRC                                    96
+#define CAM_CC_LRME_CLK                                                97
+#define CAM_CC_LRME_CLK_SRC                                    98
+#define CAM_CC_MCLK0_CLK                                       99
+#define CAM_CC_MCLK0_CLK_SRC                                   100
+#define CAM_CC_MCLK1_CLK                                       101
+#define CAM_CC_MCLK1_CLK_SRC                                   102
+#define CAM_CC_MCLK2_CLK                                       103
+#define CAM_CC_MCLK2_CLK_SRC                                   104
+#define CAM_CC_MCLK3_CLK                                       105
+#define CAM_CC_MCLK3_CLK_SRC                                   106
+#define CAM_CC_MCLK4_CLK                                       107
+#define CAM_CC_MCLK4_CLK_SRC                                   108
+#define CAM_CC_MCLK5_CLK                                       109
+#define CAM_CC_MCLK5_CLK_SRC                                   110
+#define CAM_CC_MCLK6_CLK                                       111
+#define CAM_CC_MCLK6_CLK_SRC                                   112
+#define CAM_CC_MCLK7_CLK                                       113
+#define CAM_CC_MCLK7_CLK_SRC                                   114
+#define CAM_CC_PLL0                                            115
+#define CAM_CC_PLL0_OUT_EVEN                                   116
+#define CAM_CC_PLL0_OUT_ODD                                    117
+#define CAM_CC_PLL1                                            118
+#define CAM_CC_PLL2                                            119
+#define CAM_CC_PLL2_OUT_MAIN                                   120
+#define CAM_CC_PLL3                                            121
+#define CAM_CC_PLL4                                            122
+#define CAM_CC_PLL5                                            123
+#define CAM_CC_PLL6                                            124
+#define CAM_CC_SLOW_AHB_CLK_SRC                                        125
+#define CAM_CC_XO_CLK_SRC                                      126
+
+
+/* CAM_CC power domains */
+#define BPS_GDSC                                               0
+#define IFE_0_GDSC                                             1
+#define IFE_1_GDSC                                             2
+#define IFE_2_GDSC                                             3
+#define IFE_3_GDSC                                             4
+#define IPE_0_GDSC                                             5
+#define IPE_1_GDSC                                             6
+#define TITAN_TOP_GDSC                                         7
+
+/* CAM_CC resets */
+#define CAM_CC_BPS_BCR                                         0
+#define CAM_CC_CAMNOC_BCR                                      1
+#define CAM_CC_CCI_BCR                                         2
+#define CAM_CC_CPAS_BCR                                                3
+#define CAM_CC_CSI0PHY_BCR                                     4
+#define CAM_CC_CSI1PHY_BCR                                     5
+#define CAM_CC_CSI2PHY_BCR                                     6
+#define CAM_CC_CSI3PHY_BCR                                     7
+#define CAM_CC_FD_BCR                                          8
+#define CAM_CC_ICP_BCR                                         9
+#define CAM_CC_IFE_0_BCR                                       10
+#define CAM_CC_IFE_1_BCR                                       11
+#define CAM_CC_IFE_2_BCR                                       12
+#define CAM_CC_IFE_3_BCR                                       13
+#define CAM_CC_IFE_LITE_0_BCR                                  14
+#define CAM_CC_IFE_LITE_1_BCR                                  15
+#define CAM_CC_IFE_LITE_2_BCR                                  16
+#define CAM_CC_IFE_LITE_3_BCR                                  17
+#define CAM_CC_IPE_0_BCR                                       18
+#define CAM_CC_IPE_1_BCR                                       19
+#define CAM_CC_JPEG_BCR                                                20
+#define CAM_CC_LRME_BCR                                                21
+#define CAM_CC_MCLK0_BCR                                       22
+#define CAM_CC_MCLK1_BCR                                       23
+#define CAM_CC_MCLK2_BCR                                       24
+#define CAM_CC_MCLK3_BCR                                       25
+#define CAM_CC_MCLK4_BCR                                       26
+#define CAM_CC_MCLK5_BCR                                       27
+#define CAM_CC_MCLK6_BCR                                       28
+#define CAM_CC_MCLK7_BCR                                       29
+
+#endif
index 24ba9e2a5cf6c31e6e88c682e6bfcc60490d692d..710c340f24a57d799ac04650fbe9d4ea0f294bde 100644 (file)
 #define GCC_USB_1_PHY_BCR                                      85
 #define GCC_USB_2_PHY_BCR                                      86
 #define GCC_VIDEO_BCR                                          87
+#define GCC_VIDEO_AXI0_CLK_ARES                                        88
+#define GCC_VIDEO_AXI1_CLK_ARES                                        89
 #endif
index 1319933437779071b41bea735caaa3c914ee29b8..e1f65f1928cf7d4ce425fce5f3b4c44867f48dfd 100644 (file)
 #define R9A07G043_AX45MP_CORE0_RESETN  78      /* RZ/Five Only */
 #define R9A07G043_IAX45_RESETN         79      /* RZ/Five Only */
 
-/* Power domain IDs. */
-#define R9A07G043_PD_ALWAYS_ON         0
-#define R9A07G043_PD_GIC               1       /* RZ/G2UL Only */
-#define R9A07G043_PD_IA55              2       /* RZ/G2UL Only */
-#define R9A07G043_PD_MHU               3       /* RZ/G2UL Only */
-#define R9A07G043_PD_CORESIGHT         4       /* RZ/G2UL Only */
-#define R9A07G043_PD_SYC               5       /* RZ/G2UL Only */
-#define R9A07G043_PD_DMAC              6
-#define R9A07G043_PD_GTM0              7
-#define R9A07G043_PD_GTM1              8
-#define R9A07G043_PD_GTM2              9
-#define R9A07G043_PD_MTU               10
-#define R9A07G043_PD_POE3              11
-#define R9A07G043_PD_WDT0              12
-#define R9A07G043_PD_SPI               13
-#define R9A07G043_PD_SDHI0             14
-#define R9A07G043_PD_SDHI1             15
-#define R9A07G043_PD_ISU               16      /* RZ/G2UL Only */
-#define R9A07G043_PD_CRU               17      /* RZ/G2UL Only */
-#define R9A07G043_PD_LCDC              18      /* RZ/G2UL Only */
-#define R9A07G043_PD_SSI0              19
-#define R9A07G043_PD_SSI1              20
-#define R9A07G043_PD_SSI2              21
-#define R9A07G043_PD_SSI3              22
-#define R9A07G043_PD_SRC               23
-#define R9A07G043_PD_USB0              24
-#define R9A07G043_PD_USB1              25
-#define R9A07G043_PD_USB_PHY           26
-#define R9A07G043_PD_ETHER0            27
-#define R9A07G043_PD_ETHER1            28
-#define R9A07G043_PD_I2C0              29
-#define R9A07G043_PD_I2C1              30
-#define R9A07G043_PD_I2C2              31
-#define R9A07G043_PD_I2C3              32
-#define R9A07G043_PD_SCIF0             33
-#define R9A07G043_PD_SCIF1             34
-#define R9A07G043_PD_SCIF2             35
-#define R9A07G043_PD_SCIF3             36
-#define R9A07G043_PD_SCIF4             37
-#define R9A07G043_PD_SCI0              38
-#define R9A07G043_PD_SCI1              39
-#define R9A07G043_PD_IRDA              40
-#define R9A07G043_PD_RSPI0             41
-#define R9A07G043_PD_RSPI1             42
-#define R9A07G043_PD_RSPI2             43
-#define R9A07G043_PD_CANFD             44
-#define R9A07G043_PD_ADC               45
-#define R9A07G043_PD_TSU               46
-#define R9A07G043_PD_PLIC              47      /* RZ/Five Only */
-#define R9A07G043_PD_IAX45             48      /* RZ/Five Only */
-#define R9A07G043_PD_NCEPLDM           49      /* RZ/Five Only */
-#define R9A07G043_PD_NCEPLMT           50      /* RZ/Five Only */
-
 #endif /* __DT_BINDINGS_CLOCK_R9A07G043_CPG_H__ */
index e209f96f92b7efe93fb0476036b9c1f13ef919ef..0bb17ff1a01a7365d8e82c6526df50375fa8c382 100644 (file)
 #define R9A07G044_ADC_ADRST_N          82
 #define R9A07G044_TSU_PRESETN          83
 
-/* Power domain IDs. */
-#define R9A07G044_PD_ALWAYS_ON         0
-#define R9A07G044_PD_GIC               1
-#define R9A07G044_PD_IA55              2
-#define R9A07G044_PD_MHU               3
-#define R9A07G044_PD_CORESIGHT         4
-#define R9A07G044_PD_SYC               5
-#define R9A07G044_PD_DMAC              6
-#define R9A07G044_PD_GTM0              7
-#define R9A07G044_PD_GTM1              8
-#define R9A07G044_PD_GTM2              9
-#define R9A07G044_PD_MTU               10
-#define R9A07G044_PD_POE3              11
-#define R9A07G044_PD_GPT               12
-#define R9A07G044_PD_POEGA             13
-#define R9A07G044_PD_POEGB             14
-#define R9A07G044_PD_POEGC             15
-#define R9A07G044_PD_POEGD             16
-#define R9A07G044_PD_WDT0              17
-#define R9A07G044_PD_WDT1              18
-#define R9A07G044_PD_SPI               19
-#define R9A07G044_PD_SDHI0             20
-#define R9A07G044_PD_SDHI1             21
-#define R9A07G044_PD_3DGE              22
-#define R9A07G044_PD_ISU               23
-#define R9A07G044_PD_VCPL4             24
-#define R9A07G044_PD_CRU               25
-#define R9A07G044_PD_MIPI_DSI          26
-#define R9A07G044_PD_LCDC              27
-#define R9A07G044_PD_SSI0              28
-#define R9A07G044_PD_SSI1              29
-#define R9A07G044_PD_SSI2              30
-#define R9A07G044_PD_SSI3              31
-#define R9A07G044_PD_SRC               32
-#define R9A07G044_PD_USB0              33
-#define R9A07G044_PD_USB1              34
-#define R9A07G044_PD_USB_PHY           35
-#define R9A07G044_PD_ETHER0            36
-#define R9A07G044_PD_ETHER1            37
-#define R9A07G044_PD_I2C0              38
-#define R9A07G044_PD_I2C1              39
-#define R9A07G044_PD_I2C2              40
-#define R9A07G044_PD_I2C3              41
-#define R9A07G044_PD_SCIF0             42
-#define R9A07G044_PD_SCIF1             43
-#define R9A07G044_PD_SCIF2             44
-#define R9A07G044_PD_SCIF3             45
-#define R9A07G044_PD_SCIF4             46
-#define R9A07G044_PD_SCI0              47
-#define R9A07G044_PD_SCI1              48
-#define R9A07G044_PD_IRDA              49
-#define R9A07G044_PD_RSPI0             50
-#define R9A07G044_PD_RSPI1             51
-#define R9A07G044_PD_RSPI2             52
-#define R9A07G044_PD_CANFD             53
-#define R9A07G044_PD_ADC               54
-#define R9A07G044_PD_TSU               55
-
 #endif /* __DT_BINDINGS_CLOCK_R9A07G044_CPG_H__ */
index 2c99f89397c4caa7d97bcded6dd5bdf6bc090906..43f4dbda872cc04f37fa7c4fd59c32c15d78b9bd 100644 (file)
 #define R9A07G054_TSU_PRESETN          83
 #define R9A07G054_STPAI_ARESETN                84
 
-/* Power domain IDs. */
-#define R9A07G054_PD_ALWAYS_ON         0
-#define R9A07G054_PD_GIC               1
-#define R9A07G054_PD_IA55              2
-#define R9A07G054_PD_MHU               3
-#define R9A07G054_PD_CORESIGHT         4
-#define R9A07G054_PD_SYC               5
-#define R9A07G054_PD_DMAC              6
-#define R9A07G054_PD_GTM0              7
-#define R9A07G054_PD_GTM1              8
-#define R9A07G054_PD_GTM2              9
-#define R9A07G054_PD_MTU               10
-#define R9A07G054_PD_POE3              11
-#define R9A07G054_PD_GPT               12
-#define R9A07G054_PD_POEGA             13
-#define R9A07G054_PD_POEGB             14
-#define R9A07G054_PD_POEGC             15
-#define R9A07G054_PD_POEGD             16
-#define R9A07G054_PD_WDT0              17
-#define R9A07G054_PD_WDT1              18
-#define R9A07G054_PD_SPI               19
-#define R9A07G054_PD_SDHI0             20
-#define R9A07G054_PD_SDHI1             21
-#define R9A07G054_PD_3DGE              22
-#define R9A07G054_PD_ISU               23
-#define R9A07G054_PD_VCPL4             24
-#define R9A07G054_PD_CRU               25
-#define R9A07G054_PD_MIPI_DSI          26
-#define R9A07G054_PD_LCDC              27
-#define R9A07G054_PD_SSI0              28
-#define R9A07G054_PD_SSI1              29
-#define R9A07G054_PD_SSI2              30
-#define R9A07G054_PD_SSI3              31
-#define R9A07G054_PD_SRC               32
-#define R9A07G054_PD_USB0              33
-#define R9A07G054_PD_USB1              34
-#define R9A07G054_PD_USB_PHY           35
-#define R9A07G054_PD_ETHER0            36
-#define R9A07G054_PD_ETHER1            37
-#define R9A07G054_PD_I2C0              38
-#define R9A07G054_PD_I2C1              39
-#define R9A07G054_PD_I2C2              40
-#define R9A07G054_PD_I2C3              41
-#define R9A07G054_PD_SCIF0             42
-#define R9A07G054_PD_SCIF1             43
-#define R9A07G054_PD_SCIF2             44
-#define R9A07G054_PD_SCIF3             45
-#define R9A07G054_PD_SCIF4             46
-#define R9A07G054_PD_SCI0              47
-#define R9A07G054_PD_SCI1              48
-#define R9A07G054_PD_IRDA              49
-#define R9A07G054_PD_RSPI0             50
-#define R9A07G054_PD_RSPI1             51
-#define R9A07G054_PD_RSPI2             52
-#define R9A07G054_PD_CANFD             53
-#define R9A07G054_PD_ADC               54
-#define R9A07G054_PD_TSU               55
-
 #endif /* __DT_BINDINGS_CLOCK_R9A07G054_CPG_H__ */
index 311521fe4b59c5ca6cbecf0565f67e7331fbaa53..410725b778a86c9ee91e82296c9d5216f3e7c2ac 100644 (file)
 #define R9A08G045_I3C_PRESETN          92
 #define R9A08G045_VBAT_BRESETN         93
 
-/* Power domain IDs. */
-#define R9A08G045_PD_ALWAYS_ON         0
-#define R9A08G045_PD_GIC               1
-#define R9A08G045_PD_IA55              2
-#define R9A08G045_PD_MHU               3
-#define R9A08G045_PD_CORESIGHT         4
-#define R9A08G045_PD_SYC               5
-#define R9A08G045_PD_DMAC              6
-#define R9A08G045_PD_GTM0              7
-#define R9A08G045_PD_GTM1              8
-#define R9A08G045_PD_GTM2              9
-#define R9A08G045_PD_GTM3              10
-#define R9A08G045_PD_GTM4              11
-#define R9A08G045_PD_GTM5              12
-#define R9A08G045_PD_GTM6              13
-#define R9A08G045_PD_GTM7              14
-#define R9A08G045_PD_MTU               15
-#define R9A08G045_PD_POE3              16
-#define R9A08G045_PD_GPT               17
-#define R9A08G045_PD_POEGA             18
-#define R9A08G045_PD_POEGB             19
-#define R9A08G045_PD_POEGC             20
-#define R9A08G045_PD_POEGD             21
-#define R9A08G045_PD_WDT0              22
-#define R9A08G045_PD_XSPI              23
-#define R9A08G045_PD_SDHI0             24
-#define R9A08G045_PD_SDHI1             25
-#define R9A08G045_PD_SDHI2             26
-#define R9A08G045_PD_SSI0              27
-#define R9A08G045_PD_SSI1              28
-#define R9A08G045_PD_SSI2              29
-#define R9A08G045_PD_SSI3              30
-#define R9A08G045_PD_SRC               31
-#define R9A08G045_PD_USB0              32
-#define R9A08G045_PD_USB1              33
-#define R9A08G045_PD_USB_PHY           34
-#define R9A08G045_PD_ETHER0            35
-#define R9A08G045_PD_ETHER1            36
-#define R9A08G045_PD_I2C0              37
-#define R9A08G045_PD_I2C1              38
-#define R9A08G045_PD_I2C2              39
-#define R9A08G045_PD_I2C3              40
-#define R9A08G045_PD_SCIF0             41
-#define R9A08G045_PD_SCIF1             42
-#define R9A08G045_PD_SCIF2             43
-#define R9A08G045_PD_SCIF3             44
-#define R9A08G045_PD_SCIF4             45
-#define R9A08G045_PD_SCIF5             46
-#define R9A08G045_PD_SCI0              47
-#define R9A08G045_PD_SCI1              48
-#define R9A08G045_PD_IRDA              49
-#define R9A08G045_PD_RSPI0             50
-#define R9A08G045_PD_RSPI1             51
-#define R9A08G045_PD_RSPI2             52
-#define R9A08G045_PD_RSPI3             53
-#define R9A08G045_PD_RSPI4             54
-#define R9A08G045_PD_CANFD             55
-#define R9A08G045_PD_ADC               56
-#define R9A08G045_PD_TSU               57
-#define R9A08G045_PD_OCTA              58
-#define R9A08G045_PD_PDM               59
-#define R9A08G045_PD_PCI               60
-#define R9A08G045_PD_SPDIF             61
-#define R9A08G045_PD_I3C               62
-#define R9A08G045_PD_VBAT              63
-
-#define R9A08G045_PD_DDR               64
-#define R9A08G045_PD_TZCDDR            65
-#define R9A08G045_PD_OTFDE_DDR         66
-#define R9A08G045_PD_RTC               67
-
 #endif /* __DT_BINDINGS_CLOCK_R9A08G045_CPG_H__ */
diff --git a/include/dt-bindings/clock/raspberrypi,rp1-clocks.h b/include/dt-bindings/clock/raspberrypi,rp1-clocks.h
new file mode 100644 (file)
index 0000000..248efb8
--- /dev/null
@@ -0,0 +1,61 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (C) 2021 Raspberry Pi Ltd.
+ */
+
+#ifndef __DT_BINDINGS_CLOCK_RASPBERRYPI_RP1
+#define __DT_BINDINGS_CLOCK_RASPBERRYPI_RP1
+
+#define RP1_PLL_SYS_CORE               0
+#define RP1_PLL_AUDIO_CORE             1
+#define RP1_PLL_VIDEO_CORE             2
+
+#define RP1_PLL_SYS                    3
+#define RP1_PLL_AUDIO                  4
+#define RP1_PLL_VIDEO                  5
+
+#define RP1_PLL_SYS_PRI_PH             6
+#define RP1_PLL_SYS_SEC_PH             7
+#define RP1_PLL_AUDIO_PRI_PH           8
+
+#define RP1_PLL_SYS_SEC                        9
+#define RP1_PLL_AUDIO_SEC              10
+#define RP1_PLL_VIDEO_SEC              11
+
+#define RP1_CLK_SYS                    12
+#define RP1_CLK_SLOW_SYS               13
+#define RP1_CLK_DMA                    14
+#define RP1_CLK_UART                   15
+#define RP1_CLK_ETH                    16
+#define RP1_CLK_PWM0                   17
+#define RP1_CLK_PWM1                   18
+#define RP1_CLK_AUDIO_IN               19
+#define RP1_CLK_AUDIO_OUT              20
+#define RP1_CLK_I2S                    21
+#define RP1_CLK_MIPI0_CFG              22
+#define RP1_CLK_MIPI1_CFG              23
+#define RP1_CLK_PCIE_AUX               24
+#define RP1_CLK_USBH0_MICROFRAME       25
+#define RP1_CLK_USBH1_MICROFRAME       26
+#define RP1_CLK_USBH0_SUSPEND          27
+#define RP1_CLK_USBH1_SUSPEND          28
+#define RP1_CLK_ETH_TSU                        29
+#define RP1_CLK_ADC                    30
+#define RP1_CLK_SDIO_TIMER             31
+#define RP1_CLK_SDIO_ALT_SRC           32
+#define RP1_CLK_GP0                    33
+#define RP1_CLK_GP1                    34
+#define RP1_CLK_GP2                    35
+#define RP1_CLK_GP3                    36
+#define RP1_CLK_GP4                    37
+#define RP1_CLK_GP5                    38
+#define RP1_CLK_VEC                    39
+#define RP1_CLK_DPI                    40
+#define RP1_CLK_MIPI0_DPI              41
+#define RP1_CLK_MIPI1_DPI              42
+
+/* Extra PLL output channels - RP1B0 only */
+#define RP1_PLL_VIDEO_PRI_PH           43
+#define RP1_PLL_AUDIO_TERN             44
+
+#endif
index f4905b27f8d9aa506807a2520819c4823aae1599..a9af5af9e3a1119c7b0dc48251803dafc976a217 100644 (file)
@@ -20,5 +20,6 @@
 #define R9A09G056_USB2_0_CLK_CORE0             9
 #define R9A09G056_GBETH_0_CLK_PTP_REF_I                10
 #define R9A09G056_GBETH_1_CLK_PTP_REF_I                11
+#define R9A09G056_SPI_CLK_SPI                  12
 
 #endif /* __DT_BINDINGS_CLOCK_RENESAS_R9A09G056_CPG_H__ */
index 884dbeb1e139ff2f6ab0fb5a03fde12f7d1ac514..5346a898ab60a29e9c49b6f8e52bd2d1b48c2c9f 100644 (file)
@@ -21,5 +21,6 @@
 #define R9A09G057_USB2_0_CLK_CORE1             10
 #define R9A09G057_GBETH_0_CLK_PTP_REF_I                11
 #define R9A09G057_GBETH_1_CLK_PTP_REF_I                12
+#define R9A09G057_SPI_CLK_SPI                  13
 
 #endif /* __DT_BINDINGS_CLOCK_RENESAS_R9A09G057_CPG_H__ */
diff --git a/include/dt-bindings/clock/renesas,r9a09g077-cpg-mssr.h b/include/dt-bindings/clock/renesas,r9a09g077-cpg-mssr.h
new file mode 100644 (file)
index 0000000..7ecc4f0
--- /dev/null
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+ *
+ * Copyright (C) 2025 Renesas Electronics Corp.
+ */
+
+#ifndef __DT_BINDINGS_CLOCK_RENESAS_R9A09G077_CPG_H__
+#define __DT_BINDINGS_CLOCK_RENESAS_R9A09G077_CPG_H__
+
+#include <dt-bindings/clock/renesas-cpg-mssr.h>
+
+/* R9A09G077 CPG Core Clocks */
+#define R9A09G077_CLK_CA55C0           0
+#define R9A09G077_CLK_CA55C1           1
+#define R9A09G077_CLK_CA55C2           2
+#define R9A09G077_CLK_CA55C3           3
+#define R9A09G077_CLK_CA55S            4
+#define R9A09G077_CLK_CR52_CPU0                5
+#define R9A09G077_CLK_CR52_CPU1                6
+#define R9A09G077_CLK_CKIO             7
+#define R9A09G077_CLK_PCLKAH           8
+#define R9A09G077_CLK_PCLKAM           9
+#define R9A09G077_CLK_PCLKAL           10
+#define R9A09G077_CLK_PCLKGPTL         11
+#define R9A09G077_CLK_PCLKH            12
+#define R9A09G077_CLK_PCLKM            13
+#define R9A09G077_CLK_PCLKL            14
+#define R9A09G077_SDHI_CLKHS           15
+
+#endif /* __DT_BINDINGS_CLOCK_RENESAS_R9A09G077_CPG_H__ */
diff --git a/include/dt-bindings/clock/renesas,r9a09g087-cpg-mssr.h b/include/dt-bindings/clock/renesas,r9a09g087-cpg-mssr.h
new file mode 100644 (file)
index 0000000..925e577
--- /dev/null
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+ *
+ * Copyright (C) 2025 Renesas Electronics Corp.
+ */
+
+#ifndef __DT_BINDINGS_CLOCK_RENESAS_R9A09G087_CPG_H__
+#define __DT_BINDINGS_CLOCK_RENESAS_R9A09G087_CPG_H__
+
+#include <dt-bindings/clock/renesas-cpg-mssr.h>
+
+/* R9A09G087 CPG Core Clocks */
+#define R9A09G087_CLK_CA55C0           0
+#define R9A09G087_CLK_CA55C1           1
+#define R9A09G087_CLK_CA55C2           2
+#define R9A09G087_CLK_CA55C3           3
+#define R9A09G087_CLK_CA55S            4
+#define R9A09G087_CLK_CR52_CPU0                5
+#define R9A09G087_CLK_CR52_CPU1                6
+#define R9A09G087_CLK_CKIO             7
+#define R9A09G087_CLK_PCLKAH           8
+#define R9A09G087_CLK_PCLKAM           9
+#define R9A09G087_CLK_PCLKAL           10
+#define R9A09G087_CLK_PCLKGPTL         11
+#define R9A09G087_CLK_PCLKH            12
+#define R9A09G087_CLK_PCLKM            13
+#define R9A09G087_CLK_PCLKL            14
+#define R9A09G087_SDHI_CLKHS           15
+
+#endif /* __DT_BINDINGS_CLOCK_RENESAS_R9A09G087_CPG_H__ */
index 5e6896e9627fcf8eb027f12a45de31b6dfa6fa39..93e6233d1358c5bb7b5380b8ec9fe1126e31346e 100644 (file)
 #define CLK_MOUT_HSI1_USBDRD_USER      3
 #define CLK_MOUT_HSI1_USBDRD           4
 
+/* CMU_HSI2 */
+#define FOUT_PLL_ETH                    1
+#define CLK_MOUT_HSI2_NOC_UFS_USER      2
+#define CLK_MOUT_HSI2_UFS_EMBD_USER     3
+#define CLK_MOUT_HSI2_ETHERNET          4
+#define CLK_MOUT_HSI2_ETHERNET_USER     5
+#define CLK_DOUT_HSI2_ETHERNET          6
+#define CLK_DOUT_HSI2_ETHERNET_PTP      7
+
 #endif /* _DT_BINDINGS_CLOCK_EXYNOSAUTOV920_H */
index 35968ae98246609c889eb4a7d08b4ff7360de53b..2714c3fe66cd5b49e12c8b20689f5b01da36b774 100644 (file)
@@ -78,6 +78,9 @@
 #define CLK_APB                        31
 #define CLK_WDT_BUS            32
 
+/* MPMU resets */
+#define RESET_WDT              0
+
 /* APBC clocks */
 #define CLK_UART0              0
 #define CLK_UART2              1
 #define CLK_TSEN_BUS           98
 #define CLK_IPC_AP2AUD_BUS     99
 
+/* APBC resets */
+#define RESET_UART0            0
+#define RESET_UART2            1
+#define RESET_UART3            2
+#define RESET_UART4            3
+#define RESET_UART5            4
+#define RESET_UART6            5
+#define RESET_UART7            6
+#define RESET_UART8            7
+#define RESET_UART9            8
+#define RESET_GPIO             9
+#define RESET_PWM0             10
+#define RESET_PWM1             11
+#define RESET_PWM2             12
+#define RESET_PWM3             13
+#define RESET_PWM4             14
+#define RESET_PWM5             15
+#define RESET_PWM6             16
+#define RESET_PWM7             17
+#define RESET_PWM8             18
+#define RESET_PWM9             19
+#define RESET_PWM10            20
+#define RESET_PWM11            21
+#define RESET_PWM12            22
+#define RESET_PWM13            23
+#define RESET_PWM14            24
+#define RESET_PWM15            25
+#define RESET_PWM16            26
+#define RESET_PWM17            27
+#define RESET_PWM18            28
+#define RESET_PWM19            29
+#define RESET_SSP3             30
+#define RESET_RTC              31
+#define RESET_TWSI0            32
+#define RESET_TWSI1            33
+#define RESET_TWSI2            34
+#define RESET_TWSI4            35
+#define RESET_TWSI5            36
+#define RESET_TWSI6            37
+#define RESET_TWSI7            38
+#define RESET_TWSI8            39
+#define RESET_TIMERS1          40
+#define RESET_TIMERS2          41
+#define RESET_AIB              42
+#define RESET_ONEWIRE          43
+#define RESET_SSPA0            44
+#define RESET_SSPA1            45
+#define RESET_DRO              46
+#define RESET_IR               47
+#define RESET_TSEN             48
+#define RESET_IPC_AP2AUD       49
+#define RESET_CAN0             50
+
 /* APMU clocks */
 #define CLK_CCI550             0
 #define CLK_CPU_C0_HI          1
 #define CLK_V2D                        60
 #define CLK_EMMC_BUS           61
 
+/* APMU resets */
+#define RESET_CCIC_4X          0
+#define RESET_CCIC1_PHY                1
+#define RESET_SDH_AXI          2
+#define RESET_SDH0             3
+#define RESET_SDH1             4
+#define RESET_SDH2             5
+#define RESET_USBP1_AXI                6
+#define RESET_USB_AXI          7
+#define RESET_USB30_AHB                8
+#define RESET_USB30_VCC                9
+#define RESET_USB30_PHY                10
+#define RESET_QSPI             11
+#define RESET_QSPI_BUS         12
+#define RESET_DMA              13
+#define RESET_AES              14
+#define RESET_VPU              15
+#define RESET_GPU              16
+#define RESET_EMMC             17
+#define RESET_EMMC_X           18
+#define RESET_AUDIO_SYS                19
+#define RESET_AUDIO_MCU                20
+#define RESET_AUDIO_APMU       21
+#define RESET_HDMI             22
+#define RESET_PCIE0_MASTER     23
+#define RESET_PCIE0_SLAVE      24
+#define RESET_PCIE0_DBI                25
+#define RESET_PCIE0_GLOBAL     26
+#define RESET_PCIE1_MASTER     27
+#define RESET_PCIE1_SLAVE      28
+#define RESET_PCIE1_DBI                29
+#define RESET_PCIE1_GLOBAL     30
+#define RESET_PCIE2_MASTER     31
+#define RESET_PCIE2_SLAVE      32
+#define RESET_PCIE2_DBI                33
+#define RESET_PCIE2_GLOBAL     34
+#define RESET_EMAC0            35
+#define RESET_EMAC1            36
+#define RESET_JPG              37
+#define RESET_CCIC2PHY         38
+#define RESET_CCIC3PHY         39
+#define RESET_CSI              40
+#define RESET_ISP_CPP          41
+#define RESET_ISP_BUS          42
+#define RESET_ISP              43
+#define RESET_ISP_CI           44
+#define RESET_DPU_MCLK         45
+#define RESET_DPU_ESC          46
+#define RESET_DPU_HCLK         47
+#define RESET_DPU_SPIBUS       48
+#define RESET_DPU_SPI_HBUS     49
+#define RESET_V2D              50
+#define RESET_MIPI             51
+#define RESET_MC               52
+
+/*     RCPU resets     */
+#define RESET_RCPU_SSP0                0
+#define RESET_RCPU_I2C0                1
+#define RESET_RCPU_UART1       2
+#define RESET_RCPU_IR          3
+#define RESET_RCPU_CAN         4
+#define RESET_RCPU_UART0       5
+#define RESET_RCPU_HDMI_AUDIO  6
+
+/*     RCPU2 resets    */
+#define RESET_RCPU2_PWM0       0
+#define RESET_RCPU2_PWM1       1
+#define RESET_RCPU2_PWM2       2
+#define RESET_RCPU2_PWM3       3
+#define RESET_RCPU2_PWM4       4
+#define RESET_RCPU2_PWM5       5
+#define RESET_RCPU2_PWM6       6
+#define RESET_RCPU2_PWM7       7
+#define RESET_RCPU2_PWM8       8
+#define RESET_RCPU2_PWM9       9
+
+/*     APBC2 resets    */
+#define RESET_APBC2_UART1      0
+#define RESET_APBC2_SSP2       1
+#define RESET_APBC2_TWSI3      2
+#define RESET_APBC2_RTC                3
+#define RESET_APBC2_TIMERS0    4
+#define RESET_APBC2_KPC                5
+#define RESET_APBC2_GPIO       6
+
 #endif /* _DT_BINDINGS_SPACEMIT_CCU_H_ */
diff --git a/include/dt-bindings/iio/adc/adi,ad7768-1.h b/include/dt-bindings/iio/adc/adi,ad7768-1.h
new file mode 100644 (file)
index 0000000..34d9285
--- /dev/null
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+
+#ifndef _DT_BINDINGS_ADI_AD7768_1_H
+#define _DT_BINDINGS_ADI_AD7768_1_H
+
+#define AD7768_TRIGGER_SOURCE_SYNC_OUT  0
+#define AD7768_TRIGGER_SOURCE_GPIO3     1
+#define AD7768_TRIGGER_SOURCE_DRDY      2
+
+#endif /* _DT_BINDINGS_ADI_AD7768_1_H */
diff --git a/include/dt-bindings/iio/adc/mediatek,mt6363-auxadc.h b/include/dt-bindings/iio/adc/mediatek,mt6363-auxadc.h
new file mode 100644 (file)
index 0000000..92d1354
--- /dev/null
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+
+#ifndef _DT_BINDINGS_MEDIATEK_MT6363_AUXADC_H
+#define _DT_BINDINGS_MEDIATEK_MT6363_AUXADC_H
+
+/* ADC Channel Index */
+#define MT6363_AUXADC_BATADC           0
+#define MT6363_AUXADC_VCDT             1
+#define MT6363_AUXADC_BAT_TEMP         2
+#define MT6363_AUXADC_CHIP_TEMP                3
+#define MT6363_AUXADC_VSYSSNS          4
+#define MT6363_AUXADC_VTREF            5
+#define MT6363_AUXADC_VCORE_TEMP       6
+#define MT6363_AUXADC_VPROC_TEMP       7
+#define MT6363_AUXADC_VGPU_TEMP                8
+#define MT6363_AUXADC_VIN1             9
+#define MT6363_AUXADC_VIN2             10
+#define MT6363_AUXADC_VIN3             11
+#define MT6363_AUXADC_VIN4             12
+#define MT6363_AUXADC_VIN5             13
+#define MT6363_AUXADC_VIN6             14
+#define MT6363_AUXADC_VIN7             15
+
+#endif
diff --git a/include/dt-bindings/iio/adc/mediatek,mt6373-auxadc.h b/include/dt-bindings/iio/adc/mediatek,mt6373-auxadc.h
new file mode 100644 (file)
index 0000000..17cab86
--- /dev/null
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+
+#ifndef _DT_BINDINGS_MEDIATEK_MT6373_AUXADC_H
+#define _DT_BINDINGS_MEDIATEK_MT6373_AUXADC_H
+
+/* ADC Channel Index */
+#define MT6373_AUXADC_CHIP_TEMP                0
+#define MT6373_AUXADC_VCORE_TEMP       1
+#define MT6373_AUXADC_VPROC_TEMP       2
+#define MT6373_AUXADC_VGPU_TEMP                3
+#define MT6373_AUXADC_VIN1             4
+#define MT6373_AUXADC_VIN2             5
+#define MT6373_AUXADC_VIN3             6
+#define MT6373_AUXADC_VIN4             7
+#define MT6373_AUXADC_VIN5             8
+#define MT6373_AUXADC_VIN6             9
+#define MT6373_AUXADC_VIN7             10
+
+#endif
index 3b2524e4b667d1e7cc02ff5cb674e7c2ac069a66..ca5851e97fac074a889e9ef3735cc543a0bba442 100644 (file)
 #define BTN_DPAD_LEFT          0x222
 #define BTN_DPAD_RIGHT         0x223
 
+#define BTN_GRIPL              0x224
+#define BTN_GRIPR              0x225
+#define BTN_GRIPL2             0x226
+#define BTN_GRIPR2             0x227
+
 #define KEY_ALS_TOGGLE         0x230   /* Ambient light sensor */
 #define KEY_ROTATE_LOCK_TOGGLE 0x231   /* Display rotation lock */
 #define KEY_REFRESH_RATE_TOGGLE        0x232   /* Display refresh rate toggle */
 #define KEY_KBD_LCD_MENU4              0x2bb
 #define KEY_KBD_LCD_MENU5              0x2bc
 
+/* Performance Boost key (Alienware)/G-Mode key (Dell) */
+#define KEY_PERFORMANCE                        0x2bd
+
 #define BTN_TRIGGER_HAPPY              0x2c0
 #define BTN_TRIGGER_HAPPY1             0x2c0
 #define BTN_TRIGGER_HAPPY2             0x2c1
diff --git a/include/dt-bindings/interconnect/qcom,milos-rpmh.h b/include/dt-bindings/interconnect/qcom,milos-rpmh.h
new file mode 100644 (file)
index 0000000..9326d7d
--- /dev/null
@@ -0,0 +1,141 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2023-2024, Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025, Luca Weiss <luca.weiss@fairphone.com>
+ */
+
+#ifndef __DT_BINDINGS_INTERCONNECT_QCOM_MILOS_H
+#define __DT_BINDINGS_INTERCONNECT_QCOM_MILOS_H
+
+#define MASTER_QUP_1                           0
+#define MASTER_UFS_MEM                         1
+#define MASTER_USB3_0                          2
+#define SLAVE_A1NOC_SNOC                       3
+
+#define MASTER_QDSS_BAM                                0
+#define MASTER_QSPI_0                          1
+#define MASTER_QUP_0                           2
+#define MASTER_CRYPTO                          3
+#define MASTER_IPA                             4
+#define MASTER_QDSS_ETR                                5
+#define MASTER_QDSS_ETR_1                      6
+#define MASTER_SDCC_1                          7
+#define MASTER_SDCC_2                          8
+#define SLAVE_A2NOC_SNOC                       9
+
+#define MASTER_QUP_CORE_0                      0
+#define MASTER_QUP_CORE_1                      1
+#define SLAVE_QUP_CORE_0                       2
+#define SLAVE_QUP_CORE_1                       3
+
+#define MASTER_CNOC_CFG                                0
+#define SLAVE_AHB2PHY_SOUTH                    1
+#define SLAVE_AHB2PHY_NORTH                    2
+#define SLAVE_CAMERA_CFG                       3
+#define SLAVE_CLK_CTL                          4
+#define SLAVE_RBCPR_CX_CFG                     5
+#define SLAVE_RBCPR_MXA_CFG                    6
+#define SLAVE_CRYPTO_0_CFG                     7
+#define SLAVE_CX_RDPM                          8
+#define SLAVE_GFX3D_CFG                                9
+#define SLAVE_IMEM_CFG                         10
+#define SLAVE_CNOC_MSS                         11
+#define SLAVE_MX_2_RDPM                                12
+#define SLAVE_MX_RDPM                          13
+#define SLAVE_PDM                              14
+#define SLAVE_QDSS_CFG                         15
+#define SLAVE_QSPI_0                           16
+#define SLAVE_QUP_0                            17
+#define SLAVE_QUP_1                            18
+#define SLAVE_SDC1                             19
+#define SLAVE_SDCC_2                           20
+#define SLAVE_TCSR                             21
+#define SLAVE_TLMM                             22
+#define SLAVE_UFS_MEM_CFG                      23
+#define SLAVE_USB3_0                           24
+#define SLAVE_VENUS_CFG                                25
+#define SLAVE_VSENSE_CTRL_CFG                  26
+#define SLAVE_WLAN                             27
+#define SLAVE_CNOC_MNOC_HF_CFG                 28
+#define SLAVE_CNOC_MNOC_SF_CFG                 29
+#define SLAVE_NSP_QTB_CFG                      30
+#define SLAVE_PCIE_ANOC_CFG                    31
+#define SLAVE_WLAN_Q6_THROTTLE_CFG             32
+#define SLAVE_SERVICE_CNOC_CFG                 33
+#define SLAVE_QDSS_STM                         34
+#define SLAVE_TCU                              35
+
+#define MASTER_GEM_NOC_CNOC                    0
+#define MASTER_GEM_NOC_PCIE_SNOC               1
+#define SLAVE_AOSS                             2
+#define SLAVE_DISPLAY_CFG                      3
+#define SLAVE_IPA_CFG                          4
+#define SLAVE_IPC_ROUTER_CFG                   5
+#define SLAVE_PCIE_0_CFG                       6
+#define SLAVE_PCIE_1_CFG                       7
+#define SLAVE_PRNG                             8
+#define SLAVE_TME_CFG                          9
+#define SLAVE_APPSS                            10
+#define SLAVE_CNOC_CFG                         11
+#define SLAVE_DDRSS_CFG                                12
+#define SLAVE_IMEM                             13
+#define SLAVE_PIMEM                            14
+#define SLAVE_SERVICE_CNOC                     15
+#define SLAVE_PCIE_0                           16
+#define SLAVE_PCIE_1                           17
+
+#define MASTER_GPU_TCU                         0
+#define MASTER_SYS_TCU                         1
+#define MASTER_APPSS_PROC                      2
+#define MASTER_GFX3D                           3
+#define MASTER_LPASS_GEM_NOC                   4
+#define MASTER_MSS_PROC                                5
+#define MASTER_MNOC_HF_MEM_NOC                 6
+#define MASTER_MNOC_SF_MEM_NOC                 7
+#define MASTER_COMPUTE_NOC                     8
+#define MASTER_ANOC_PCIE_GEM_NOC               9
+#define MASTER_SNOC_GC_MEM_NOC                 10
+#define MASTER_SNOC_SF_MEM_NOC                 11
+#define MASTER_WLAN_Q6                         12
+#define SLAVE_GEM_NOC_CNOC                     13
+#define SLAVE_LLCC                             14
+#define SLAVE_MEM_NOC_PCIE_SNOC                        15
+
+#define MASTER_LPASS_PROC                      0
+#define SLAVE_LPASS_GEM_NOC                    1
+
+#define MASTER_LLCC                            0
+#define SLAVE_EBI1                             1
+
+#define MASTER_CAMNOC_HF                       0
+#define MASTER_CAMNOC_ICP                      1
+#define MASTER_CAMNOC_SF                       2
+#define MASTER_MDP                             3
+#define MASTER_VIDEO                           4
+#define MASTER_CNOC_MNOC_HF_CFG                        5
+#define MASTER_CNOC_MNOC_SF_CFG                        6
+#define SLAVE_MNOC_HF_MEM_NOC                  7
+#define SLAVE_MNOC_SF_MEM_NOC                  8
+#define SLAVE_SERVICE_MNOC_HF                  9
+#define SLAVE_SERVICE_MNOC_SF                  10
+
+#define MASTER_CDSP_PROC                       0
+#define SLAVE_CDSP_MEM_NOC                     1
+
+#define MASTER_PCIE_ANOC_CFG                   0
+#define MASTER_PCIE_0                          1
+#define MASTER_PCIE_1                          2
+#define SLAVE_ANOC_PCIE_GEM_NOC                        3
+#define SLAVE_SERVICE_PCIE_ANOC                        4
+
+#define MASTER_A1NOC_SNOC                      0
+#define MASTER_A2NOC_SNOC                      1
+#define MASTER_APSS_NOC                                2
+#define MASTER_CNOC_SNOC                       3
+#define MASTER_PIMEM                           4
+#define MASTER_GIC                             5
+#define SLAVE_SNOC_GEM_NOC_GC                  6
+#define SLAVE_SNOC_GEM_NOC_SF                  7
+
+
+#endif
diff --git a/include/dt-bindings/memory/nvidia,tegra264.h b/include/dt-bindings/memory/nvidia,tegra264.h
new file mode 100644 (file)
index 0000000..521405c
--- /dev/null
@@ -0,0 +1,136 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/* Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. */
+
+#ifndef DT_BINDINGS_MEMORY_NVIDIA_TEGRA264_H
+#define DT_BINDINGS_MEMORY_NVIDIA_TEGRA264_H
+
+#define TEGRA264_SID(x) ((x) << 8)
+
+/*
+ * SMMU stream IDs
+ */
+
+#define TEGRA264_SID_AON       TEGRA264_SID(0x01)
+#define TEGRA264_SID_APE       TEGRA264_SID(0x02)
+#define TEGRA264_SID_ETR       TEGRA264_SID(0x03)
+#define TEGRA264_SID_BPMP      TEGRA264_SID(0x04)
+#define TEGRA264_SID_DCE       TEGRA264_SID(0x05)
+#define TEGRA264_SID_EQOS      TEGRA264_SID(0x06)
+#define TEGRA264_SID_GPCDMA    TEGRA264_SID(0x08)
+#define TEGRA264_SID_DISP      TEGRA264_SID(0x09)
+#define TEGRA264_SID_HDA       TEGRA264_SID(0x0a)
+#define TEGRA264_SID_HOST1X    TEGRA264_SID(0x0b)
+#define TEGRA264_SID_ISP0      TEGRA264_SID(0x0c)
+#define TEGRA264_SID_ISP1      TEGRA264_SID(0x0d)
+#define TEGRA264_SID_PMA0      TEGRA264_SID(0x0e)
+#define TEGRA264_SID_FSI0      TEGRA264_SID(0x0f)
+#define TEGRA264_SID_FSI1      TEGRA264_SID(0x10)
+#define TEGRA264_SID_PVA       TEGRA264_SID(0x11)
+#define TEGRA264_SID_SDMMC0    TEGRA264_SID(0x12)
+#define TEGRA264_SID_MGBE0     TEGRA264_SID(0x13)
+#define TEGRA264_SID_MGBE1     TEGRA264_SID(0x14)
+#define TEGRA264_SID_MGBE2     TEGRA264_SID(0x15)
+#define TEGRA264_SID_MGBE3     TEGRA264_SID(0x16)
+#define TEGRA264_SID_MSSSEQ    TEGRA264_SID(0x17)
+#define TEGRA264_SID_SE        TEGRA264_SID(0x18)
+#define TEGRA264_SID_SEU1      TEGRA264_SID(0x19)
+#define TEGRA264_SID_SEU2      TEGRA264_SID(0x1a)
+#define TEGRA264_SID_SEU3      TEGRA264_SID(0x1b)
+#define TEGRA264_SID_PSC       TEGRA264_SID(0x1c)
+#define TEGRA264_SID_OESP      TEGRA264_SID(0x23)
+#define TEGRA264_SID_SB        TEGRA264_SID(0x24)
+#define TEGRA264_SID_XSPI0     TEGRA264_SID(0x25)
+#define TEGRA264_SID_TSEC      TEGRA264_SID(0x29)
+#define TEGRA264_SID_UFS       TEGRA264_SID(0x2a)
+#define TEGRA264_SID_RCE       TEGRA264_SID(0x2b)
+#define TEGRA264_SID_RCE1      TEGRA264_SID(0x2c)
+#define TEGRA264_SID_VI        TEGRA264_SID(0x2e)
+#define TEGRA264_SID_VI1       TEGRA264_SID(0x2f)
+#define TEGRA264_SID_VIC       TEGRA264_SID(0x30)
+#define TEGRA264_SID_XUSB_DEV  TEGRA264_SID(0x32)
+#define TEGRA264_SID_XUSB_DEV1 TEGRA264_SID(0x33)
+#define TEGRA264_SID_XUSB_DEV2 TEGRA264_SID(0x34)
+#define TEGRA264_SID_XUSB_DEV3 TEGRA264_SID(0x35)
+#define TEGRA264_SID_XUSB_DEV4 TEGRA264_SID(0x36)
+#define TEGRA264_SID_XUSB_DEV5 TEGRA264_SID(0x37)
+
+/*
+ * memory client IDs
+ */
+
+/* HOST1X read client */
+#define TEGRA264_MEMORY_CLIENT_HOST1XR         0x16
+/* VIC read client */
+#define TEGRA264_MEMORY_CLIENT_VICR            0x6c
+/* VIC Write client */
+#define TEGRA264_MEMORY_CLIENT_VICW            0x6d
+/* VI R5 Write client */
+#define TEGRA264_MEMORY_CLIENT_VIW             0x72
+#define TEGRA264_MEMORY_CLIENT_NVDECSRD2MC     0x78
+#define TEGRA264_MEMORY_CLIENT_NVDECSWR2MC     0x79
+/* Audio processor(APE) Read client */
+#define TEGRA264_MEMORY_CLIENT_APER            0x7a
+/* Audio processor(APE) Write client */
+#define TEGRA264_MEMORY_CLIENT_APEW            0x7b
+/* Audio DMA Read client */
+#define TEGRA264_MEMORY_CLIENT_APEDMAR         0x9f
+/* Audio DMA Write client */
+#define TEGRA264_MEMORY_CLIENT_APEDMAW         0xa0
+#define TEGRA264_MEMORY_CLIENT_GPUR02MC                0xb6
+#define TEGRA264_MEMORY_CLIENT_GPUW02MC                0xb7
+/* VI Falcon Read client */
+#define TEGRA264_MEMORY_CLIENT_VIFALCONR       0xbc
+/* VI Falcon Write client */
+#define TEGRA264_MEMORY_CLIENT_VIFALCONW       0xbd
+/* Read Client of RCE */
+#define TEGRA264_MEMORY_CLIENT_RCER            0xd2
+/* Write client of RCE */
+#define TEGRA264_MEMORY_CLIENT_RCEW            0xd3
+/* PCIE0/MSI Write clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE0W          0xd9
+/* PCIE1/RPX4 Read clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE1R          0xda
+/* PCIE1/RPX4 Write clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE1W          0xdb
+/* PCIE2/DMX4 Read clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE2AR         0xdc
+/* PCIE2/DMX4 Write clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE2AW         0xdd
+/* PCIE3/RPX4 Read clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE3R          0xde
+/* PCIE3/RPX4 Write clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE3W          0xdf
+/* PCIE4/DMX8 Read clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE4R          0xe0
+/* PCIE4/DMX8 Write clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE4W          0xe1
+/* PCIE5/DMX4 Read clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE5R          0xe2
+/* PCIE5/DMX4 Write clients */
+#define TEGRA264_MEMORY_CLIENT_PCIE5W          0xe3
+/* UFS Read client */
+#define TEGRA264_MEMORY_CLIENT_UFSR            0x15c
+/* UFS write client */
+#define TEGRA264_MEMORY_CLIENT_UFSW            0x15d
+/* HDA Read client */
+#define TEGRA264_MEMORY_CLIENT_HDAR            0x17c
+/* HDA Write client */
+#define TEGRA264_MEMORY_CLIENT_HDAW            0x17d
+/* Disp ISO Read Client */
+#define TEGRA264_MEMORY_CLIENT_DISPR           0x182
+/* MGBE0 Read mccif */
+#define TEGRA264_MEMORY_CLIENT_MGBE0R          0x1a2
+/* MGBE0 Write mccif */
+#define TEGRA264_MEMORY_CLIENT_MGBE0W          0x1a3
+/* MGBE1 Read mccif */
+#define TEGRA264_MEMORY_CLIENT_MGBE1R          0x1a4
+/* MGBE1 Write mccif */
+#define TEGRA264_MEMORY_CLIENT_MGBE1W          0x1a5
+/* VI1 R5 Write client */
+#define TEGRA264_MEMORY_CLIENT_VI1W            0x1a6
+/* SDMMC0 Read mccif */
+#define TEGRA264_MEMORY_CLIENT_SDMMC0R         0x1c2
+/* SDMMC0 Write mccif */
+#define TEGRA264_MEMORY_CLIENT_SDMMC0W         0x1c3
+
+#endif /* DT_BINDINGS_MEMORY_NVIDIA_TEGRA264_H */
index 28ad0235086a6b036c40245b3a796b46910a307f..af3fd388329a0a6da496fb2e3805a8356a45effb 100644 (file)
@@ -26,6 +26,7 @@
 #define AF14   0xf
 #define AF15   0x10
 #define ANALOG 0x11
+#define RSVD   0x12
 
 /* define Pins number*/
 #define PIN_NO(port, line)     (((port) - 'A') * 0x10 + (line))
diff --git a/include/dt-bindings/power/allwinner,sun55i-a523-pck-600.h b/include/dt-bindings/power/allwinner,sun55i-a523-pck-600.h
new file mode 100644 (file)
index 0000000..6b3d8ea
--- /dev/null
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+
+#ifndef _DT_BINDINGS_POWER_SUN55I_A523_PCK600_H_
+#define _DT_BINDINGS_POWER_SUN55I_A523_PCK600_H_
+
+#define PD_VE                  0
+#define PD_GPU                 1
+#define PD_VI                  2
+#define PD_VO0                 3
+#define PD_VO1                 4
+#define PD_DE                  5
+#define PD_NAND                        6
+#define PD_PCIE                        7
+
+#endif /* _DT_BINDINGS_POWER_SUN55I_A523_PCK600_H_ */
diff --git a/include/dt-bindings/power/allwinner,sun55i-a523-ppu.h b/include/dt-bindings/power/allwinner,sun55i-a523-ppu.h
new file mode 100644 (file)
index 0000000..bc9aba7
--- /dev/null
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+
+#ifndef _DT_BINDINGS_POWER_SUN55I_A523_PPU_H_
+#define _DT_BINDINGS_POWER_SUN55I_A523_PPU_H_
+
+#define PD_DSP                 0
+#define PD_NPU                 1
+#define PD_AUDIO               2
+#define PD_SRAM                        3
+#define PD_RISCV               4
+
+#endif /* _DT_BINDINGS_POWER_SUN55I_A523_PPU_H_ */
index d9b7bac309537cbfd2488e7d4fe21d195c919ef5..f15bcee7c9283e74dc8e6f9b6b6f73c0ced009e4 100644 (file)
 #define RPMH_REGULATOR_LEVEL_TURBO_L2          432
 #define RPMH_REGULATOR_LEVEL_TURBO_L3          448
 #define RPMH_REGULATOR_LEVEL_TURBO_L4          452
+#define RPMH_REGULATOR_LEVEL_TURBO_L5          456
 #define RPMH_REGULATOR_LEVEL_SUPER_TURBO       464
 #define RPMH_REGULATOR_LEVEL_SUPER_TURBO_NO_CPR        480
 
diff --git a/include/dt-bindings/power/rockchip,rk3528-power.h b/include/dt-bindings/power/rockchip,rk3528-power.h
new file mode 100644 (file)
index 0000000..318923c
--- /dev/null
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
+#ifndef __DT_BINDINGS_POWER_RK3528_POWER_H__
+#define __DT_BINDINGS_POWER_RK3528_POWER_H__
+
+#define RK3528_PD_PMU          0
+#define RK3528_PD_BUS          1
+#define RK3528_PD_DDR          2
+#define RK3528_PD_MSCH         3
+
+/* VD_GPU */
+#define RK3528_PD_GPU          4
+
+/* VD_LOGIC */
+#define RK3528_PD_RKVDEC       5
+#define RK3528_PD_RKVENC       6
+#define RK3528_PD_VO           7
+#define RK3528_PD_VPU          8
+
+#endif
diff --git a/include/dt-bindings/regulator/nxp,pca9450-regulator.h b/include/dt-bindings/regulator/nxp,pca9450-regulator.h
new file mode 100644 (file)
index 0000000..08434ca
--- /dev/null
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Device Tree binding constants for the NXP PCA9450A/B/C PMIC regulators
+ */
+
+#ifndef _DT_BINDINGS_REGULATORS_NXP_PCA9450_H
+#define _DT_BINDINGS_REGULATORS_NXP_PCA9450_H
+
+/*
+ * Buck mode constants which may be used in devicetree properties (eg.
+ * regulator-initial-mode, regulator-allowed-modes).
+ * See the manufacturer's datasheet for more information on these modes.
+ */
+
+#define PCA9450_BUCK_MODE_AUTO         0
+#define PCA9450_BUCK_MODE_FORCE_PWM    1
+
+#endif
diff --git a/include/dt-bindings/regulator/st,stm32mp15-regulator.h b/include/dt-bindings/regulator/st,stm32mp15-regulator.h
new file mode 100644 (file)
index 0000000..7052507
--- /dev/null
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (C) 2025, STMicroelectronics - All Rights Reserved
+ */
+
+#ifndef __DT_BINDINGS_REGULATOR_ST_STM32MP15_REGULATOR_H
+#define __DT_BINDINGS_REGULATOR_ST_STM32MP15_REGULATOR_H
+
+/* SCMI voltage domain identifiers */
+
+/* SOC Internal regulators */
+#define VOLTD_SCMI_REG11               0
+#define VOLTD_SCMI_REG18               1
+#define VOLTD_SCMI_USB33               2
+
+/* STPMIC1 regulators */
+#define VOLTD_SCMI_STPMIC1_BUCK1       3
+#define VOLTD_SCMI_STPMIC1_BUCK2       4
+#define VOLTD_SCMI_STPMIC1_BUCK3       5
+#define VOLTD_SCMI_STPMIC1_BUCK4       6
+#define VOLTD_SCMI_STPMIC1_LDO1                7
+#define VOLTD_SCMI_STPMIC1_LDO2                8
+#define VOLTD_SCMI_STPMIC1_LDO3                9
+#define VOLTD_SCMI_STPMIC1_LDO4                10
+#define VOLTD_SCMI_STPMIC1_LDO5                11
+#define VOLTD_SCMI_STPMIC1_LDO6                12
+#define VOLTD_SCMI_STPMIC1_VREFDDR     13
+#define VOLTD_SCMI_STPMIC1_BOOST       14
+#define VOLTD_SCMI_STPMIC1_PWR_SW1     15
+#define VOLTD_SCMI_STPMIC1_PWR_SW2     16
+#define VOLTD_SCMI_VREFBUF             17
+
+/* External regulators */
+#define VOLTD_SCMI_REGU0               18
+#define VOLTD_SCMI_REGU1               19
+#define VOLTD_SCMI_REGU2               20
+#define VOLTD_SCMI_REGU3               21
+#define VOLTD_SCMI_REGU4               22
+
+#endif /*__DT_BINDINGS_REGULATOR_ST_STM32MP15_REGULATOR_H */
diff --git a/include/dt-bindings/reset/canaan,k230-rst.h b/include/dt-bindings/reset/canaan,k230-rst.h
new file mode 100644 (file)
index 0000000..e4f6612
--- /dev/null
@@ -0,0 +1,90 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (C) 2023-2024 Canaan Bright Sight Co., Ltd
+ * Copyright (C) 2024-2025 Junhui Liu <junhui.liu@pigmoral.tech>
+ */
+#ifndef _DT_BINDINGS_CANAAN_K230_RST_H_
+#define _DT_BINDINGS_CANAAN_K230_RST_H_
+
+#define RST_CPU0               0
+#define RST_CPU1               1
+#define RST_CPU0_FLUSH         2
+#define RST_CPU1_FLUSH         3
+#define RST_AI                 4
+#define RST_VPU                        5
+#define RST_HISYS              6
+#define RST_HISYS_AHB          7
+#define RST_SDIO0              8
+#define RST_SDIO1              9
+#define RST_SDIO_AXI           10
+#define RST_USB0               11
+#define RST_USB1               12
+#define RST_USB0_AHB           13
+#define RST_USB1_AHB           14
+#define RST_SPI0               15
+#define RST_SPI1               16
+#define RST_SPI2               17
+#define RST_SEC                        18
+#define RST_PDMA               19
+#define RST_SDMA               20
+#define RST_DECOMPRESS         21
+#define RST_SRAM               22
+#define RST_SHRM_AXIM          23
+#define RST_SHRM_AXIS          24
+#define RST_NONAI2D            25
+#define RST_MCTL               26
+#define RST_ISP                        27
+#define RST_ISP_DW             28
+#define RST_DPU                        29
+#define RST_DISP               30
+#define RST_GPU                        31
+#define RST_AUDIO              32
+#define RST_TIMER0             33
+#define RST_TIMER1             34
+#define RST_TIMER2             35
+#define RST_TIMER3             36
+#define RST_TIMER4             37
+#define RST_TIMER5             38
+#define RST_TIMER_APB          39
+#define RST_HDI                        40
+#define RST_WDT0               41
+#define RST_WDT1               42
+#define RST_WDT0_APB           43
+#define RST_WDT1_APB           44
+#define RST_TS_APB             45
+#define RST_MAILBOX            46
+#define RST_STC                        47
+#define RST_PMU                        48
+#define RST_LOSYS_APB          49
+#define RST_UART0              50
+#define RST_UART1              51
+#define RST_UART2              52
+#define RST_UART3              53
+#define RST_UART4              54
+#define RST_I2C0               55
+#define RST_I2C1               56
+#define RST_I2C2               57
+#define RST_I2C3               58
+#define RST_I2C4               59
+#define RST_JAMLINK0_APB       60
+#define RST_JAMLINK1_APB       61
+#define RST_JAMLINK2_APB       62
+#define RST_JAMLINK3_APB       63
+#define RST_CODEC_APB          64
+#define RST_GPIO_DB            65
+#define RST_GPIO_APB           66
+#define RST_ADC                        67
+#define RST_ADC_APB            68
+#define RST_PWM_APB            69
+#define RST_SHRM_APB           70
+#define RST_CSI0               71
+#define RST_CSI1               72
+#define RST_CSI2               73
+#define RST_CSI_DPHY           74
+#define RST_ISP_AHB            75
+#define RST_M0                 76
+#define RST_M1                 77
+#define RST_M2                 78
+#define RST_SPI2AXI            79
+
+#endif
diff --git a/include/dt-bindings/reset/nvidia,tegra264.h b/include/dt-bindings/reset/nvidia,tegra264.h
new file mode 100644 (file)
index 0000000..a61a56b
--- /dev/null
@@ -0,0 +1,92 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/* Copyright (c) 2022-2025, NVIDIA CORPORATION. All rights reserved. */
+
+#ifndef DT_BINDINGS_RESET_NVIDIA_TEGRA264_H
+#define DT_BINDINGS_RESET_NVIDIA_TEGRA264_H
+
+#define TEGRA264_RESET_APE_TKE                 1
+#define TEGRA264_RESET_CEC                     2
+#define TEGRA264_RESET_ADSP_ALL                        3
+#define TEGRA264_RESET_RCE_ALL                 4
+#define TEGRA264_RESET_UFSHC                   5
+#define TEGRA264_RESET_UFSHC_AXI_M             6
+#define TEGRA264_RESET_UFSHC_LP_SEQ            7
+#define TEGRA264_RESET_DPAUX                   8
+#define TEGRA264_RESET_EQOS_PCS                        9
+#define TEGRA264_RESET_HWPM                    10
+#define TEGRA264_RESET_I2C1                    11
+#define TEGRA264_RESET_I2C2                    12
+#define TEGRA264_RESET_I2C3                    13
+#define TEGRA264_RESET_I2C4                    14
+#define TEGRA264_RESET_I2C6                    15
+#define TEGRA264_RESET_I2C7                    16
+#define TEGRA264_RESET_I2C8                    17
+#define TEGRA264_RESET_I2C9                    18
+#define TEGRA264_RESET_ISP                     19
+#define TEGRA264_RESET_LA                      20
+#define TEGRA264_RESET_NVCSI                   21
+#define TEGRA264_RESET_EQOS_MAC                        22
+#define TEGRA264_RESET_PWM10                   23
+#define TEGRA264_RESET_PWM2                    24
+#define TEGRA264_RESET_PWM3                    25
+#define TEGRA264_RESET_PWM4                    26
+#define TEGRA264_RESET_PWM5                    27
+#define TEGRA264_RESET_PWM9                    28
+#define TEGRA264_RESET_QSPI0                   29
+#define TEGRA264_RESET_HDA                     30
+#define TEGRA264_RESET_HDACODEC                        31
+#define TEGRA264_RESET_I2C0                    32
+#define TEGRA264_RESET_I2C10                   33
+#define TEGRA264_RESET_SDMMC1                  34
+#define TEGRA264_RESET_MIPI_CAL                        35
+#define TEGRA264_RESET_SPI1                    36
+#define TEGRA264_RESET_SPI2                    37
+#define TEGRA264_RESET_SPI3                    38
+#define TEGRA264_RESET_SPI4                    39
+#define TEGRA264_RESET_SPI5                    40
+#define TEGRA264_RESET_SPI7                    41
+#define TEGRA264_RESET_SPI8                    42
+#define TEGRA264_RESET_SPI9                    43
+#define TEGRA264_RESET_TACH0                   44
+#define TEGRA264_RESET_TSEC                    45
+#define TEGRA264_RESET_VI                      46
+#define TEGRA264_RESET_VI1                     47
+#define TEGRA264_RESET_PVA0_ALL                        48
+#define TEGRA264_RESET_VIC                     49
+#define TEGRA264_RESET_MPHY_CLK_CTL            50
+#define TEGRA264_RESET_MPHY_L0_RX              51
+#define TEGRA264_RESET_MPHY_L0_TX              52
+#define TEGRA264_RESET_MPHY_L1_RX              53
+#define TEGRA264_RESET_MPHY_L1_TX              54
+#define TEGRA264_RESET_ISP1                    55
+#define TEGRA264_RESET_I2C11                   56
+#define TEGRA264_RESET_I2C12                   57
+#define TEGRA264_RESET_I2C14                   58
+#define TEGRA264_RESET_I2C15                   59
+#define TEGRA264_RESET_I2C16                   60
+#define TEGRA264_RESET_EQOS_MACSEC             61
+#define TEGRA264_RESET_MGBE0_PCS               62
+#define TEGRA264_RESET_MGBE0_MAC               63
+#define TEGRA264_RESET_MGBE0_MACSEC            64
+#define TEGRA264_RESET_MGBE1_PCS               65
+#define TEGRA264_RESET_MGBE1_MAC               66
+#define TEGRA264_RESET_MGBE1_MACSEC            67
+#define TEGRA264_RESET_MGBE2_PCS               68
+#define TEGRA264_RESET_MGBE2_MAC               69
+#define TEGRA264_RESET_MGBE2_MACSEC            70
+#define TEGRA264_RESET_MGBE3_PCS               71
+#define TEGRA264_RESET_MGBE3_MAC               72
+#define TEGRA264_RESET_MGBE3_MACSEC            73
+#define TEGRA264_RESET_ADSP_CORE0              74
+#define TEGRA264_RESET_ADSP_CORE1              75
+#define TEGRA264_RESET_APE                     76
+#define TEGRA264_RESET_XUSB1_PADCTL            77
+#define TEGRA264_RESET_AON_CPU_ALL             78
+#define TEGRA264_RESET_AON_HSP                 79
+#define TEGRA264_RESET_UART4                   80
+#define TEGRA264_RESET_UART5                   81
+#define TEGRA264_RESET_UART9                   82
+#define TEGRA264_RESET_UART10                  83
+#define TEGRA264_RESET_UART8                   84
+
+#endif /* DT_BINDINGS_RESET_NVIDIA_TEGRA264_H */
index dd6fbb372e19039e6998d39d738807821cc1406e..eb31ae9958d66fb303dd2396a5e15085503f8bda 100644 (file)
@@ -21,5 +21,6 @@
 #define RST_BUS_R_IR_RX                12
 #define RST_BUS_R_RTC          13
 #define RST_BUS_R_CPUCFG       14
+#define RST_BUS_R_PPU0         15
 
 #endif /* _DT_BINDINGS_RST_SUN55I_A523_R_CCU_H_ */
index 83d283cf66334f11b8b6190b485538301b7df068..d425d9ee83db0e400c5a3bea7a4a08b88d4bb7a5 100644 (file)
 &usbphy {
        usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
        usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH5 */
-       usb0_vbus-supply   = <&reg_usb0_vbus>;
+       usb0_vbus-supply = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_usb1_vbus>;
        usb2_vbus-supply = <&reg_usb2_vbus>;
        status = "okay";
index 272584881bb214a201ad6b07715258e18d303439..a0f787581dd902de818c21bc4c9402f65ffa6d1a 100644 (file)
@@ -82,7 +82,7 @@
 };
 
 &ehci0 {
-       status  = "okay";
+       status = "okay";
 };
 
 &mmc1 {
index fa162f7fa9f01166cc59a74c366d4c1374afc958..f0ed802a9d08e622c2b459f0bce376423c175b9c 100644 (file)
                        };
 
                        /omit-if-no-ref/
-                       uart2_rts_cts_pi_pins: uart2-rts-cts-pi-pins{
+                       uart2_rts_cts_pi_pins: uart2-rts-cts-pi-pins {
                                pins = "PI16", "PI17";
                                function = "uart2";
                        };
index 186c30cbe6ee8b13b180eb9f4808f63e29c5261b..95bd0b616349edf32433180754c62c4d38ec0591 100644 (file)
                function = "i2s";
        };
 
+       /omit-if-no-ref/
+       lcd_rgb666_pd_pins: lcd-rgb666-pd-pins {
+               pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5",
+                      "PD6", "PD7", "PD8", "PD9", "PD10", "PD11",
+                      "PD12", "PD13", "PD14", "PD15", "PD16", "PD17",
+                      "PD18", "PD19", "PD20", "PD21";
+               function = "lcd";
+       };
+
        uart1_pg_pins: uart1-pg-pins {
                pins = "PG6", "PG7";
                function = "uart1";
index 5143cb4e7b787a5bd47b5f1703447c7d6089df31..cb6292319f39d7f620e72ee0f8fc3d64dc8be9ef 100644 (file)
@@ -29,7 +29,7 @@
        clk_can0: clock-can0 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
-               clock-frequency  = <40000000>;
+               clock-frequency = <40000000>;
        };
 
        gpio-keys {
index e82cf312da256ca4b9ef1af581f1946c02526822..fa54510319acf353bba79e1941d3a2aa1f85f19e 100644 (file)
                                function = "i2c1";
                        };
 
+                       /omit-if-no-ref/
+                       lcd_rgb666_pe_pins: lcd-rgb666-pe-pins {
+                               pins = "PE0", "PE1", "PE2", "PE3", "PE4", "PE5",
+                                      "PE6", "PE7", "PE8", "PE9", "PE10", "PE11",
+                                      "PE12", "PE13", "PE14", "PE15", "PE16", "PE17",
+                                      "PE18", "PE19", "PE23", "PE24";
+                               function = "lcd";
+                       };
+
                        uart0_pb_pins: uart0-pb-pins {
                                pins = "PB8", "PB9";
                                function = "uart0";
index 31c5d319aa0a9f2a3d44db2db4448d63916cd8f3..2637025997678ffcb479428ae191a0e4f16488bb 100644 (file)
                line-name = "ocp-aux-pwren";
        };
 
-       bmc-ready {
+       bmc-ready-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(AC, 5) GPIO_ACTIVE_HIGH>;
                output-high;
index 29c68c37e7f5aa8c281910cd39dd27c84ccd567d..9605ccade1555fa403996269029a7450eec2915b 100644 (file)
 };
 
 &gpio {
-       pin_gpio_c7 {
+       pin-gpio-c7-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(C, 7) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "BIOS_SPI_MUX_S";
        };
-       pin_gpio_d1 {
+       pin-gpio-d1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(D, 1) GPIO_ACTIVE_HIGH>;
                output-high;
index bb2e6ef609afa4ca57957f72b7e56ea3fecd021c..93190f4e696cac9fb11409026470b8d2d66929ea 100644 (file)
                        "CK_33M_BMC", "LFRAME", "SERIRQ", "S_PLTRST";
 
        /* Assert BMC_READY so BIOS doesn't sit around waiting for it */
-       bmc-ready {
+       bmc-ready-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(J, 0) GPIO_ACTIVE_LOW>;
                output-high;
index 3f03a198a1a8fcd4e66b39171dfc7864fee18ddc..54a5509b04f1fac0de30eb962a7f647b2b3a4e00 100644 (file)
 };
 
 &gpio {
-       pin_gpio_i3 {
+       pin-gpio-i3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(I, 3) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "NCSI_BMC_R_SEL";
        };
 
-       pin_gpio_b6 {
+       pin-gpio-b6-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(B, 6) GPIO_ACTIVE_HIGH>;
                output-low;
index b6bfdaea08e6320a55c114599bd6dc116c60f316..cce8d0416dc82760ad9b58bf034259a19d6a4660 100644 (file)
         * back to one causes a power output glitch, so install a hog to keep
         * it at one as a failsafe to ensure nothing accidentally touches it.
         */
-       doom-guardrail {
+       doom-guardrail-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(E, 0) GPIO_ACTIVE_LOW>;
                output-low;
index 5be0e8fd2633c20e2d87abc843b53fca437942be..24969c82d05e6793a637f69fdc7e28157344ed57 100644 (file)
                };
        };
 
-       switchphy: ethernet-phy@0 {
-               // Fixed link
-       };
-
        front_gpio_leds {
                compatible = "gpio-leds";
                sys_log_id {
 &mac2 {
        status = "okay";
        phy-mode = "rgmii";
-       phy-handle = <&switchphy>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rgmii3_default>;
 
                connector {
                        compatible = "usb-c-connector";
                        label = "USB-C";
-                       power-role = "source";
-                       data-role = "host";
-                       pd-disable;
-                       typec-power-opmode = "default";
+                       pd-revision = /bits/ 8 <0x2 0x0 0x1 0x20>;
+                       power-role = "dual";
+                       try-power-role = "sink";
+                       data-role = "dual";
+                       source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       op-sink-microwatt = <10000000>;
                };
        };
 
                connector {
                        compatible = "usb-c-connector";
                        label = "USB-C";
-                       power-role = "source";
-                       data-role = "host";
-                       pd-disable;
-                       typec-power-opmode = "default";
+                       pd-revision = /bits/ 8 <0x2 0x0 0x1 0x20>;
+                       power-role = "dual";
+                       try-power-role = "sink";
+                       data-role = "dual";
+                       source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       op-sink-microwatt = <10000000>;
                };
        };
 
                connector {
                        compatible = "usb-c-connector";
                        label = "USB-C";
-                       power-role = "source";
-                       data-role = "host";
-                       pd-disable;
-                       typec-power-opmode = "default";
+                       pd-revision = /bits/ 8 <0x2 0x0 0x1 0x20>;
+                       power-role = "dual";
+                       try-power-role = "sink";
+                       data-role = "dual";
+                       source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       op-sink-microwatt = <10000000>;
                };
        };
 
                connector {
                        compatible = "usb-c-connector";
                        label = "USB-C";
-                       power-role = "source";
-                       data-role = "host";
-                       pd-disable;
-                       typec-power-opmode = "default";
+                       pd-revision = /bits/ 8 <0x2 0x0 0x1 0x20>;
+                       power-role = "dual";
+                       try-power-role = "sink";
+                       data-role = "dual";
+                       source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       op-sink-microwatt = <10000000>;
                };
        };
 
                connector {
                        compatible = "usb-c-connector";
                        label = "USB-C";
-                       power-role = "source";
-                       data-role = "host";
-                       pd-disable;
-                       typec-power-opmode = "default";
+                       pd-revision = /bits/ 8 <0x2 0x0 0x1 0x20>;
+                       power-role = "dual";
+                       try-power-role = "sink";
+                       data-role = "dual";
+                       source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       op-sink-microwatt = <10000000>;
                };
        };
 
                connector {
                        compatible = "usb-c-connector";
                        label = "USB-C";
-                       power-role = "source";
-                       data-role = "host";
-                       pd-disable;
-                       typec-power-opmode = "default";
+                       pd-revision = /bits/ 8 <0x2 0x0 0x1 0x20>;
+                       power-role = "dual";
+                       try-power-role = "sink";
+                       data-role = "dual";
+                       source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       op-sink-microwatt = <10000000>;
                };
        };
 
index c151984289bc63a127d296bbfabdde709b65f337..8d786510167f525469f89ba843ce2d5b1d71ef3f 100644 (file)
 
 &i2c0 {
        status = "okay";
+       multi-master;
+       mctp@10 {
+               compatible = "mctp-i2c-controller";
+               reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
+       };
 
        i2c-mux@71 {
                compatible = "nxp,pca9546";
                reg = <0x71>;
                #address-cells = <1>;
                #size-cells = <0>;
-               i2c-mux-idle-disconnect;
 
                i2c0mux0ch0: i2c@0 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0>;
+                       mctp-controller;
+
+                       // IOB0 NIC0 TEMP
+                       temperature-sensor@1f {
+                               compatible = "ti,tmp421";
+                               reg = <0x1f>;
+                       };
                };
                i2c0mux0ch1: i2c@1 {
                        #address-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <2>;
+                       mctp-controller;
+
+                       // IOB0 NIC1 TEMP
+                       temperature-sensor@1f {
+                               compatible = "ti,tmp421";
+                               reg = <0x1f>;
+                       };
                };
                i2c0mux0ch3: i2c@3 {
                        #address-cells = <1>;
                reg = <0x75>;
                #address-cells = <1>;
                #size-cells = <0>;
-               i2c-mux-idle-disconnect;
 
                i2c0mux3ch0: i2c@0 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0>;
+                       mctp-controller;
+
+                       // IOB1 NIC0 TEMP
+                       temperature-sensor@1f {
+                               compatible = "ti,tmp421";
+                               reg = <0x1f>;
+                       };
                };
                i2c0mux3ch1: i2c@1 {
                        #address-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <2>;
+                       mctp-controller;
+
+                       // IOB1 NIC1 TEMP
+                       temperature-sensor@1f {
+                               compatible = "ti,tmp421";
+                               reg = <0x1f>;
+                       };
                };
                i2c0mux3ch3: i2c@3 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0x0>;
 
-                       power-sensor@41 {
-                               compatible = "ti,ina238";
-                               reg = <0x41>;
-                               shunt-resistor = <500>;
-                       };
-                       power-sensor@42 {
-                               compatible = "ti,ina238";
-                               reg = <0x42>;
-                               shunt-resistor = <500>;
-                       };
-                       power-sensor@44 {
-                               compatible = "ti,ina238";
-                               reg = <0x44>;
-                               shunt-resistor = <500>;
+                       power-sensor@22 {
+                               compatible = "mps,mp5990";
+                               reg = <0x22>;
                        };
                };
                i2c1mux0ch1: i2c@1 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0x1>;
-
-                       power-sensor@41 {
-                               compatible = "ti,ina238";
-                               reg = <0x41>;
-                       };
-                       power-sensor@43 {
-                               compatible = "ti,ina238";
-                               reg = <0x43>;
-                       };
                };
                i2c1mux0ch2: i2c@2 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0x2>;
+
+                       fanctl2: fan-controller@1 {
+                               compatible = "nuvoton,nct7363";
+                               reg = <0x01>;
+                               #pwm-cells = <2>;
+
+                               fan-9 {
+                                       pwms = <&fanctl2 0 40000>;
+                                       tach-ch = /bits/ 8 <0x09>;
+                               };
+                               fan-11 {
+                                       pwms = <&fanctl2 0 40000>;
+                                       tach-ch = /bits/ 8 <0x0b>;
+                               };
+                               fan-10 {
+                                       pwms = <&fanctl2 4 40000>;
+                                       tach-ch = /bits/ 8 <0x0a>;
+                               };
+                               fan-13 {
+                                       pwms = <&fanctl2 4 40000>;
+                                       tach-ch = /bits/ 8 <0x0d>;
+                               };
+                               fan-15 {
+                                       pwms = <&fanctl2 6 40000>;
+                                       tach-ch = /bits/ 8 <0x0f>;
+                               };
+                               fan-1 {
+                                       pwms = <&fanctl2 6 40000>;
+                                       tach-ch = /bits/ 8 <0x01>;
+                               };
+                               fan-0 {
+                                       pwms = <&fanctl2 10 40000>;
+                                       tach-ch = /bits/ 8 <0x00>;
+                               };
+                               fan-3 {
+                                       pwms = <&fanctl2 10 40000>;
+                                       tach-ch = /bits/ 8 <0x03>;
+                               };
+                       };
+                       fanctl3: fan-controller@2 {
+                               compatible = "nuvoton,nct7363";
+                               reg = <0x02>;
+                               #pwm-cells = <2>;
+
+                               fan-9 {
+                                       pwms = <&fanctl3 0 40000>;
+                                       tach-ch = /bits/ 8 <0x09>;
+                               };
+                               fan-11 {
+                                       pwms = <&fanctl3 0 40000>;
+                                       tach-ch = /bits/ 8 <0x0b>;
+                               };
+                               fan-10 {
+                                       pwms = <&fanctl3 4 40000>;
+                                       tach-ch = /bits/ 8 <0x0a>;
+                               };
+                               fan-13 {
+                                       pwms = <&fanctl3 4 40000>;
+                                       tach-ch = /bits/ 8 <0x0d>;
+                               };
+                               fan-15 {
+                                       pwms = <&fanctl3 6 40000>;
+                                       tach-ch = /bits/ 8 <0x0f>;
+                               };
+                               fan-1 {
+                                       pwms = <&fanctl3 6 40000>;
+                                       tach-ch = /bits/ 8 <0x01>;
+                               };
+                               fan-0 {
+                                       pwms = <&fanctl3 10 40000>;
+                                       tach-ch = /bits/ 8 <0x00>;
+                               };
+                               fan-3 {
+                                       pwms = <&fanctl3 10 40000>;
+                                       tach-ch = /bits/ 8 <0x03>;
+                               };
+                       };
+                       fanctl0: fan-controller@21{
+                               compatible = "maxim,max31790";
+                               reg = <0x21>;
+                       };
+                       fanctl1: fan-controller@27{
+                               compatible = "maxim,max31790";
+                               reg = <0x27>;
+                       };
                };
                i2c1mux0ch3: i2c@3 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0x4>;
 
+                       power-monitor@13 {
+                               compatible = "infineon,xdp710";
+                               reg = <0x13>;
+                       };
+                       power-monitor@1c {
+                               compatible = "infineon,xdp710";
+                               reg = <0x1c>;
+                       };
                        power-monitor@42 {
                                compatible = "lltc,ltc4287";
                                reg = <0x42>;
                                compatible = "ti,tmp75";
                                reg = <0x4b>;
                        };
+
+                       // FIO REMOTE TEMP SENSOR
+                       temperature-sensor@4f {
+                               compatible = "ti,tmp75";
+                               reg = <0x4f>;
+                       };
                };
        };
 };
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <7>;
-
-                       power-sensor@40 {
-                               compatible = "ti,ina230";
-                               reg = <0x40>;
-                               shunt-resistor = <2000>;
-                       };
-                       power-sensor@41 {
-                               compatible = "ti,ina230";
-                               reg = <0x41>;
-                               shunt-resistor = <2000>;
-                       };
-                       power-sensor@44 {
-                               compatible = "ti,ina230";
-                               reg = <0x44>;
-                               shunt-resistor = <2000>;
-                       };
-                       power-sensor@45 {
-                               compatible = "ti,ina230";
-                               reg = <0x45>;
-                               shunt-resistor = <2000>;
-                       };
                };
        };
 };
 
 &i2c10 {
        status = "okay";
+       multi-master;
+       mctp-controller;
+       mctp@10 {
+               compatible = "mctp-i2c-controller";
+               reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
+       };
 
        // OCP NIC0 TEMP
        temperature-sensor@1f {
 
 &i2c12 {
        status = "okay";
+       multi-master;
 
        // Module 1 FRU EEPROM
        eeprom@50 {
                compatible = "atmel,24c64";
                reg = <0x50>;
        };
+
+       // Secondary CBC FRU EEPROM
+       eeprom@54 {
+               compatible = "atmel,24c02";
+               reg = <0x54>;
+       };
 };
 
 &i2c13 {
        status = "okay";
+       multi-master;
 
        // Module 0 FRU EEPROM
        eeprom@50 {
                reg = <0x50>;
        };
 
-       // Left CBC FRU EEPROM
+       // Primary CBC FRU EEPROM
        eeprom@54 {
                compatible = "atmel,24c02";
                reg = <0x54>;
        };
 
-       // Right CBC FRU EEPROM
-       eeprom@55 {
-               compatible = "atmel,24c02";
-               reg = <0x55>;
-       };
-
        // HMC FRU EEPROM
        eeprom@57 {
                compatible = "atmel,24c02";
 
 &i2c15 {
        status = "okay";
+       multi-master;
+       mctp-controller;
+       mctp@10 {
+               compatible = "mctp-i2c-controller";
+               reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
+       };
 
        // OCP NIC1 TEMP
        temperature-sensor@1f {
index 9cb511a846e3461c99f9261b7986e7df99907a74..b9a93f23bd0ae1e64a04835adee2376f33b56882 100644 (file)
                compatible = "ti,tmp75";
                reg = <0x4b>;
        };
+
+       gpio@12 {
+               compatible = "nxp,pca9555";
+               reg = <0x12>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&sgpiom0>;
+               interrupts = <116 IRQ_TYPE_LEVEL_LOW>;
+
+               gpio-line-names =
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","fcb1-activate",
+               "","";
+       };
 };
 
 &i2c1 {
                compatible = "ti,tmp75";
                reg = <0x4b>;
        };
+
+       gpio@12 {
+               compatible = "nxp,pca9555";
+               reg = <0x12>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&sgpiom0>;
+               interrupts = <114 IRQ_TYPE_LEVEL_LOW>;
+
+               gpio-line-names =
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","fcb0-activate",
+               "","";
+       };
 };
 
 &i2c3 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0>;
+
+                       power-monitor@45 {
+                               compatible = "ti,ina230";
+                               reg = <0x45>;
+                       };
+
                };
                imux23: i2c@1 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <1>;
+
+                       power-monitor@45 {
+                               compatible = "ti,ina230";
+                               reg = <0x45>;
+                       };
                };
        };
 };
 &i2c11 {
        status = "okay";
 
+       gpio@13 {
+               compatible = "nxp,pca9555";
+               reg = <0x13>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&sgpiom0>;
+               interrupts = <222 IRQ_TYPE_LEVEL_LOW>;
+
+               gpio-line-names =
+               "","",
+               "","",
+               "","",
+               "","health-mmc",
+               "","",
+               "","",
+               "","",
+               "","";
+       };
+
        gpio@30 {
                compatible = "nxp,pca9555";
                reg = <0x30>;
                                compatible = "atmel,24c64";
                                reg = <0x54>;
                        };
+
+                       adc@1d {
+                               compatible = "ti,adc128d818";
+                               reg = <0x1d>;
+                               ti,mode = /bits/ 8 <1>;
+                       };
+
+                       adc@1f {
+                               compatible = "ti,adc128d818";
+                               reg = <0x1f>;
+                               ti,mode = /bits/ 8 <1>;
+                       };
+
                };
                imux30: i2c@2 {
                        #address-cells = <1>;
        /*T0-T7*/       "","","","","","","","",
        /*U0-U7*/       "","","","","","","led-identify-gate","",
        /*V0-V7*/       "","","","",
-                       "rtc-battery-voltage-read-enable","",
+                       "","",
                        "","",
        /*W0-W7*/       "","","","","","","","",
        /*X0-X7*/       "","","","","","","","",
        "presence-cmm","ac-control-n",
        /*G0-G3 line 96-103*/
        "FM_CPU_CORETYPE2","",
-       "FM_CPU_CORETYPE1","",
+       "FM_CPU_CORETYPE1","rtc-battery-voltage-read-enable",
        "FM_CPU_CORETYPE0","",
        "FM_BOARD_REV_ID5","",
        /*G4-G7 line 104-111*/
diff --git a/src/arm/aspeed/aspeed-bmc-facebook-santabarbara.dts b/src/arm/aspeed/aspeed-bmc-facebook-santabarbara.dts
new file mode 100644 (file)
index 0000000..ee93a97
--- /dev/null
@@ -0,0 +1,982 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// Copyright 2025 Facebook Inc.
+
+/dts-v1/;
+#include "aspeed-g6.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+#include <dt-bindings/i2c/i2c.h>
+
+/ {
+       model = "Facebook Santabarbara BMC";
+       compatible = "facebook,santabarbara-bmc", "aspeed,ast2600";
+
+       aliases {
+               serial0 = &uart1;
+               serial2 = &uart3;
+               serial3 = &uart4;
+               serial4 = &uart5;
+               i2c16 = &i2c4mux0ch0;
+               i2c17 = &i2c4mux0ch1;
+               i2c18 = &i2c4mux0ch2;
+               i2c19 = &i2c4mux0ch3;
+               i2c20 = &i2c4mux0ch4;
+               i2c21 = &i2c4mux0ch5;
+               i2c22 = &i2c4mux0ch6;
+               i2c23 = &i2c4mux0ch7;
+               i2c24 = &i2c5mux0ch0;
+               i2c25 = &i2c5mux0ch1;
+               i2c26 = &i2c5mux0ch2;
+               i2c27 = &i2c5mux0ch3;
+               i2c28 = &i2c5mux1ch0;
+               i2c29 = &i2c5mux1ch1;
+               i2c30 = &i2c5mux1ch2;
+               i2c31 = &i2c5mux1ch3;
+               i2c32 = &i2c12mux0ch0;
+               i2c33 = &i2c12mux0ch1;
+               i2c34 = &i2c12mux0ch2;
+               i2c35 = &i2c12mux0ch3;
+               i2c36 = &i2c12mux0ch4;
+               i2c37 = &i2c12mux0ch5;
+               i2c38 = &i2c12mux0ch6;
+               i2c39 = &i2c12mux0ch7;
+       };
+
+       chosen {
+               stdout-path = "serial4:57600n8";
+       };
+
+       iio-hwmon {
+               compatible = "iio-hwmon";
+               io-channels = <&adc0 0>, <&adc0 1>, <&adc0 2>, <&adc0 3>,
+                             <&adc0 4>, <&adc0 5>, <&adc0 6>, <&adc0 7>,
+                             <&adc1 2>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       label = "bmc_heartbeat_amber";
+                       gpios = <&gpio0 ASPEED_GPIO(P, 7) GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "heartbeat";
+               };
+
+               led-1 {
+                       label = "fp_id_amber";
+                       default-state = "off";
+                       gpios = <&gpio0 ASPEED_GPIO(B, 5) GPIO_ACTIVE_HIGH>;
+               };
+
+               led-2 {
+                       label = "power_blue";
+                       default-state = "off";
+                       gpios = <&gpio0 ASPEED_GPIO(P, 4) GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x80000000>;
+       };
+
+       p3v3_bmc_aux: regulator-p3v3-bmc-aux {
+               compatible = "regulator-fixed";
+               regulator-name = "p3v3_bmc_aux";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       spi_gpio: spi {
+               compatible = "spi-gpio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               sck-gpios = <&gpio0 ASPEED_GPIO(Z, 3) GPIO_ACTIVE_HIGH>;
+               mosi-gpios = <&gpio0 ASPEED_GPIO(Z, 4) GPIO_ACTIVE_HIGH>;
+               miso-gpios = <&gpio0 ASPEED_GPIO(Z, 5) GPIO_ACTIVE_HIGH>;
+               num-chipselects = <1>;
+               cs-gpios = <&gpio0 ASPEED_GPIO(Z, 0) GPIO_ACTIVE_LOW>;
+               status = "okay";
+
+               tpm@0 {
+                       compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
+                       spi-max-frequency = <33000000>;
+                       reg = <0>;
+               };
+       };
+};
+
+&adc0 {
+       aspeed,int-vref-microvolt = <2500000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_adc0_default &pinctrl_adc1_default
+               &pinctrl_adc2_default &pinctrl_adc3_default
+               &pinctrl_adc4_default &pinctrl_adc5_default
+               &pinctrl_adc6_default &pinctrl_adc7_default>;
+       status = "okay";
+};
+
+&adc1 {
+       aspeed,int-vref-microvolt = <2500000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_adc10_default>;
+       status = "okay";
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&fmc {
+       status = "okay";
+
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "bmc";
+               spi-max-frequency = <50000000>;
+#include "openbmc-flash-layout-128.dtsi"
+       };
+
+       flash@1 {
+               status = "okay";
+               m25p,fast-read;
+               label = "alt-bmc";
+               spi-max-frequency = <50000000>;
+       };
+};
+
+&gpio0 {
+       gpio-line-names =
+       /*A0-A7*/       "","","","","","","","",
+       /*B0-B7*/       "rtc-battery-voltage-read-enable","","","BMC_READY",
+                       "","led-identify","","",
+       /*C0-C7*/       "","","","","","","","",
+       /*D0-D7*/       "","","","","","","","",
+       /*E0-E7*/       "","","","","","","","",
+       /*F0-F7*/       "","","","","","","","",
+       /*G0-G7*/       "FM_MUX1_SEL_R","","","","","","","",
+       /*H0-H7*/       "","","","","","","","",
+       /*I0-I7*/       "","","","","","","","",
+       /*J0-J7*/       "","","","","","","","",
+       /*K0-K7*/       "","","","","","","","",
+       /*L0-L7*/       "","","","","","","","",
+       /*M0-M7*/       "","","","","","","","",
+       /*N0-N7*/       "led-postcode-0","led-postcode-1",
+                       "led-postcode-2","led-postcode-3",
+                       "led-postcode-4","led-postcode-5",
+                       "led-postcode-6","led-postcode-7",
+       /*O0-O7*/       "","","","","","","","",
+       /*P0-P7*/       "power-button","","reset-button","",
+                       "led-power","","","",
+       /*Q0-Q7*/       "","","","","","","","",
+       /*R0-R7*/       "","","","","","","","",
+       /*S0-S7*/       "","","power-host-control","","","","","",
+       /*T0-T7*/       "","","","","","","","",
+       /*U0-U7*/       "","","","","","","","",
+       /*V0-V7*/       "","","","","","","","",
+       /*W0-W7*/       "","","","","","","","",
+       /*X0-X7*/       "","","","","","","","",
+       /*Y0-Y7*/       "","","","","","","","",
+       /*Z0-Z7*/       "","","","","","","","";
+};
+
+&gpio1 {
+       gpio-line-names =
+       /*18A0-18A7*/   "","","","","","","","",
+       /*18B0-18B7*/   "","","","",
+                               "FM_BOARD_BMC_REV_ID0","FM_BOARD_BMC_REV_ID1",
+                               "FM_BOARD_BMC_REV_ID2","",
+       /*18C0-18C7*/   "SPI_BMC_BIOS_ROM_IRQ0_R_N","","","","","","","",
+       /*18D0-18D7*/   "","","","","","","","",
+       /*18E0-18E3*/   "FM_BMC_PROT_LS_EN","AC_PWR_BMC_BTN_R_N","","";
+};
+
+&i2c0 {
+       status = "okay";
+
+       // MB FRU
+       eeprom@53 {
+               compatible = "atmel,24c128";
+               reg = <0x53>;
+       };
+
+       rtc@68 {
+               compatible = "dallas,ds1339";
+               reg = <0x68>;
+       };
+};
+
+&i2c1 {
+       status = "okay";
+
+       gpio@20 {
+               compatible = "nxp,pca9555";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&sgpiom0>;
+               interrupts = <112 IRQ_TYPE_LEVEL_LOW>;
+               gpio-line-names =
+                       "FM_NIC_PPS_IN_OE_N","FM_NIC_PPS_OUT_OE_N",
+                       "FM_CPU0_TRIGGERTSC_OE_N","FM_NIC_PPS_IN_MUX_OE_N",
+                       "FM_CPU0_CORETYPE0","FM_CPU0_CORETYPE1",
+                       "FM_CPU0_CORETYPE2","FM_NIC_PPS_OUT_MUX_OE",
+                       "CLKMUX_INPUT_LOSS_U45_R_N","FM_CPU0_SP7R1",
+                       "FM_CPU0_SP7R2","FM_CPU0_SP7R3",
+                       "FM_CPU0_SP7R4","",
+                       "FM_NIC_PPS_IN_S0_R","FM_NIC_PPS_IN_S1_R";
+       };
+
+       fan-controller@21{
+               compatible = "maxim,max31790";
+               reg = <0x21>;
+       };
+
+       gpio@22 {
+               compatible = "nxp,pca9555";
+               reg = <0x22>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&sgpiom0>;
+               interrupts = <116 IRQ_TYPE_LEVEL_LOW>;
+               gpio-line-names =
+                       "FM_CBL_PRSNT_0A_N","FM_CBL_PRSNT_0B_N",
+                       "FM_CBL_PRSNT_1A_N","FM_CBL_PRSNT_1B_N",
+                       "FM_MODULE_PWRGD_0A","FM_MODULE_PWRGD_0B",
+                       "CLKMUX_INPUT_LOSS_U88_R_N","FM_MODULE_PWRGD_1B",
+                       "","",
+                       "CLKMUX_INPUT_LOSS_U83_R_N","CLKMUX_INPUT_LOSS_U84_R_N",
+                       "FM_P3V3_E1S_0_FAULT_R_N","FM_P3V3_E1S_1_FAULT_R_N",
+                       "E1S_0_P12V_ADC_R_ALERT","E1S_1_P12V_ADC_R_ALERT";
+       };
+
+       gpio@24 {
+               compatible = "nxp,pca9555";
+               reg = <0x24>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&sgpiom0>;
+               interrupts = <114 IRQ_TYPE_LEVEL_LOW>;
+               gpio-line-names =
+                       "FM_CBL_PRSNT_2A_N","FM_CBL_PRSNT_2B_N",
+                       "FM_CBL_PRSNT_3A_N","FM_CBL_PRSNT_3B_N",
+                       "FM_CBL_PRSNT_4A_N","FM_CBL_PRSNT_4B_N",
+                       "FM_P3V3_NIC_400G_FAULT_R_N","FM_MODULE_PWRGD_2B",
+                       "OCP_SFF_P12V_ADC_R_ALERT","FM_MODULE_PWRGD_3B",
+                       "FM_THERMAL_ALERT_R_N","FM_MODULE_PWRGD_4B",
+                       "FM_CBL_PRSNT_OSFP_A_N","FM_CBL_PRSNT_OSFP_B_N",
+                       "FM_JTAG_MCIO_MUX_S0","FM_JTAG_MCIO_MUX_S1";
+       };
+
+       gpio@26 {
+               compatible = "nxp,pca9555";
+               reg = <0x26>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&sgpiom0>;
+               interrupts = <118 IRQ_TYPE_LEVEL_LOW>;
+               gpio-line-names =
+                       "FAN_0_PRSNT_R1_N","FAN_1_PRSNT_R1_N",
+                       "FAN_2_PRSNT_R1_N","FAN_3_PRSNT_R1_N",
+                       "P12V_FAN_0_ADC_ALERT","P12V_FAN_1_ADC_ALERT",
+                       "P12V_FAN_2_ADC_ALERT","P12V_FAN_3_ADC_ALERT",
+                       "P12V_FAN0_PWRGD_R","P12V_FAN1_PWRGD_R",
+                       "P12V_FAN2_PWRGD_R","P12V_FAN3_PWRGD_R",
+                       "","","","";
+       };
+};
+
+&i2c4 {
+       status = "okay";
+
+       i2c-mux@70 {
+               compatible = "nxp,pca9548";
+               reg = <0x70>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               i2c-mux-idle-disconnect;
+
+               i2c4mux0ch0: i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       // HPM Board ID EEPROM
+                       eeprom@51 {
+                               compatible = "atmel,24c128";
+                               reg = <0x51>;
+                       };
+
+                       // SCM Board ID EEPROM
+                       eeprom@53 {
+                               compatible = "atmel,24c128";
+                               reg = <0x53>;
+                       };
+               };
+               i2c4mux0ch1: i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+               i2c4mux0ch2: i2c@2 {
+                       reg = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+               i2c4mux0ch3: i2c@3 {
+                       reg = <3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       power-monitor@40 {
+                               compatible = "ti,ina230";
+                               reg = <0x40>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@42 {
+                               compatible = "ti,ina230";
+                               reg = <0x42>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@44 {
+                               compatible = "ti,ina230";
+                               reg = <0x44>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@46 {
+                               compatible = "ti,ina230";
+                               reg = <0x46>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       voltage-sensor@48 {
+                               compatible = "ti,ads7830";
+                               reg = <0x48>;
+                               vref-supply = <&p3v3_bmc_aux>;
+                       };
+
+                       voltage-sensor@4a {
+                               compatible = "ti,ads7830";
+                               reg = <0x4a>;
+                               vref-supply = <&p3v3_bmc_aux>;
+                       };
+
+                       temperature-sensor@4c {
+                               compatible = "ti,tmp75";
+                               reg = <0x4c>;
+                       };
+
+                       temperature-sensor@4e {
+                               compatible = "ti,tmp75";
+                               reg = <0x4e>;
+                       };
+               };
+               i2c4mux0ch4: i2c@4 {
+                       reg = <4>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+               i2c4mux0ch5: i2c@5 {
+                       reg = <5>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+               i2c4mux0ch6: i2c@6 {
+                       reg = <6>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       power-monitor@40 {
+                               compatible = "ti,ina230";
+                               reg = <0x40>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@42 {
+                               compatible = "ti,ina230";
+                               reg = <0x42>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@44 {
+                               compatible = "ti,ina230";
+                               reg = <0x44>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@46 {
+                               compatible = "ti,ina230";
+                               reg = <0x46>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       voltage-sensor@48 {
+                               compatible = "ti,ads7830";
+                               reg = <0x48>;
+                       };
+               };
+               i2c4mux0ch7: i2c@7 {
+                       reg = <7>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       temperature-sensor@4b {
+                               compatible = "ti,tmp75";
+                               reg = <0x4b>;
+                       };
+
+                       temperature-sensor@4f {
+                               compatible = "ti,tmp75";
+                               reg = <0x4f>;
+                       };
+
+                       // FIO FRU
+                       eeprom@53 {
+                               compatible = "atmel,24c512";
+                               reg = <0x53>;
+                       };
+               };
+       };
+};
+
+&i2c5 {
+       status = "okay";
+
+       // E1S BP FRU
+       eeprom@52 {
+               compatible = "atmel,24c64";
+               reg = <0x52>;
+       };
+
+       i2c-mux@71 {
+               compatible = "nxp,pca9546";
+               reg = <0x71>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               i2c-mux-idle-disconnect;
+
+               i2c5mux0ch0: i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+               i2c5mux0ch1: i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+               i2c5mux0ch2: i2c@2 {
+                       reg = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+               i2c5mux0ch3: i2c@3 {
+                       reg = <3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+       };
+
+       i2c-mux@72 {
+               compatible = "nxp,pca9546";
+               reg = <0x72>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               i2c-mux-idle-disconnect;
+
+               i2c5mux1ch0: i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       voltage-sensor@48 {
+                               compatible = "ti,ads7830";
+                               reg = <0x48>;
+                       };
+               };
+               i2c5mux1ch1: i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       temperature-sensor@48 {
+                               compatible = "ti,tmp75";
+                               reg = <0x48>;
+                       };
+               };
+               i2c5mux1ch2: i2c@2 {
+                       reg = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       power-monitor@40 {
+                               compatible = "ti,ina230";
+                               reg = <0x40>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@41 {
+                               compatible = "ti,ina230";
+                               reg = <0x41>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@44 {
+                               compatible = "ti,ina230";
+                               reg = <0x44>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@45 {
+                               compatible = "ti,ina230";
+                               reg = <0x45>;
+                               shunt-resistor = <2000>;
+                       };
+               };
+               i2c5mux1ch3: i2c@3 {
+                       reg = <3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       gpio@74 {
+                               compatible = "nxp,pca9539";
+                               reg = <0x74>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               gpio-line-names =
+                                       "P12V_E1S_ADC_ALERT","BUFF0_100M_LOSB_PLD",
+                                       "E1S_BP_SKU_ID0","E1S_BP_SKU_ID1",
+                                       "E1S_BP_SKU_ID2","E1S_BP_REV_ID0",
+                                       "E1S_BP_REV_ID1","E1S_BP_REV_ID2",
+                                       "P3V3_E1S_1_FAULT_R_N","P3V3_E1S_2_FAULT_R_N",
+                                       "P3V3_E1S_3_FAULT_R_N","P3V3_E1S_4_FAULT_R_N",
+                                       "P12V_E1S_1_FAULT_R_N","P12V_E1S_2_FAULT_R_N",
+                                       "P12V_E1S_3_FAULT_R_N","P12V_E1S_4_FAULT_R_N";
+                       };
+               };
+       };
+};
+
+&i2c6 {
+       status = "okay";
+
+       // Rainbow0 FRU
+       eeprom@52 {
+               compatible = "atmel,24c256";
+               reg = <0x52>;
+       };
+};
+
+&i2c7 {
+       status = "okay";
+};
+
+&i2c8 {
+       status = "okay";
+
+       // Rainbow2 FRU
+       eeprom@52 {
+               compatible = "atmel,24c256";
+               reg = <0x52>;
+       };
+};
+
+&i2c9 {
+       status = "okay";
+
+       temperature-sensor@4b {
+               compatible = "ti,tmp75";
+               reg = <0x4b>;
+       };
+
+       // SCM FRU
+       eeprom@50 {
+               compatible = "atmel,24c128";
+               reg = <0x50>;
+       };
+
+       // BSM FRU
+       eeprom@56 {
+               compatible = "atmel,24c64";
+               reg = <0x56>;
+       };
+};
+
+&i2c10 {
+       status = "okay";
+
+       // Rainbow3 FRU
+       eeprom@52 {
+               compatible = "atmel,24c256";
+               reg = <0x52>;
+       };
+};
+
+&i2c11 {
+       status = "okay";
+
+       // OCP NIC TEMP
+       temperature-sensor@1f {
+               compatible = "ti,tmp421";
+               reg = <0x1f>;
+       };
+
+       // OCP NIC FRU
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
+};
+
+&i2c12 {
+       status = "okay";
+
+       // SWB FRU
+       eeprom@52 {
+               compatible = "atmel,24c64";
+               reg = <0x52>;
+       };
+
+       i2c-mux@72 {
+               compatible = "nxp,pca9548";
+               reg = <0x72>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               i2c-mux-idle-disconnect;
+
+               i2c12mux0ch0: i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       temperature-sensor@48 {
+                               compatible = "ti,tmp75";
+                               reg = <0x48>;
+                       };
+               };
+               i2c12mux0ch1: i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       power-monitor@42 {
+                               compatible = "mps,mp2971";
+                               reg = <0x42>;
+                       };
+
+                       power-monitor@43 {
+                               compatible = "mps,mp2971";
+                               reg = <0x43>;
+                       };
+               };
+               i2c12mux0ch2: i2c@2 {
+                       reg = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       power-monitor@40 {
+                               compatible = "ti,ina230";
+                               reg = <0x40>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@41 {
+                               compatible = "ti,ina230";
+                               reg = <0x41>;
+                               shunt-resistor = <2000>;
+                       };
+               };
+               i2c12mux0ch3: i2c@3 {
+                       reg = <3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       power-monitor@44 {
+                               compatible = "ti,ina230";
+                               reg = <0x44>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       power-monitor@45 {
+                               compatible = "ti,ina230";
+                               reg = <0x45>;
+                               shunt-resistor = <2000>;
+                       };
+               };
+               i2c12mux0ch4: i2c@4 {
+                       reg = <4>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       voltage-sensor@49 {
+                               compatible = "ti,ads7830";
+                               reg = <0x49>;
+                       };
+               };
+               i2c12mux0ch5: i2c@5 {
+                       reg = <5>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+               i2c12mux0ch6: i2c@6 {
+                       reg = <6>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+               i2c12mux0ch7: i2c@7 {
+                       reg = <7>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+       };
+};
+
+&i2c13 {
+       status = "okay";
+
+       // Rainbow1 FRU
+       eeprom@52 {
+               compatible = "atmel,24c256";
+               reg = <0x52>;
+       };
+};
+
+&i2c14 {
+       status = "okay";
+};
+
+&i2c15 {
+       status = "okay";
+};
+
+&kcs2 {
+       aspeed,lpc-io-reg = <0xca8>;
+       status = "okay";
+};
+
+&kcs3 {
+       aspeed,lpc-io-reg = <0xca2>;
+       status = "okay";
+};
+
+&mac2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rmii3_default>;
+       use-ncsi;
+       status = "okay";
+};
+
+&mac3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rmii4_default>;
+       use-ncsi;
+       status = "okay";
+};
+
+&sgpiom0 {
+       ngpios = <128>;
+       bus-frequency = <2000000>;
+       gpio-line-names =
+       /*in - out - in - out */
+       /*A0-A3 line 0-7*/
+       "PDB1_HSC_PWR_OK","power-chassis-control",
+       "PDB2_HSC_PWR_OK","FM_MODULE_PWRGD_0A_OUT",
+       "PWRGD_P12V_MEM","FM_MODULE_PWRGD_0B_OUT",
+       "PWRGD_P12V_SCM","FM_MODULE_PWRGD_1B_OUT",
+       /*A4-A7 line 8-15*/
+       "PWRGD_P12V_FAN","FM_MODULE_PWRGD_2B_OUT",
+       "PWRGD_P5V_AUX","FM_MODULE_PWRGD_3B_OUT",
+       "power-chassis-good","FM_MODULE_PWRGD_4B_OUT",
+       "PWRGD_P1V8_LDO","FM_CBL_PRSNT_0A_N_OUT",
+       /*B0-B3 line 16-23*/
+       "PWRGD_P1V_LDO","FM_CBL_PRSNT_0B_N_OUT",
+       "PWRGD_PVDD33_S5","FM_CBL_PRSNT_1A_N_OUT",
+       "PWRGD_PVDD18_S5_P0","FM_CBL_PRSNT_1B_N_OUT",
+       "CPU0_SLP_S5_N","FM_CBL_PRSNT_2A_N_OUT",
+       /*B4-B7 line 24-31*/
+       "PWRGD_PVDDIO_MEM_S3_P0","FM_CBL_PRSNT_2B_N_OUT",
+       "CPU0_SLP_S3_N","FM_CBL_PRSNT_3A_N_OUT",
+       "FM_MODULE_PWRGD_1B","FM_CBL_PRSNT_3B_N_OUT",
+       "FM_MODULE_PWRGD_2B","FM_CBL_PRSNT_4A_N_OUT",
+       /*C0-C3 line 32-39*/
+       "FM_MODULE_PWRGD_3B","FM_CBL_PRSNT_4B_N_OUT",
+       "FM_MODULE_PWRGD_4B","P12V_FAN0_PWRGD_OUT",
+       "FM_MODULE_PWRGD_0B","P12V_FAN1_PWRGD_OUT",
+       "PWRGD_PVDDIO_P0","P12V_FAN2_PWRGD_OUT",
+       /*C4-C7 line 40-47*/
+       "PWRGD_PVDDCR_SOC_P0","P12V_FAN3_PWRGD_OUT",
+       "PWRGD_PVDDCR_CPU0_P0","P12V_FAN4_PWRGD_OUT",
+       "PWRGD_PVDDCR_CPU1_P0","P12V_FAN5_PWRGD_OUT",
+       "FM_CPU0_PWR_GOOD","P12V_FAN6_PWRGD_OUT",
+       /*D0-D3 line 48-55*/
+       "host0-ready","P12V_FAN7_PWRGD_OUT",
+       "FM_PWRGD_CPU0_PWROK","FAN_0_PRSNT_R1_N_OUT",
+       "FM_RST_CPU0_RESETL_N","FAN_1_PRSNT_R1_N_OUT",
+       "RST_CPU0_PERST0_R_N","FAN_2_PRSNT_R1_N_OUT",
+       /*D4-D7 line 56-63*/
+       "RST_CPU0_PERST1_R_N","FAN_3_PRSNT_R1_N_OUT",
+       "BIOS_POST_CMPLT","FAN_4_PRSNT_R1_N_OUT",
+       "","FAN_5_PRSNT_R1_N_OUT",
+       "","FAN_6_PRSNT_R1_N_OUT",
+       /*E0-E3 line 64-71*/
+       "FM_PWRGD_CHAD_CPU0","FAN_7_PRSNT_R1_N_OUT",
+       "FM_PWRGD_CHEH_CPU0","TRAY_SLOT_ID0_OUT",
+       "FM_PWRGD_CHIL_CPU0","TRAY_SLOT_ID1_OUT",
+       "FM_PWRGD_CHMP_CPU0","TRAY_SLOT_ID2_OUT",
+       /*E4-E7 line 72-79*/
+       "P12V_E1S_0_PWRGD","TRAY_SLOT_ID3_OUT",
+       "P12V_E1S_1_PWRGD","TRAY_SLOT_ID4_OUT",
+       "P3V3_E1S_0_PWRGD","SCM_JTAG_MUX_S0_R",
+       "P3V3_E1S_1_PWRGD","SCM_JTAG_MUX_S1_R",
+       /*F0-F3 line 80-87*/
+       "FM_MODULE_PWRGD_0A","BMC_SGPIO_READY",
+       "OCP_V3_1_P3V3_PLD_R_PWRGD","CPU0_SYS_RESET_N",
+       "P12V_OCP_V3_1_PLD_PWRGD","RST_CPU0_KBRST_N",
+       "PWRGD_OCP_SFF_PWR_GOOD","BIOS_DEBUG_MODE",
+       /*F4-F7 line 88-95*/
+       "","CLR_CMOS",
+       "","I3C_SPD_MUX_FORCE_SEL",
+       "","FM_JTAG_HOST_SEL",
+       "","TRAY_PRESENT_N",
+       /*G0-G3 line 96-103*/
+       "MB_REV_ID_0","UART_BMC_SEL0",
+       "MB_REV_ID_1","UART_BMC_SEL1",
+       "MB_REV_ID_2","SCM_USB_SEL",
+       "MB_SKU_ID_0","FORCE_ALL_PWRON",
+       /*G4-G7 line 104-111*/
+       "MB_SKU_ID_1","PASSWORD_CLEAR",
+       "MB_SKU_ID_2","",
+       "MB_SKU_ID_3","",
+       "","BIOS_DEBUG_MODE",
+       /*H0-H3 line 112-119*/
+       "FM_IOEXP_U538_INT_N","",
+       "FM_IOEXP_U539_INT_N","",
+       "FM_IOEXP_U540_INT_N","",
+       "FM_IOEXP_U541_INT_N","",
+       /*H4-H7 line 120-127*/
+       "FM_IOEXP_PDB2_U1003_INT_N","",
+       "","","","","","",
+       /*I0-I3 line 128-135*/
+       "","","","",
+       "PDB_IRQ_PMBUS_ALERT_ISO_R_N","",
+       "PDB_UV_ALERT_ISO_R_N","",
+       /*I4-I7 line 136-143*/
+       "P12V_SCM_ADC_ALERT","",
+       "CPU0_REGS_I2C_ALERT_N","",
+       "FM_RTC_ALERT_N","",
+       "APML_CPU0_ALERT_R_N","",
+       /*J0-J3 line 144-151*/
+       "SMB_RJ45_FIO_TMP_ALERT","",
+       "FM_SMB_ALERT_MCIO_0A_N","",
+       "I3C_MCIO_0B_ALERT_ISO_R_N","",
+       "FM_SMB_ALERT_MCIO_1A_N","",
+       /*J4-J7 line 152-159*/
+       "I3C_MCIO_1B_ALERT_ISO_R_N","",
+       "FM_SMB_ALERT_MCIO_2A_N","",
+       "I3C_MCIO_2B_ALERT_ISO_R_N","",
+       "FM_SMB_ALERT_MCIO_3A_N","",
+       /*K0-K3 line 160-167*/
+       "I3C_MCIO_3B_ALERT_ISO_R_N","",
+       "FM_SMB_ALERT_MCIO_4A_N","",
+       "I3C_MCIO_4B_ALERT_ISO_R_N","",
+       "","",
+       /*K4-K7 line 168-175*/
+       "","","","","","","","",
+       /*L0-L3 line 176-183*/
+       "FM_CPU0_THERMTRIP_N","",
+       "FM_CPU0_PROCHOT_N","",
+       "FM_CPU0_SMERR_N","",
+       "FM_PVDDCR_CPU0_P0_OCP_N","",
+       /*L4-L7 line 184-191*/
+       "FM_PVDDCR_CPU1_P0_OCP_N","",
+       "FM_PVDDCR_SOC_P0_OCP_N","",
+       "FM_OCP_PWRBRK_R_N","",
+       "PMIC_ERROR_N","",
+       /*M0-M3 line 192-199*/
+       "","","","","","","","",
+       /*M4-M7 line 200-207*/
+       "","","","","","","","",
+       /*N0-N3 line 208-215*/
+       "FM_PRSNT_CPU0_N","",
+       "OCP_SFF_PRSNT_N","",
+       "E1S_0_PRSNT_R_N","",
+       "E1S_BP_0_PRSNT_R_N","",
+       /*N4-N7 line 216-223*/
+       "E1S_BP_1_PRSNT_R_N","",
+       "E1S_BP_2_PRSNT_R_N","",
+       "E1S_BP_3_PRSNT_R_N","",
+       "PDB_PRSNT_J311_N","",
+       /*O0-O3 line 224-231*/
+       "PDB_PRSNT_J312_N","",
+       "PDB_PRSNT_J313_N","",
+       "PDB_PRSNT_J314_N","",
+       "PRSNT_RJ45_FIO_N_R","",
+       /*O4-O7 line 232-239*/
+       "PRSNT_LEAK_CABLE_1_R_N","",
+       "PRSNT_LEAK_CABLE_2_R_N","",
+       "PRSNT_HDT_N","",
+       "","",
+       /*P0-P3 line 240-247*/
+       "","","","","","","","",
+       /*P4-P7 line 248-255*/
+       "","","","","","","","";
+       status = "okay";
+};
+
+// BIOS Flash
+&spi2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi2_default>;
+       status = "okay";
+
+       flash@0 {
+               m25p,fast-read;
+               label = "pnor";
+               spi-max-frequency = <12000000>;
+               spi-tx-bus-width = <2>;
+               spi-rx-bus-width = <2>;
+               status = "okay";
+       };
+};
+
+// HOST BIOS Debug
+&uart1 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&uart4 {
+       status = "okay";
+};
+
+// BMC Debug Console
+&uart5 {
+       status = "okay";
+};
+
+&uart_routing {
+       status = "okay";
+};
+
+&wdt1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdtrst1_default>;
+       aspeed,reset-type = "soc";
+       aspeed,external-signal;
+       aspeed,ext-push-pull;
+       aspeed,ext-active-high;
+       aspeed,ext-pulse-duration = <256>;
+       status = "okay";
+};
index 29f224bccd6353bf4297a090c887a882056c6464..aae789854c5288f4083796347075359244086a27 100644 (file)
                reg = <0x22>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-line-names = "SLOT1_UART_SEL0","SLOT1_UART_SEL1",
+                               "SLOT1_UART_SEL2","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","";
        };
 
        gpio@23 {
                reg = <0x22>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-line-names = "SLOT2_UART_SEL0","SLOT2_UART_SEL1",
+                               "SLOT2_UART_SEL2","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","";
        };
 
        gpio@23 {
                reg = <0x22>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-line-names = "SLOT3_UART_SEL0","SLOT3_UART_SEL1",
+                               "SLOT3_UART_SEL2","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","";
        };
 
        gpio@23 {
                reg = <0x22>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-line-names = "SLOT4_UART_SEL0","SLOT4_UART_SEL1",
+                               "SLOT4_UART_SEL2","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","";
        };
 
        gpio@23 {
                reg = <0x22>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-line-names = "SLOT5_UART_SEL0","SLOT5_UART_SEL1",
+                               "SLOT5_UART_SEL2","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","";
        };
 
        gpio@23 {
                reg = <0x22>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-line-names = "SLOT6_UART_SEL0","SLOT6_UART_SEL1",
+                               "SLOT6_UART_SEL2","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","";
        };
 
        gpio@23 {
                reg = <0x22>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-line-names = "SLOT7_UART_SEL0","SLOT7_UART_SEL1",
+                               "SLOT7_UART_SEL2","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","";
        };
 
        gpio@23 {
                reg = <0x22>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-line-names = "SLOT8_UART_SEL0","SLOT8_UART_SEL1",
+                               "SLOT8_UART_SEL2","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","",
+                               "","","","","","","","";
        };
 
        gpio@23 {
index 7364adc6b80d60801215de27e23bc3bf18964f28..2f5d4075a64ade61ac780c95fb9456cbf52ee45e 100644 (file)
                /*Y0-Y7*/       "","","","","","","","",
                /*Z0-Z7*/       "","","","","","","","";
 
-       usb_power {
+       usb-power-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(O, 3) GPIO_ACTIVE_LOW>;
                output-high;
index 9961508ee872fbfec7b6fd6f6bda380509e2c5f1..4d9e2cd11f44ab596b62713ec4a467061056046f 100644 (file)
        /*Y0-Y7*/       "","","","","","","","",
        /*Z0-Z7*/   "","","","","","","","";
 
-       usb_power {
+       usb-power-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(O, 3) GPIO_ACTIVE_LOW>;
                output-high;
index 638a2c1c78927018de92f4922ef2934e68a1d5ac..757421bc360599c0100d17b893fb6a4ef626d9ef 100644 (file)
        /*Y0-Y7*/       "","","","","","","","",
        /*Z0-Z7*/       "","","","","","","","";
 
-       i2c3_mux_oe_n {
+       i2c3-mux-oe-n-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(G, 6) GPIO_ACTIVE_LOW>;
                output-high;
                line-name = "I2C3_MUX_OE_N";
        };
 
-       usb_power {
+       usb-power-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(O, 3) GPIO_ACTIVE_LOW>;
                output-high;
index 360b9ce3c8500bd96301e762355bbd4db8ac991b..c8267c97a44e6fb50dab6248f7257eef3bc4b557 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               led-0 {
+               led-bmc-ready {
                        gpios = <&gpio0 ASPEED_GPIO(L, 7) GPIO_ACTIVE_HIGH>;
                };
 
-               led-1 {
+               led-bmc-hb {
                        gpios = <&gpio0 ASPEED_GPIO(P, 7) GPIO_ACTIVE_HIGH>;
                };
 
-               led-2 {
+               led-rear-enc-fault0 {
                        gpios = <&gpio0 ASPEED_GPIO(S, 6) GPIO_ACTIVE_HIGH>;
                };
 
-               led-3 {
+               led-rear-enc-id0 {
                        gpios = <&gpio0 ASPEED_GPIO(S, 7) GPIO_ACTIVE_HIGH>;
                };
 
-               led-4 {
+               led-fan0-fault {
                        gpios = <&pca3 5 GPIO_ACTIVE_LOW>;
                };
 
-               led-5 {
+               led-fan1-fault {
                        gpios = <&pca3 6 GPIO_ACTIVE_LOW>;
                };
 
-               led-6 {
+               led-fan2-fault {
                        gpios = <&pca3 7 GPIO_ACTIVE_LOW>;
                };
 
-               led-7 {
+               led-fan3-fault {
                        gpios = <&pca3 8 GPIO_ACTIVE_LOW>;
                };
 
-               led-8 {
+               led-fan4-fault {
                        gpios = <&pca3 9 GPIO_ACTIVE_LOW>;
                };
 
-               led-9 {
+               led-fan5-fault {
                        gpios = <&pca3 10 GPIO_ACTIVE_LOW>;
                };
 
-               led-a {
+               led-fan6-fault {
                        gpios = <&pca3 11 GPIO_ACTIVE_LOW>;
                };
 
-               led-b {
+               led-nvmed0-fault {
                        gpios = <&pca4 4 GPIO_ACTIVE_HIGH>;
                };
 
-               led-c {
+               led-nvmed1-fault {
                        gpios = <&pca4 5 GPIO_ACTIVE_HIGH>;
                };
 
-               led-d {
+               led-nvmed2-fault {
                        gpios = <&pca4 6 GPIO_ACTIVE_HIGH>;
                };
 
-               led-e {
+               led-nvmed3-fault {
                        gpios = <&pca4 7 GPIO_ACTIVE_HIGH>;
                };
        };
        status = "okay";
 };
 
+&pinctrl {
+       pinctrl_gpiol4_unbiased: gpiol4 {
+               pins = "C15";
+               bias-disable;
+       };
+
+       pinctrl_gpiol5_unbiased: gpiol5 {
+               pins = "F15";
+               bias-disable;
+       };
+
+       pinctrl_gpiol6_unbiased: gpiol6 {
+               pins = "B14";
+               bias-disable;
+       };
+
+       pinctrl_gpiol7_unbiased: gpiol7 {
+               pins = "C14";
+               bias-disable;
+       };
+};
+
 &gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpiol4_unbiased
+               &pinctrl_gpiol5_unbiased
+               &pinctrl_gpiol6_unbiased
+               &pinctrl_gpiol7_unbiased>;
+
        gpio-line-names =
        /*A0-A7*/       "","","","","","","","",
        /*B0-B7*/       "","","","","bmc-tpm-reset","","","",
        /*I0-I7*/       "","","","","","","","",
        /*J0-J7*/       "","","","","","","","",
        /*K0-K7*/       "","","","","","","","",
-       /*L0-L7*/       "","","","","","","","bmc-ready",
+       /*L0-L7*/       "","","","","","","","led-bmc-ready",
        /*M0-M7*/       "","","","","","","","",
-       /*N0-N7*/       "fpga-debug-enable","","","","","","","",
+       /*N0-N7*/       "pch-reset","","","","","flash-write-override","","",
        /*O0-O7*/       "","","","","","","","",
-       /*P0-P7*/       "","","","","","","","bmc-hb",
+       /*P0-P7*/       "","","","","","","","led-bmc-hb",
        /*Q0-Q7*/       "","","","","","","pch-ready","",
        /*R0-R7*/       "","","","","","","","",
-       /*S0-S7*/       "","","","","","","rear-enc-fault0","rear-enc-id0",
+       /*S0-S7*/       "","","","","","","led-rear-enc-fault0","led-rear-enc-id0",
        /*T0-T7*/       "","","","","","","","",
        /*U0-U7*/       "","","","","","","","",
        /*V0-V7*/       "","rtc-battery-voltage-read-enable","","power-chassis-control","","","","",
        /*X0-X7*/       "fpga-pgood","power-chassis-good","pch-pgood","","","","","",
        /*Y0-Y7*/       "","","","","","","","",
        /*Z0-Z7*/       "","","","","","","","";
+
+       pin-gpio-hog-0 {
+               gpio-hog;
+               gpios = <ASPEED_GPIO(L, 4) GPIO_ACTIVE_HIGH>;
+               input;
+               line-name = "RST_RTCRST_N";
+       };
+
+       pin-gpio-hog-1 {
+               gpio-hog;
+               gpios = <ASPEED_GPIO(L, 5) GPIO_ACTIVE_HIGH>;
+               input;
+               line-name = "RST_SRTCRST_N";
+       };
+
+       pin-gpio-hog-2 {
+               gpio-hog;
+               gpios = <ASPEED_GPIO(L, 6) GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "BMC_FAN_E3_SVC_PEX_INT_N";
+       };
+
+       pin-gpio-hog-3 {
+               gpio-hog;
+               gpios = <ASPEED_GPIO(O, 6) GPIO_ACTIVE_LOW>;
+               output-low;
+               line-name = "isolate_errs_cpu1";
+       };
 };
 
 &emmc_controller {
 &sgpiom0 {
        status = "okay";
        ngpios = <128>;
-       bus-frequency = <1000000>;
+       bus-frequency = <500000>;
 };
 
 &ibt {
                compatible = "atmel,24c64";
                reg = <0x50>;
        };
-
-       regulator@60 {
-               compatible = "maxim,max8952";
-               reg = <0x60>;
-
-               max8952,default-mode = <0>;
-               max8952,dvs-mode-microvolt = <1250000>, <1200000>,
-                                               <1050000>, <950000>;
-               max8952,sync-freq = <0>;
-               max8952,ramp-speed = <0>;
-
-               regulator-name = "VR_v77_1v4";
-               regulator-min-microvolt = <770000>;
-               regulator-max-microvolt = <1400000>;
-               regulator-always-on;
-               regulator-boot-on;
-       };
 };
 
 &i2c1 {
 
 &i2c4 {
        status = "okay";
+       multi-master;
+       bus-frequency = <1000000>;
+
+       ipmb@10 {
+               compatible = "ipmb-dev";
+               reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
+
+               i2c-protocol;
+       };
 };
 
 &i2c5 {
                compatible = "atmel,24c64";
                reg = <0x50>;
        };
-
-       regulator@60 {
-               compatible = "maxim,max8952";
-               reg = <0x60>;
-
-               max8952,default-mode = <0>;
-               max8952,dvs-mode-microvolt = <1250000>, <1200000>,
-                                               <1050000>, <950000>;
-               max8952,sync-freq = <0>;
-               max8952,ramp-speed = <0>;
-
-               regulator-name = "VR_v77_1v4";
-               regulator-min-microvolt = <770000>;
-               regulator-max-microvolt = <1400000>;
-               regulator-always-on;
-               regulator-boot-on;
-       };
 };
 
 &i2c11 {
index ddbcbc64e2356bc800d7d06d11069ce748d2c3a9..4ad0f44af1abb1e0d0ca587a4229f858f2a982ab 100644 (file)
 
 &gpio {
 
-       pin_gpio_b5 {
+       pin-gpio-b5-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(B, 5) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "IRQ_BMC_PCH_SMI_LPC_N";
        };
 
-       pin_gpio_f0 {
+       pin-gpio-f0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 0) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "IRQ_BMC_PCH_NMI_R";
        };
 
-       pin_gpio_f3 {
+       pin-gpio-f3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 3) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "I2C_BUS0_RST_OUT_N";
        };
 
-       pin_gpio_f4 {
+       pin-gpio-f4-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 4) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "FM_SKT0_FAULT_LED";
        };
 
-       pin_gpio_f5 {
+       pin-gpio-f5-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 5) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "FM_SKT1_FAULT_LED";
        };
 
-       pin_gpio_g4 {
+       pin-gpio-g4-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(G, 4) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "FAN_PWR_CTL_N";
        };
 
-       pin_gpio_g7 {
+       pin-gpio-g7-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(G, 7) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "RST_BMC_PCIE_I2CMUX_N";
        };
 
-       pin_gpio_h2 {
+       pin-gpio-h2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "PSU1_FFS_N_R";
        };
 
-       pin_gpio_h3 {
+       pin-gpio-h3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(H, 3) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "PSU2_FFS_N_R";
        };
 
-       pin_gpio_i3 {
+       pin-gpio-i3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(I, 3) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_INTRUDED_COVER";
        };
 
-       pin_gpio_j2 {
+       pin-gpio-j2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(J, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_BIOS_UPDATE_N";
        };
 
-       pin_gpio_j3 {
+       pin-gpio-j3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(J, 3) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "RST_BMC_HDD_I2CMUX_N";
        };
 
-       pin_gpio_s2 {
+       pin-gpio-s2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(S, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_VGA_SW";
        };
 
-       pin_gpio_s4 {
+       pin-gpio-s4-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(S, 4) GPIO_ACTIVE_HIGH>;
                output;
                line-name = "VBAT_EN_N";
        };
 
-       pin_gpio_s6 {
+       pin-gpio-s6-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(S, 6) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "PU_BMC_GPIOS6";
        };
 
-       pin_gpio_y0 {
+       pin-gpio-y0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(Y, 0) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "BMC_NCSI_MUX_CTL_S0";
        };
 
-       pin_gpio_y1 {
+       pin-gpio-y1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(Y, 1) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "BMC_NCSI_MUX_CTL_S1";
        };
 
-       pin_gpio_z0 {
+       pin-gpio-z0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(Z, 0) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "I2C_RISER2_INT_N";
        };
 
-       pin_gpio_z2 {
+       pin-gpio-z2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(Z, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "I2C_RISER2_RESET_N";
        };
 
-       pin_gpio_z3 {
+       pin-gpio-z3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(Z, 3) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "FM_BMC_PCH_SCI_LPC_N";
        };
 
-       pin_gpio_z7 {
+       pin-gpio-z7-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(Z, 7) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "BMC_POST_CMPLT_N";
        };
 
-       pin_gpio_aa0 {
+       pin-gpio-aa0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(AA, 0) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "HOST_BMC_USB_SEL";
        };
 
-       pin_gpio_aa5 {
+       pin-gpio-aa5-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(AA, 5) GPIO_ACTIVE_HIGH>;
                output-high;
index 6045b60b80da8de78aca19196d6e1fd7dfde62cd..de61eac54585b0d80c33f500a432fdfb0c2cf9cf 100644 (file)
 
 &gpio {
 
-       pin_gpio_a1 {
+       pin-gpio-a1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(A, 1) GPIO_ACTIVE_LOW>;
                output-high;
                line-name = "BMC_EMMC_RST_N";
        };
 
-       pin_gpio_a3 {
+       pin-gpio-a3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(A, 3) GPIO_ACTIVE_LOW>;
                output-high;
                line-name = "PCH_PWROK_BMC_FPGA";
        };
 
-       pin_gpio_b5 {
+       pin-gpio-b5-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(B, 5) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "IRQ_BMC_PCH_SMI_LPC_N";
        };
 
-       pin_gpio_b7 {
+       pin-gpio-b7-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(B, 7) GPIO_ACTIVE_LOW>;
                output-low;
                line-name = "CPU_SM_WP";
        };
 
-       pin_gpio_e0 {
+       pin-gpio-e0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(E, 0) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "PDB_PSU_SEL";
        };
 
-       pin_gpio_e2 {
+       pin-gpio-e2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(E, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "LOCATOR_LED_N";
        };
 
-       pin_gpio_e5 {
+       pin-gpio-e5-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(E, 5) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "FM_BMC_DBP_PRESENT_R1_N";
        };
 
-       pin_gpio_e6 {
+       pin-gpio-e6-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(E, 6) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_ME_SECURITY_OVERRIDE_N";
        };
 
-       pin_gpio_f0 {
+       pin-gpio-f0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 0) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "IRQ_BMC_PCH_NMI_R";
        };
 
-       pin_gpio_f1 {
+       pin-gpio-f1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 1) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "CPU2_PROCDIS_BMC_N";
        };
 
-       pin_gpio_f2 {
+       pin-gpio-f2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "RM_THROTTLE_EN_N";
        };
 
-       pin_gpio_f3 {
+       pin-gpio-f3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 3) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "FM_PMBUS_ALERT_B_EN";
        };
 
-       pin_gpio_f4 {
+       pin-gpio-f4-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 4) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_FORCE_NM_THROTTLE_N";
        };
 
-       pin_gpio_f6 {
+       pin-gpio-f6-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 6) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "FM_BMC_CPU_PWR_DEBUG_N";
        };
 
-       pin_gpio_g7 {
+       pin-gpio-g7-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(G, 7) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_PCIE_I2C_MUX_RST_N";
        };
 
-       pin_gpio_h6 {
+       pin-gpio-h6-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(H, 6) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "FM_BMC_DBP_PRESENT_R2_N";
        };
 
-       pin_gpio_i3 {
+       pin-gpio-i3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(I, 3) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "SPI_BMC_BIOS_WP_N";
        };
 
-       pin_gpio_j1 {
+       pin-gpio-j1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(J, 1) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_USB_SEL";
        };
 
-       pin_gpio_j2 {
+       pin-gpio-j2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(J, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "PDB_SMB_RST_N";
        };
 
-       pin_gpio_j3 {
+       pin-gpio-j3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(J, 3) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "SPI_BMC_BIOS_HOLD_N";
        };
 
-       pin_gpio_l0 {
+       pin-gpio-l0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(L, 0) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "PDB_FAN_TACH_SEL";
        };
 
-       pin_gpio_l1 {
+       pin-gpio-l1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(L, 1) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "SYS_RESET_BMC_FPGA_N";
        };
 
-       pin_gpio_l4 {
+       pin-gpio-l4-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(L, 4) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "FM_EFUSE_FAN_G1_EN";
        };
 
-       pin_gpio_l5 {
+       pin-gpio-l5-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(L, 5) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "FM_EFUSE_FAN_G2_EN";
        };
 
-       pin_gpio_r6 {
+       pin-gpio-r6-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(R, 6) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "CPU3_PROCDIS_BMC_N";
        };
 
-       pin_gpio_r7 {
+       pin-gpio-r7-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(R, 7) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "CPU4_PROCDIS_BMC_N";
        };
 
-       pin_gpio_s1 {
+       pin-gpio-s1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(S, 1) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "DBP_SYSPWROK_BMC";
        };
 
-       pin_gpio_s2 {
+       pin-gpio-s2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(S, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "PCH_RST_RSMRST_N";
        };
 
-       pin_gpio_s6 {
+       pin-gpio-s6-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(S, 6) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_HW_STRAP_5";
        };
 
-       pin_gpio_z3 {
+       pin-gpio-z3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(Z, 3) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "FM_BMC_PCH_SCI_LPC_N";
        };
 
-       pin_gpio_aa0 {
+       pin-gpio-aa0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(AA, 0) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "FW_PSU_ALERT_EN_N";
        };
 
-       pin_gpio_aa4 {
+       pin-gpio-aa4-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(AA, 4) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "DBP_CPU_PREQ_N";
        };
 
-       pin_gpio_ab3 {
+       pin-gpio-ab3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(AB, 3) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "BMC_WDTRST";
        };
 
-       pin_gpio_ac6 {
+       pin-gpio-ac6-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(AC, 6) GPIO_ACTIVE_HIGH>;
                output-high;
diff --git a/src/arm/aspeed/aspeed-bmc-nvidia-gb200nvl-bmc.dts b/src/arm/aspeed/aspeed-bmc-nvidia-gb200nvl-bmc.dts
new file mode 100644 (file)
index 0000000..41e3e9d
--- /dev/null
@@ -0,0 +1,1128 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+#include "aspeed-g6.dtsi"
+#include <dt-bindings/i2c/i2c.h>
+#include <dt-bindings/gpio/aspeed-gpio.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       model = "AST2600 GB200NVL BMC";
+       compatible = "nvidia,gb200nvl-bmc", "aspeed,ast2600";
+
+       aliases {
+               serial2 = &uart3;
+               serial4 = &uart5;
+               i2c16   = &imux16;
+               i2c17   = &imux17;
+               i2c18   = &imux18;
+               i2c19   = &imux19;
+               i2c20   = &imux20;
+               i2c21   = &imux21;
+               i2c22   = &imux22;
+               i2c23   = &imux23;
+               i2c24   = &imux24;
+               i2c25   = &imux25;
+               i2c26   = &imux26;
+               i2c27   = &imux27;
+               i2c28   = &imux28;
+               i2c29   = &imux29;
+               i2c30   = &imux30;
+               i2c31   = &imux31;
+               i2c32   = &imux32;
+               i2c33   = &imux33;
+               i2c34   = &imux34;
+               i2c35   = &imux35;
+               i2c36   = &imux36;
+               i2c37   = &imux37;
+               i2c38   = &imux38;
+               i2c39   = &imux39;
+               i2c40   = &e1si2c0;
+               i2c41   = &e1si2c1;
+               i2c42   = &e1si2c2;
+               i2c43   = &e1si2c3;
+               i2c44   = &e1si2c4;
+               i2c45   = &e1si2c5;
+               i2c46   = &e1si2c6;
+               i2c47   = &e1si2c7;
+               i2c48   = &i2c17mux0;
+               i2c49   = &i2c17mux1;
+               i2c50   = &i2c17mux2;
+               i2c51   = &i2c17mux3;
+               i2c52   = &i2c25mux0;
+               i2c53   = &i2c25mux1;
+               i2c54   = &i2c25mux2;
+               i2c55   = &i2c25mux3;
+               i2c56   = &i2c29mux0;
+               i2c57   = &i2c29mux1;
+               i2c58   = &i2c29mux2;
+               i2c59   = &i2c29mux3;
+       };
+
+       chosen {
+               stdout-path = &uart5;
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x80000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               vga_memory: framebuffer@9f000000 {
+                       no-map;
+                       reg = <0x9f000000 0x01000000>; /* 16M */
+               };
+
+               ramoops@a0000000 {
+                       compatible = "ramoops";
+                       reg = <0xa0000000 0x100000>; /* 1MB */
+                       record-size = <0x10000>; /* 64KB */
+                       max-reason = <2>; /* KMSG_DUMP_OOPS */
+               };
+
+               gfx_memory: framebuffer {
+                       size = <0x01000000>;
+                       alignment = <0x01000000>;
+                       compatible = "shared-dma-pool";
+                       reusable;
+               };
+
+               video_engine_memory: jpegbuffer {
+                       size = <0x02000000>;    /* 32M */
+                       alignment = <0x01000000>;
+                       compatible = "shared-dma-pool";
+                       reusable;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               led-0 {
+                       label = "uid_led";
+                       gpios = <&sgpiom0 27 GPIO_ACTIVE_LOW>;
+               };
+               led-1 {
+                       label = "fault_led";
+                       gpios = <&sgpiom0 29 GPIO_ACTIVE_LOW>;
+               };
+               led-2 {
+                       label = "power_led";
+                       gpios = <&sgpiom0 31 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       buttons {
+               button-power {
+                       label = "power-btn";
+                       gpio = <&sgpiom0 156 GPIO_ACTIVE_LOW>;
+               };
+               button-uid {
+                       label = "uid-btn";
+                       gpio = <&sgpiom0 154 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+// Enable Primary flash on FMC for bring up activity
+&fmc {
+       status = "okay";
+       flash@0 {
+               status = "okay";
+               compatible = "jedec,spi-nor";
+               label = "bmc";
+               spi-max-frequency = <50000000>;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       u-boot@0 {
+                               // 896KB
+                               reg = <0x0 0xe0000>;
+                               label = "u-boot";
+                       };
+
+                       kernel@100000 {
+                               // 9MB
+                               reg = <0x100000 0x900000>;
+                               label = "kernel";
+                       };
+
+                       rofs@a00000 {
+                               // 55292KB (extends to end of 64MB SPI - 4KB)
+                               reg = <0xa00000 0x35FF000>;
+                               label = "rofs";
+                       };
+               };
+       };
+};
+
+&spi2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi2_default>;
+
+       // Data SPI is 64MB in size
+       flash@0 {
+               status = "okay";
+               label = "config";
+               spi-max-frequency = <50000000>;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       u-boot-env@0 {
+                               // 256KB
+                               reg = <0x0 0x40000>;
+                               label = "u-boot-env";
+                       };
+
+                       rwfs@40000 {
+                               // 16MB
+                               reg = <0x40000 0x1000000>;
+                               label = "rwfs";
+                       };
+
+                       log@1040000 {
+                               // 40MB
+                               reg = <0x1040000 0x2800000>;
+                               label = "log";
+                       };
+               };
+       };
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart3 {
+       // Enabling SOL
+       status = "okay";
+};
+
+&uart5 {
+       // BMC Debug Console
+       status = "okay";
+};
+
+&uart_routing {
+       status = "okay";
+};
+
+&mac2 {
+       status = "okay";
+       phy-mode = "rmii";
+       use-ncsi;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rmii3_default>;
+};
+
+/*
+ * Enable USB port A as device (via the virtual hub) to host
+ */
+&vhub {
+       status = "okay";
+};
+
+&video {
+       status = "okay";
+       memory-region = <&video_engine_memory>;
+};
+
+// USB 2.0 to HMC, on USB Port B
+&ehci1 {
+       status = "okay";
+};
+
+// USB 1.0
+&uhci {
+       status = "okay";
+};
+
+&sgpiom0 {
+       status="okay";
+       ngpios = <128>;
+       gpio-line-names =
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "RUN_POWER_FAULT_L-I","SYS_RST_IN_L-O",
+               "RUN_POWER_PG-I","PWR_BRAKE_L-O",
+               "SYS_RST_OUT_L-I","RUN_POWER_EN-O",
+               "L0L1_RST_REQ_OUT_L-I","SHDN_FORCE_L-O",
+               "L2_RST_REQ_OUT_L-I","SHDN_REQ_L-O",
+               "SHDN_OK_L-I","UID_LED_N-O",
+               "BMC_I2C1_FPGA_ALERT_L-I","SYS_FAULT_LED_N-O",
+               "BMC_I2C0_FPGA_ALERT_L-I","PWR_LED_N-O",
+               "FPGA_RSVD_FFU3-I","",
+               "FPGA_RSVD_FFU2-I","",
+               "FPGA_RSVD_FFU1-I","",
+               "FPGA_RSVD_FFU0-I","BMC_I2C_SSIF_ALERT_L-O",
+               "CPU_BOOT_DONE-I","JTAG_MUX_SELECT-O",
+               "SPI_BMC_FPGA_INT_L-I","RTC_CLR_L-O",
+               "THERM_BB_WARN_L-I","UART_MUX_SEL-O",
+               "THERM_BB_OVERT_L-I","",
+               "CPU0_UPHY3_PRSNT1_L-I","IOBRD0_RUN_POWER_EN-O",
+               "CPU0_UPHY3_PRSNT0_L-I","IOBRD1_RUN_POWER_EN-O",
+               "CPU0_UPHY2_PRSNT1_L-I","FPGA_RSVD_FFU4-O",
+               "CPU0_UPHY2_PRSNT0_L-I","FPGA_RSVD_FFU5-O",
+               "CPU0_UPHY1_PRSNT1_L-I","FPGA_RSVD_FFU6-O",
+               "CPU0_UPHY1_PRSNT0_L-I","FPGA_RSVD_FFU7-O",
+               "CPU0_UPHY0_PRSNT1_L-I","RSVD_NV_PLT_DETECT-O",
+               "CPU0_UPHY0_PRSNT0_L-I","SPI1_INT_L-O",
+               "CPU1_UPHY3_PRSNT1_L-I","",
+               "CPU1_UPHY3_PRSNT0_L-I","HMC_EROT_MUX_STATUS",
+               "CPU1_UPHY2_PRSNT1_L-I","",
+               "CPU1_UPHY2_PRSNT0_L-I","",
+               "CPU1_UPHY1_PRSNT1_L-I","",
+               "CPU1_UPHY1_PRSNT0_L-I","",
+               "CPU1_UPHY0_PRSNT1_L-I","",
+               "CPU1_UPHY0_PRSNT0_L-I","",
+               "FAN1_PRESENT_L-I","",
+               "FAN0_PRESENT_L-I","",
+               "","",
+               "IPEX_CABLE_PRSNT_L-I","",
+               "M2_1_PRSNT_L-I","",
+               "M2_0_PRSNT_L-I","",
+               "CPU1_UPHY4_PRSNT1_L-I","",
+               "CPU0_UPHY4_PRSNT0_L-I","",
+               "","",
+               "I2C_RTC_ALERT_L-I","",
+               "FAN7_PRESENT_L-I","",
+               "FAN6_PRESENT_L-I","",
+               "FAN5_PRESENT_L-I","",
+               "FAN4_PRESENT_L-I","",
+               "FAN3_PRESENT_L-I","",
+               "FAN2_PRESENT_L-I","",
+               "IOBRD0_IOX_INT_L-I","",
+               "IOBRD1_PRSNT_L-I","",
+               "IOBRD0_PRSNT_L-I","",
+               "IOBRD1_PWR_GOOD-I","",
+               "IOBRD0_PWR_GOOD-I","",
+               "","",
+               "","",
+               "FAN_FAIL_IN_L-I","",
+               "","",
+               "","",
+               "","",
+               "PDB_CABLE_PRESENT_L-I","",
+               "","",
+               "CHASSIS_PWR_BRK_L-I","",
+               "","",
+               "IOBRD1_IOX_INT_L-I","",
+               "10GBE_SMBALRT_L-I","",
+               "PCIE_WAKE_L-I","",
+               "I2C_M21_ALERT_L-I","",
+               "I2C_M20_ALERT_L-I","",
+               "TRAY_FAST_SHDN_L-I","",
+               "UID_BTN_N-I","",
+               "PWR_BTN_L-I","",
+               "PSU_SMB_ALERT_L-I","",
+               "","",
+               "","",
+               "NODE_LOC_ID[0]-I","",
+               "NODE_LOC_ID[1]-I","",
+               "NODE_LOC_ID[2]-I","",
+               "NODE_LOC_ID[3]-I","",
+               "NODE_LOC_ID[4]-I","",
+               "NODE_LOC_ID[5]-I","",
+               "FAN10_PRESENT_L-I","",
+               "FAN9_PRESENT_L-I","",
+               "FAN8_PRESENT_L-I","",
+               "FPGA1_READY_HMC-I","",
+               "DP_HPD-I","",
+               "HMC_I2C3_FPGA_ALERT_L-I","",
+               "HMC_I2C2_FPGA_ALERT_L-I","",
+               "FPGA0_READY_HMC-I","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "LEAK_DETECT_ALERT_L-I","",
+               "MOD1_B2B_CABLE_PRESENT_L-I","",
+               "MOD1_CLINK_CABLE_PRESENT_L-I","",
+               "FAN11_PRESENT_L-I","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "","",
+               "RSVD_SGPIO_IN_CRC[0]","RSVD_SGPIO_O_CRC[7]",
+               "RSVD_SGPIO_IN_CRC[1]","RSVD_SGPIO_O_CRC[6]",
+               "RSVD_SGPIO_IN_CRC[2]","RSVD_SGPIO_O_CRC[5]",
+               "RSVD_SGPIO_IN_CRC[3]","RSVD_SGPIO_O_CRC[4]",
+               "RSVD_SGPIO_IN_CRC[4]","RSVD_SGPIO_O_CRC[3]",
+               "RSVD_SGPIO_IN_CRC[5]","RSVD_SGPIO_O_CRC[2]",
+               "RSVD_SGPIO_IN_CRC[6]","RSVD_SGPIO_O_CRC[1]",
+               "RSVD_SGPIO_IN_CRC[7]","RSVD_SGPIO_O_CRC[0]";
+};
+
+// I2C1, SSIF IPMI interface
+&i2c0 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       ssif-bmc@10 {
+               compatible = "ssif-bmc";
+               reg = <0x10>;
+       };
+};
+
+// I2C2
+// BMC_I2C1_FPGA - Secondary FPGA
+// HMC EROT
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+       multi-master;
+};
+
+// I2C3
+// BMC_I2C0_FPGA - Primary FPGA
+// HMC FRU EEPROM
+&i2c2 {
+       status = "okay";
+       clock-frequency = <400000>;
+       multi-master;
+};
+
+// I2C4
+&i2c3 {
+       status = "disabled";
+};
+
+// I2C5
+// RTC Driver
+// IO Expander
+&i2c4 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       // Module 0, Expander @0x21
+       exp4: gpio@21 {
+               compatible = "nxp,pca9555";
+               reg = <0x21>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <ASPEED_GPIO(B, 6) IRQ_TYPE_LEVEL_LOW>;
+               gpio-line-names =
+                       "RTC_MUX_SEL-O",
+                       "PCI_MUX_SEL-O",
+                       "TPM_MUX_SEL-O",
+                       "FAN_MUX-SEL-O",
+                       "SGMII_MUX_SEL-O",
+                       "DP_MUX_SEL-O",
+                       "UPHY3_USB_SEL-O",
+                       "NCSI_MUX_SEL-O",
+                       "BMC_PHY_RST-O",
+                       "RTC_CLR_L-O",
+                       "BMC_12V_CTRL-O",
+                       "PS_RUN_IO0_PG-I",
+                       "",
+                       "",
+                       "",
+                       "";
+       };
+};
+
+// I2C6
+// Module 0/1 I2C MUX x3
+&i2c5 {
+       status = "okay";
+       clock-frequency = <400000>;
+       multi-master;
+
+       i2c-mux@71 {
+               compatible = "nxp,pca9546";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x71>;
+               i2c-mux-idle-disconnect;
+
+               imux16: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux17: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       i2c-mux@74 {
+                               compatible = "nxp,pca9546";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x74>;
+                               i2c-mux-idle-disconnect;
+
+                               i2c17mux0: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               i2c17mux1: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               i2c17mux2: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               i2c17mux3: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+                       };
+               };
+
+               imux18: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux19: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+       };
+
+       i2c-mux@72 {
+               compatible = "nxp,pca9546";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x72>;
+               i2c-mux-idle-disconnect;
+
+               imux20: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux21: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       gpio@21 {
+                               compatible = "nxp,pca9555";
+                               reg = <0x21>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               gpio-line-names =
+                                       "RST_CX_0_L-O",
+                                       "RST_CX_1_L-O",
+                                       "CX0_SSD0_PRSNT_L-I",
+                                       "CX1_SSD1_PRSNT_L-I",
+                                       "CX_BOOT_CMPLT_CX0-I",
+                                       "CX_BOOT_CMPLT_CX1-I",
+                                       "CX_TWARN_CX0_L-I",
+                                       "CX_TWARN_CX1_L-I",
+                                       "CX_OVT_SHDN_CX0-I",
+                                       "CX_OVT_SHDN_CX1-I",
+                                       "FNP_L_CX0-O",
+                                       "FNP_L_CX1-O",
+                                       "",
+                                       "MCU_GPIO-I",
+                                       "MCU_RST_N-O",
+                                       "MCU_RECOVERY_N-O";
+                       };
+               };
+
+               imux22: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux23: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+       };
+
+       i2c-mux@73 {
+               compatible = "nxp,pca9546";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x73>;
+               i2c-mux-idle-disconnect;
+
+               imux24: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux25: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       i2c-mux@70 {
+                               compatible = "nxp,pca9546";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x70>;
+                               i2c-mux-idle-disconnect;
+
+                               i2c25mux0: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               i2c25mux1: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               i2c25mux2: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               i2c25mux3: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+                       };
+               };
+
+               imux26: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux27: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+       };
+
+       i2c-mux@75 {
+               compatible = "nxp,pca9546";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x75>;
+               i2c-mux-idle-disconnect;
+
+               imux28: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux29: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       i2c-mux@74 {
+                               compatible = "nxp,pca9546";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x74>;
+                               i2c-mux-idle-disconnect;
+
+                               i2c29mux0: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               i2c29mux1: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               i2c29mux2: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               i2c29mux3: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+                       };
+               };
+
+               imux30: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux31: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+       };
+
+       i2c-mux@76 {
+               compatible = "nxp,pca9546";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x76>;
+               i2c-mux-idle-disconnect;
+
+               imux32: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux33: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       gpio@21 {
+                               compatible = "nxp,pca9555";
+                               reg = <0x21>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               gpio-line-names =
+                                       "SEC_RST_CX_0_L-O",
+                                       "SEC_RST_CX_1_L-O",
+                                       "SEC_CX0_SSD0_PRSNT_L-I",
+                                       "SEC_CX1_SSD1_PRSNT_L-I",
+                                       "SEC_CX_BOOT_CMPLT_CX0-I",
+                                       "SEC_CX_BOOT_CMPLT_CX1-I",
+                                       "SEC_CX_TWARN_CX0_L-I",
+                                       "SEC_CX_TWARN_CX1_L-I",
+                                       "SEC_CX_OVT_SHDN_CX0-I",
+                                       "SEC_CX_OVT_SHDN_CX1-I",
+                                       "SEC_FNP_L_CX0-O",
+                                       "SEC_FNP_L_CX1-O",
+                                       "",
+                                       "SEC_MCU_GPIO-I",
+                                       "SEC_MCU_RST_N-O",
+                                       "SEC_MCU_RECOVERY_N-O";
+                               };
+               };
+
+               imux34: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux35: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+       };
+
+       i2c-mux@77 {
+               compatible = "nxp,pca9546";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x77>;
+               i2c-mux-idle-disconnect;
+
+               imux36: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux37: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               imux38: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux39: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+       };
+};
+
+// I2C7
+// Module 0/1 Leak Sensors
+// Module 0/1 Fan Controllers
+&i2c6 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       pmic@12 {
+               compatible = "ti,lm5066i";
+               reg = <0x12>;
+               shunt-resistor-micro-ohms = <190>;
+               status = "okay";
+       };
+
+       pmic@14 {
+               compatible = "ti,lm5066i";
+               reg = <0x14>;
+               shunt-resistor-micro-ohms = <190>;
+               status = "okay";
+       };
+
+       pwm@20 {
+               compatible = "maxim,max31790";
+               reg = <0x20>;
+       };
+
+       pwm@23 {
+               compatible = "maxim,max31790";
+               reg = <0x23>;
+       };
+
+       pwm@2c {
+               compatible = "maxim,max31790";
+               reg = <0x2c>;
+       };
+
+       pwm@2f {
+               compatible = "maxim,max31790";
+               reg = <0x2f>;
+       };
+};
+
+// I2C9
+// M.2
+&i2c8 {
+       status = "okay";
+       clock-frequency = <400000>;
+       multi-master;
+};
+
+// I2C10
+// HMC IO Expander
+// Module 0/1 IO Expanders
+&i2c9 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       // Module 0, Expander @0x20
+       exp0: gpio@20 {
+               compatible = "nxp,pca9555";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <ASPEED_GPIO(B, 6) IRQ_TYPE_LEVEL_LOW>;
+               gpio-line-names =
+                       "FPGA_THERM_OVERT_L-I",
+                       "FPGA_READY_BMC-I",
+                       "HMC_BMC_DETECT-O",
+                       "HMC_PGOOD-O",
+                       "",
+                       "BMC_STBY_CYCLE-O",
+                       "FPGA_EROT_FATAL_ERROR_L-I",
+                       "WP_HW_EXT_CTRL_L-O",
+                       "EROT_FPGA_RST_L-O",
+                       "FPGA_EROT_RECOVERY_L-O",
+                       "BMC_EROT_FPGA_SPI_MUX_SEL-O",
+                       "USB_HUB_RESET_L-O",
+                       "NCSI_CS1_SEL-O",
+                       "SGPIO_EN_L-O",
+                       "B2B_IOEXP_INT_L-I",
+                       "I2C_BUS_MUX_RESET_L-O";
+       };
+
+       // Module 1, Expander @0x21
+       exp1: gpio@21 {
+               compatible = "nxp,pca9555";
+               reg = <0x21>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <ASPEED_GPIO(B, 6) IRQ_TYPE_LEVEL_LOW>;
+               gpio-line-names =
+                       "SEC_FPGA_THERM_OVERT_L-I",
+                       "SEC_FPGA_READY_BMC-I",
+                       "",
+                       "",
+                       "",
+                       "",
+                       "SEC_FPGA_EROT_FATAL_ERROR_L-I",
+                       "SEC_WP_HW_EXT_CTRL_L-O",
+                       "SEC_EROT_FPGA_RST_L-O",
+                       "SEC_FPGA_EROT_RECOVERY_L-O",
+                       "SEC_BMC_EROT_FPGA_SPI_MUX_SEL-O",
+                       "SEC_USB2_HUB_RST_L-O",
+                       "",
+                       "",
+                       "",
+                       "SEC_I2C_BUS_MUX_RESET_L-O";
+       };
+
+       // HMC Expander @0x27
+       exp2: gpio@27 {
+               compatible = "nxp,pca9555";
+               reg = <0x27>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <ASPEED_GPIO(B, 6) IRQ_TYPE_LEVEL_LOW>;
+               gpio-line-names =
+                       "HMC_PRSNT_L-I",
+                       "HMC_READY-I",
+                       "HMC_EROT_FATAL_ERROR_L-I",
+                       "I2C_MUX_SEL-O",
+                       "HMC_EROT_SPI_MUX_SEL-O",
+                       "HMC_EROT_RECOVERY_L-O",
+                       "HMC_EROT_RST_L-O",
+                       "GLOBAL_WP_HMC-O",
+                       "FPGA_RST_L-O",
+                       "USB2_HUB_RST-O",
+                       "CPU_UART_MUX_SEL-O",
+                       "",
+                       "",
+                       "",
+                       "",
+                       "";
+       };
+
+       // HMC Expander @0x74
+       exp3: gpio@74 {
+               compatible = "nxp,pca9555";
+               reg = <0x74>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <ASPEED_GPIO(B, 6) IRQ_TYPE_LEVEL_LOW>;
+               gpio-line-names =
+                       "IOB_PRSNT_L",
+                       "IOB_DP_HPD",
+                       "IOX_BMC_RESET",
+                       "IOB_IOEXP_INT_L",
+                       "IOB_UID_LED_L",
+                       "IOB_UID_BTN_L",
+                       "IOB_SYS_RST_BTN_L",
+                       "IOB_PWR_LED_L",
+                       "IOB_PWR_BTN_L",
+                       "IOB_PHY_RST",
+                       "CPLD_JTAG_MUX_SEL",
+                       "",
+                       "",
+                       "",
+                       "",
+                       "";
+       };
+};
+
+// I2C11
+// BMC FRU EEPROM
+// BMC Temp Sensor
+&i2c10 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       // BMC FRU EEPROM - 256 bytes
+       eeprom@50 {
+               compatible = "atmel,24c02";
+               reg = <0x50>;
+               pagesize = <8>;
+       };
+};
+
+// I2C12
+&i2c11 {
+       status = "disabled";
+};
+
+// I2C13
+&i2c12 {
+       status = "disabled";
+};
+
+// I2C14
+// Module 0 UPHY3 SMBus
+&i2c13 {
+       status = "disabled";
+};
+
+// I2C15
+// Module 1 UPHY3 SMBus
+&i2c14 {
+       status = "okay";
+       clock-frequency = <100000>;
+       multi-master;
+
+       //E1.S drive slot 0-3
+       i2c-mux@77 {
+               compatible = "nxp,pca9546";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x77>;
+               i2c-mux-idle-disconnect;
+
+               e1si2c0: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               e1si2c1: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               e1si2c2: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               e1si2c3: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+       };
+};
+
+// I2C16
+&i2c15 {
+       status = "okay";
+       clock-frequency = <100000>;
+       multi-master;
+
+       //E1.S drive slot 4-7
+       i2c-mux@77 {
+               compatible = "nxp,pca9546";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x77>;
+               i2c-mux-idle-disconnect;
+
+               e1si2c4: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               e1si2c5: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               e1si2c6: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               e1si2c7: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+       };
+};
+
+&rng {
+       status = "okay";
+};
+
+&gpio0 {
+       gpio-line-names =
+               /*A0-A7*/ "", "", "", "", "", "", "", "",
+               /*B0-B7*/ "", "", "", "", "", "", "", "",
+               /*C0-C7*/ "SGPIO_I2C_MUX_SEL-O", "", "", "", "", "", "", "",
+               /*D0-D7*/ "", "", "", "UART1_MUX_SEL-O", "", "FPGA_PEX_RST_L-O", "", "",
+               /*E0-E7*/ "RTL8221_PHY_RST_L-O", "RTL8211_PHY_INT_L-I", "", "UART3_MUX_SEL-O",
+                                       "", "", "", "SGPIO_BMC_EN-O",
+               /*F0-F7*/ "", "", "", "", "", "", "", "",
+               /*G0-G7*/ "", "", "", "", "", "", "", "",
+               /*H0-H7*/ "", "", "", "", "", "", "", "",
+               /*I0-I7*/ "", "", "", "", "", "QSPI2_RST_L-O", "GLOBAL_WP_BMC-O", "BMC_DDR4_TEN-O",
+               /*J0-J7*/ "", "", "", "", "", "", "", "",
+               /*K0-K7*/ "", "", "", "", "", "", "", "",
+               /*L0-L7*/ "", "", "", "", "", "", "", "",
+               /*M0-M7*/ "PCIE_EP_RST_EN-O", "BMC_FRU_WP-O", "HMC_RESET_L-O", "STBY_POWER_EN-O",
+                                       "STBY_POWER_PG-I", "PCIE_EP_RST_L-O", "", "",
+               /*N0-N7*/ "", "", "", "", "", "", "", "",
+               /*O0-O7*/ "", "", "", "", "", "", "", "",
+               /*P0-P7*/ "", "", "", "", "", "", "", "",
+               /*Q0-Q7*/ "", "", "", "", "", "", "", "",
+               /*R0-R7*/ "", "", "", "", "", "", "", "",
+               /*S0-S7*/ "", "", "", "", "", "", "", "",
+               /*T0-T7*/ "", "", "", "", "", "", "", "",
+               /*U0-U7*/ "", "", "", "", "", "", "", "",
+               /*V0-V7*/ "AP_EROT_REQ-O", "EROT_AP_GNT-I", "", "","PCB_TEMP_ALERT-I", "","", "",
+               /*W0-W7*/ "", "", "", "", "", "", "", "",
+               /*X0-X7*/ "", "", "TPM_MUX_SEL-O", "", "", "", "", "",
+               /*Y0-Y7*/ "", "", "", "EMMC_RST-O", "","", "", "",
+               /*Z0-Z7*/ "BMC_READY-O","", "", "", "", "", "", "";
+};
+
+&gpio1 {
+       /* 36 1.8V GPIOs */
+       gpio-line-names =
+               /*A0-A7*/ "", "", "", "", "", "", "", "",
+               /*B0-B7*/ "", "", "", "", "", "", "IO_EXPANDER_INT_L-I","",
+               /*C0-C7*/ "", "", "", "", "", "", "", "",
+               /*D0-D7*/ "", "", "", "", "", "", "SPI_HOST_TPM_RST_L-O", "SPI_BMC_FPGA_INT_L-I",
+               /*E0-E7*/ "", "", "", "", "", "", "", "";
+};
index 370738572a55b2498fff31a4aabf336cc41e1eac..65b2208f5a901132b61128f1204b13518a21f967 100644 (file)
                        gpios = <&gpio ASPEED_GPIO(B, 3) GPIO_ACTIVE_HIGH>;
                };
                bmc_err {
-                       lable = "BMC_fault";
+                       label = "BMC_fault";
                        gpios = <&gpio ASPEED_GPIO(H, 6) GPIO_ACTIVE_HIGH>;
                };
 
                sys_err {
-                       lable = "Sys_fault";
+                       label = "Sys_fault";
                        gpios = <&gpio ASPEED_GPIO(H, 7) GPIO_ACTIVE_HIGH>;
                };
        };
 };
 
 &gpio {
-       pin_gpio_b0 {
+       pin-gpio-b0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(B, 0) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_HDD1_PWR_EN";
        };
 
-       pin_gpio_b5 {
+       pin-gpio-b5-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(B, 5) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "BMC_USB1_OCI2";
        };
 
-       pin_gpio_h5 {
+       pin-gpio-h5-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(H, 5) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_CP0_PERST_ENABLE_R";
        };
 
-       pin_gpio_z2 {
+       pin-gpio-z2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(Z, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "RST_PCA9546_U177_N";
        };
 
-       pin_gpio_aa6 {
+       pin-gpio-aa6-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(AA, 6) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_CP0_RESET_N";
        };
 
-       pin_gpio_aa7 {
+       pin-gpio-aa7-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(AA, 7) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_TPM_RESET_N";
        };
 
-       pin_gpio_ab0 {
+       pin-gpio-ab0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(AB, 0) GPIO_ACTIVE_LOW>;
                output-high;
index b1d0ff85d397adf0cc4b5c75e04ff49a5419e2e2..1a7c61750d0ddfbeb00788711226bfeed3550409 100644 (file)
        /*AB0-AB7*/     "","","","","","","","",
        /*AC0-AC7*/     "","","","","","","","";
 
-       func_mode0 {
+       func-mode0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(D, 3) GPIO_ACTIVE_HIGH>;
                output-low;
        };
-       func_mode1 {
+       func-mode1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(D, 4) GPIO_ACTIVE_HIGH>;
                output-low;
        };
-       func_mode2 {
+       func-mode2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(D, 5) GPIO_ACTIVE_HIGH>;
                output-low;
        };
-       seq_cont {
+       seq-cont-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(S, 7) GPIO_ACTIVE_HIGH>;
                output-low;
        };
-       ncsi_cfg {
+       ncsi-cfg-hog {
                gpio-hog;
                input;
                gpios = <ASPEED_GPIO(E, 1) GPIO_ACTIVE_HIGH>;
index 45631b47a7b394482a0ffe9c77157f9a92acd21c..123da82c04d54e1fa25893d850c253f9c3343c9b 100644 (file)
 };
 
 &gpio {
-       pin_func_mode0 {
+       pin-func-mode0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(C, 4) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "func_mode0";
        };
 
-       pin_func_mode1 {
+       pin-func-mode1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(C, 5)  GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "func_mode1";
        };
 
-       pin_func_mode2 {
+       pin-func-mode2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(C, 6) GPIO_ACTIVE_HIGH>;
                output-low;
                line-name = "func_mode2";
        };
 
-       pin_gpio_a0 {
+       pin-gpio-a0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(A, 0) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "BMC_FAN_RESERVED_N";
        };
 
-       pin_gpio_a1 {
+       pin-gpio-a1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(A, 1) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "APSS_WDT_N";
        };
 
-       pin_gpio_b1 {
+       pin-gpio-b1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(B, 1) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "APSS_BOOT_MODE";
        };
 
-       pin_gpio_b2 {
+       pin-gpio-b2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(B, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "APSS_RESET_N";
        };
 
-       pin_gpio_b7 {
+       pin-gpio-b7-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(B, 7) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "SPIVID_STBY_RESET_N";
        };
 
-       pin_gpio_d1 {
+       pin-gpio-d1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(D, 1) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_POWER_UP";
        };
 
-       pin_gpio_f1 {
+       pin-gpio-f1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 1) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "BMC_BATTERY_TEST";
        };
 
-       pin_gpio_f4 {
+       pin-gpio-f4-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 4) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "AST_HW_FAULT_N";
        };
 
-       pin_gpio_f5 {
+       pin-gpio-f5-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 5) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "AST_SYS_FAULT_N";
        };
 
-       pin_gpio_f7 {
+       pin-gpio-f7-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(F, 7) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_FULL_SPEED_N";
        };
 
-       pin_gpio_g3 {
+       pin-gpio-g3-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(G, 3) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "BMC_FAN_ERROR_N";
        };
 
-       pin_gpio_g4 {
+       pin-gpio-g4-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(G, 4) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "BMC_WDT_RST1_P";
        };
 
-       pin_gpio_g5 {
+       pin-gpio-g5-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(G, 5) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "BMC_WDT_RST2_P";
        };
 
-       pin_gpio_h0 {
+       pin-gpio-h0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(H, 0) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "PE_SLOT_TEST_EN_N";
        };
 
-       pin_gpio_h1 {
+       pin-gpio-h1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(H, 1) GPIO_ACTIVE_HIGH>;
                input;
                line-name = "BMC_RTCRST_N";
        };
 
-       pin_gpio_h2 {
+       pin-gpio-h2-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
                output-high;
                line-name = "SYS_PWROK_BMC";
        };
 
-       pin_gpio_h7 {
+       pin-gpio-h7-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(H, 7) GPIO_ACTIVE_HIGH>;
                output-high;
index 24df24ad9c80b1f377d82e57fa8ea899988548a7..e6b383f6e9776bb67e0c2d9dfe98bcc6564e131a 100644 (file)
        /*AB0-AB7*/     "","","","","","","","",
        /*AC0-AC7*/     "","","","","","","","";
 
-       nic_func_mode0 {
+       nic-func-mode0-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(D, 3) GPIO_ACTIVE_HIGH>;
                output-low;
        };
-       nic_func_mode1 {
+       nic-func-mode1-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(D, 4) GPIO_ACTIVE_HIGH>;
                output-low;
        };
-       seq_cont {
+       seq-cont-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(S, 7) GPIO_ACTIVE_HIGH>;
                output-low;
diff --git a/src/arm/aspeed/aspeed-bmc-opp-swift.dts b/src/arm/aspeed/aspeed-bmc-opp-swift.dts
deleted file mode 100644 (file)
index a0e8c97..0000000
+++ /dev/null
@@ -1,974 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/dts-v1/;
-#include "aspeed-g5.dtsi"
-#include <dt-bindings/gpio/aspeed-gpio.h>
-#include <dt-bindings/leds/leds-pca955x.h>
-
-/ {
-       model = "Swift BMC";
-       compatible = "ibm,swift-bmc", "aspeed,ast2500";
-
-       chosen {
-               stdout-path = &uart5;
-               bootargs = "console=ttyS4,115200 earlycon";
-       };
-
-       memory@80000000 {
-               reg = <0x80000000 0x20000000>;
-       };
-
-       reserved-memory {
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges;
-
-               flash_memory: region@98000000 {
-                       no-map;
-                       reg = <0x98000000 0x04000000>; /* 64M */
-               };
-
-               gfx_memory: framebuffer {
-                       size = <0x01000000>;
-                       alignment = <0x01000000>;
-                       compatible = "shared-dma-pool";
-                       reusable;
-               };
-       };
-
-       gpio-keys {
-               compatible = "gpio-keys";
-
-               event-air-water {
-                       label = "air-water";
-                       gpios = <&gpio ASPEED_GPIO(B, 5) GPIO_ACTIVE_LOW>;
-                       linux,code = <ASPEED_GPIO(B, 5)>;
-               };
-
-               event-checkstop {
-                       label = "checkstop";
-                       gpios = <&gpio ASPEED_GPIO(J, 2) GPIO_ACTIVE_LOW>;
-                       linux,code = <ASPEED_GPIO(J, 2)>;
-               };
-
-               event-ps0-presence {
-                       label = "ps0-presence";
-                       gpios = <&gpio ASPEED_GPIO(R, 7) GPIO_ACTIVE_LOW>;
-                       linux,code = <ASPEED_GPIO(R, 7)>;
-               };
-
-               event-ps1-presence {
-                       label = "ps1-presence";
-                       gpios = <&gpio ASPEED_GPIO(N, 0) GPIO_ACTIVE_LOW>;
-                       linux,code = <ASPEED_GPIO(N, 0)>;
-               };
-
-               event-oppanel-presence {
-                       label = "oppanel-presence";
-                       gpios = <&gpio ASPEED_GPIO(A, 7) GPIO_ACTIVE_LOW>;
-                       linux,code = <ASPEED_GPIO(A, 7)>;
-               };
-
-               event-opencapi-riser-presence {
-                       label = "opencapi-riser-presence";
-                       gpios = <&gpio ASPEED_GPIO(I, 0) GPIO_ACTIVE_LOW>;
-                       linux,code = <ASPEED_GPIO(I, 0)>;
-               };
-       };
-
-       iio-hwmon-battery {
-               compatible = "iio-hwmon";
-               io-channels = <&adc 12>;
-       };
-
-       gpio-keys-polled {
-               compatible = "gpio-keys-polled";
-               poll-interval = <1000>;
-
-               event-scm0-presence {
-                       label = "scm0-presence";
-                       gpios = <&pca9552 6 GPIO_ACTIVE_LOW>;
-                       linux,code = <6>;
-               };
-
-               event-scm1-presence {
-                       label = "scm1-presence";
-                       gpios = <&pca9552 7 GPIO_ACTIVE_LOW>;
-                       linux,code = <7>;
-               };
-
-               event-cpu0vrm-presence {
-                       label = "cpu0vrm-presence";
-                       gpios = <&pca9552 12 GPIO_ACTIVE_LOW>;
-                       linux,code = <12>;
-               };
-
-               event-cpu1vrm-presence {
-                       label = "cpu1vrm-presence";
-                       gpios = <&pca9552 13 GPIO_ACTIVE_LOW>;
-                       linux,code = <13>;
-               };
-
-               event-fan0-presence {
-                       label = "fan0-presence";
-                       gpios = <&pca0 5 GPIO_ACTIVE_LOW>;
-                       linux,code = <5>;
-               };
-
-               event-fan1-presence {
-                       label = "fan1-presence";
-                       gpios = <&pca0 6 GPIO_ACTIVE_LOW>;
-                       linux,code = <6>;
-               };
-
-               event-fan2-presence {
-                       label = "fan2-presence";
-                       gpios = <&pca0 7 GPIO_ACTIVE_LOW>;
-                       linux,code = <7>;
-               };
-
-               event-fan3-presence {
-                       label = "fan3-presence";
-                       gpios = <&pca0 8 GPIO_ACTIVE_LOW>;
-                       linux,code = <8>;
-               };
-
-               event-fanboost-presence {
-                       label = "fanboost-presence";
-                       gpios = <&pca0 9 GPIO_ACTIVE_LOW>;
-                       linux,code = <9>;
-               };
-       };
-
-       leds {
-               compatible = "gpio-leds";
-
-               fan0 {
-                       retain-state-shutdown;
-                       default-state = "keep";
-                       gpios = <&pca0 0 GPIO_ACTIVE_LOW>;
-               };
-
-               fan1 {
-                       retain-state-shutdown;
-                       default-state = "keep";
-                       gpios = <&pca0 1 GPIO_ACTIVE_LOW>;
-               };
-
-               fan2 {
-                       retain-state-shutdown;
-                       default-state = "keep";
-                       gpios = <&pca0 2 GPIO_ACTIVE_LOW>;
-               };
-
-               fan3 {
-                       retain-state-shutdown;
-                       default-state = "keep";
-                       gpios = <&pca0 3 GPIO_ACTIVE_LOW>;
-               };
-
-               fanboost {
-                       retain-state-shutdown;
-                       default-state = "keep";
-                       gpios = <&pca0 4 GPIO_ACTIVE_LOW>;
-               };
-
-               front-fault {
-                       retain-state-shutdown;
-                       default-state = "keep";
-                       gpios = <&pca1 2 GPIO_ACTIVE_LOW>;
-               };
-
-               front-power {
-                       retain-state-shutdown;
-                       default-state = "keep";
-                       gpios = <&pca1 3 GPIO_ACTIVE_LOW>;
-               };
-
-               front-id {
-                       retain-state-shutdown;
-                       default-state = "keep";
-                       gpios = <&pca1 0 GPIO_ACTIVE_LOW>;
-               };
-
-               rear-fault {
-                       gpios = <&gpio ASPEED_GPIO(N, 2) GPIO_ACTIVE_LOW>;
-               };
-
-               rear-id {
-                       gpios = <&gpio ASPEED_GPIO(N, 4) GPIO_ACTIVE_LOW>;
-               };
-       };
-
-       fsi: gpio-fsi {
-               compatible = "fsi-master-gpio", "fsi-master";
-               #address-cells = <2>;
-               #size-cells = <0>;
-               no-gpio-delays;
-
-               clock-gpios = <&gpio ASPEED_GPIO(P, 1) GPIO_ACTIVE_HIGH>;
-               data-gpios = <&gpio ASPEED_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
-               mux-gpios = <&gpio ASPEED_GPIO(P, 4) GPIO_ACTIVE_HIGH>;
-               enable-gpios = <&gpio ASPEED_GPIO(P, 0) GPIO_ACTIVE_HIGH>;
-               trans-gpios = <&gpio ASPEED_GPIO(P, 3) GPIO_ACTIVE_HIGH>;
-       };
-
-       iio-hwmon-dps310 {
-               compatible = "iio-hwmon";
-               io-channels = <&dps 0>;
-       };
-
-};
-
-&fmc {
-       status = "okay";
-
-       flash@0 {
-               status = "okay";
-               label = "bmc";
-               m25p,fast-read;
-               spi-max-frequency = <100000000>;
-               partitions {
-                       #address-cells = < 1 >;
-                       #size-cells = < 1 >;
-                       compatible = "fixed-partitions";
-                       u-boot@0 {
-                               reg = < 0 0x60000 >;
-                               label = "u-boot";
-                       };
-                       u-boot-env@60000 {
-                               reg = < 0x60000 0x20000 >;
-                               label = "u-boot-env";
-                       };
-                       obmc-ubi@80000 {
-                               reg = < 0x80000 0x7F80000>;
-                               label = "obmc-ubi";
-                       };
-               };
-       };
-
-       flash@1 {
-               status = "okay";
-               label = "alt-bmc";
-               m25p,fast-read;
-               spi-max-frequency = <100000000>;
-               partitions {
-                       #address-cells = < 1 >;
-                       #size-cells = < 1 >;
-                       compatible = "fixed-partitions";
-                       u-boot@0 {
-                               reg = < 0 0x60000 >;
-                               label = "alt-u-boot";
-                       };
-                       u-boot-env@60000 {
-                               reg = < 0x60000 0x20000 >;
-                               label = "alt-u-boot-env";
-                       };
-                       obmc-ubi@80000 {
-                               reg = < 0x80000 0x7F80000>;
-                               label = "alt-obmc-ubi";
-                       };
-               };
-       };
-};
-
-&spi1 {
-       status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_spi1_default>;
-
-       flash@0 {
-               status = "okay";
-               label = "pnor";
-               m25p,fast-read;
-               spi-max-frequency = <100000000>;
-       };
-};
-
-&uart1 {
-       /* Rear RS-232 connector */
-       status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_txd1_default
-                       &pinctrl_rxd1_default
-                       &pinctrl_nrts1_default
-                       &pinctrl_ndtr1_default
-                       &pinctrl_ndsr1_default
-                       &pinctrl_ncts1_default
-                       &pinctrl_ndcd1_default
-                       &pinctrl_nri1_default>;
-};
-
-&uart2 {
-       /* APSS */
-       status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_txd2_default &pinctrl_rxd2_default>;
-};
-
-&uart5 {
-       status = "okay";
-};
-
-&lpc_ctrl {
-       status = "okay";
-       memory-region = <&flash_memory>;
-       flash = <&spi1>;
-};
-
-&mac0 {
-       status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_rmii1_default>;
-       use-ncsi;
-       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
-                <&syscon ASPEED_CLK_MAC1RCLK>;
-       clock-names = "MACCLK", "RCLK";
-};
-
-&i2c2 {
-       status = "okay";
-
-       /* MUX ->
-        *    Samtec 1
-        *    Samtec 2
-        */
-};
-
-&i2c3 {
-       status = "okay";
-
-       max31785@52 {
-               compatible = "maxim,max31785a";
-               reg = <0x52>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               fan@0 {
-                       compatible = "pmbus-fan";
-                       reg = <0>;
-                       tach-pulses = <2>;
-                       maxim,fan-rotor-input = "tach";
-                       maxim,fan-pwm-freq = <25000>;
-                       maxim,fan-no-watchdog;
-                       maxim,fan-no-fault-ramp;
-                       maxim,fan-ramp = <2>;
-                       maxim,fan-fault-pin-mon;
-               };
-
-               fan@1 {
-                       compatible = "pmbus-fan";
-                       reg = <1>;
-                       tach-pulses = <2>;
-                       maxim,fan-rotor-input = "tach";
-                       maxim,fan-pwm-freq = <25000>;
-                       maxim,fan-no-watchdog;
-                       maxim,fan-no-fault-ramp;
-                       maxim,fan-ramp = <2>;
-                       maxim,fan-fault-pin-mon;
-               };
-
-               fan@2 {
-                       compatible = "pmbus-fan";
-                       reg = <2>;
-                       tach-pulses = <2>;
-                       maxim,fan-rotor-input = "tach";
-                       maxim,fan-pwm-freq = <25000>;
-                       maxim,fan-no-watchdog;
-                       maxim,fan-no-fault-ramp;
-                       maxim,fan-ramp = <2>;
-                       maxim,fan-fault-pin-mon;
-               };
-
-               fan@3 {
-                       compatible = "pmbus-fan";
-                       reg = <3>;
-                       tach-pulses = <2>;
-                       maxim,fan-rotor-input = "tach";
-                       maxim,fan-pwm-freq = <25000>;
-                       maxim,fan-no-watchdog;
-                       maxim,fan-no-fault-ramp;
-                       maxim,fan-ramp = <2>;
-                       maxim,fan-fault-pin-mon;
-               };
-
-               fan@4 {
-                       compatible = "pmbus-fan";
-                       reg = <4>;
-                       tach-pulses = <2>;
-                       maxim,fan-rotor-input = "tach";
-                       maxim,fan-pwm-freq = <25000>;
-                       maxim,fan-no-watchdog;
-                       maxim,fan-no-fault-ramp;
-                       maxim,fan-ramp = <2>;
-                       maxim,fan-fault-pin-mon;
-               };
-       };
-
-       pca0: pca9552@60 {
-               compatible = "nxp,pca9552";
-               reg = <0x60>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               gpio@0 {
-                       reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@1 {
-                       reg = <1>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@2 {
-                       reg = <2>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@3 {
-                       reg = <3>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@4 {
-                       reg = <4>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@5 {
-                       reg = <5>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@6 {
-                       reg = <6>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@7 {
-                       reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@8 {
-                       reg = <8>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@9 {
-                       reg = <9>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@10 {
-                       reg = <10>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@11 {
-                       reg = <11>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@12 {
-                       reg = <12>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@13 {
-                       reg = <13>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@14 {
-                       reg = <14>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@15 {
-                       reg = <15>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-       };
-
-       power-supply@68 {
-               compatible = "ibm,cffps2";
-               reg = <0x68>;
-       };
-
-       eeprom@50 {
-               compatible = "atmel,24c64";
-               reg = <0x50>;
-       };
-
-       power-supply@69 {
-               compatible = "ibm,cffps2";
-               reg = <0x69>;
-       };
-
-       eeprom@51 {
-               compatible = "atmel,24c64";
-               reg = <0x51>;
-       };
-};
-
-&i2c7 {
-       status = "okay";
-
-       dps: dps310@76 {
-               compatible = "infineon,dps310";
-               reg = <0x76>;
-               #io-channel-cells = <0>;
-       };
-
-       tmp275@48 {
-               compatible = "ti,tmp275";
-               reg = <0x48>;
-       };
-
-       si7021a20@20 {
-               compatible = "si,si7021a20";
-               reg = <0x20>;
-       };
-
-       eeprom@50 {
-               compatible = "atmel,24c64";
-               reg = <0x50>;
-       };
-
-       pca1: pca9551@60 {
-               compatible = "nxp,pca9551";
-               reg = <0x60>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               gpio@0 {
-                       reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@1 {
-                       reg = <1>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@2 {
-                       reg = <2>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@3 {
-                       reg = <3>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@4 {
-                       reg = <4>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@5 {
-                       reg = <5>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@6 {
-                       reg = <6>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@7 {
-                       reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-       };
-};
-
-&i2c8 {
-       status = "okay";
-
-       pca9552: pca9552@60 {
-               compatible = "nxp,pca9552";
-               reg = <0x60>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               gpio-line-names = "PS_SMBUS_RESET_N", "APSS_RESET_N",
-                       "GPU0_TH_OVERT_N_BUFF", "GPU1_TH_OVERT_N_BUFF",
-                       "GPU2_TH_OVERT_N_BUFF", "GPU3_TH_OVERT_N_BUFF",
-                       "P9_SCM0_PRES", "P9_SCM1_PRES",
-                       "GPU0_PWR_GOOD_BUFF", "GPU1_PWR_GOOD_BUFF",
-                       "GPU2_PWR_GOOD_BUFF", "GPU3_PWR_GOOD_BUFF",
-                       "PRESENT_VRM_CP0_N", "PRESENT_VRM_CP1_N",
-                       "12V_BREAKER_FLT_N", "THROTTLE_UNLATCHED_N";
-
-               gpio@0 {
-                       reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@1 {
-                       reg = <1>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@2 {
-                       reg = <2>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@3 {
-                       reg = <3>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@4 {
-                       reg = <4>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@5 {
-                       reg = <5>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@6 {
-                       reg = <6>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@7 {
-                       reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@8 {
-                       reg = <8>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@9 {
-                       reg = <9>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@10 {
-                       reg = <10>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@11 {
-                       reg = <11>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@12 {
-                       reg = <12>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@13 {
-                       reg = <13>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@14 {
-                       reg = <14>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@15 {
-                       reg = <15>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-       };
-
-       rtc@32 {
-               compatible = "epson,rx8900";
-               reg = <0x32>;
-       };
-
-       eeprom@51 {
-               compatible = "atmel,24c64";
-               reg = <0x51>;
-       };
-
-       ucd90160@64 {
-               compatible = "ti,ucd90160";
-               reg = <0x64>;
-       };
-};
-
-&i2c9 {
-       status = "okay";
-
-       eeprom@50 {
-               compatible = "atmel,24c64";
-               reg = <0x50>;
-       };
-
-       tmp423a@4c {
-               compatible = "ti,tmp423";
-               reg = <0x4c>;
-       };
-
-       ir35221@71 {
-               compatible = "infineon,ir35221";
-               reg = <0x71>;
-       };
-
-       ir35221@72 {
-               compatible = "infineon,ir35221";
-               reg = <0x72>;
-       };
-
-       pca2: pca9539@74 {
-               compatible = "nxp,pca9539";
-               reg = <0x74>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               gpio@0 {
-                       reg = <0>;
-               };
-
-               gpio@1 {
-                       reg = <1>;
-               };
-
-               gpio@2 {
-                       reg = <2>;
-               };
-
-               gpio@3 {
-                       reg = <3>;
-               };
-
-               gpio@4 {
-                       reg = <4>;
-               };
-
-               gpio@5 {
-                       reg = <5>;
-               };
-
-               gpio@6 {
-                       reg = <6>;
-               };
-
-               gpio@7 {
-                       reg = <7>;
-               };
-
-               gpio@8 {
-                       reg = <8>;
-               };
-
-               gpio@9 {
-                       reg = <9>;
-               };
-
-               gpio@10 {
-                       reg = <10>;
-               };
-
-               gpio@11 {
-                       reg = <11>;
-               };
-
-               gpio@12 {
-                       reg = <12>;
-               };
-
-               gpio@13 {
-                       reg = <13>;
-               };
-
-               gpio@14 {
-                       reg = <14>;
-               };
-
-               gpio@15 {
-                       reg = <15>;
-               };
-       };
-};
-
-&i2c10 {
-       status = "okay";
-
-       eeprom@50 {
-               compatible = "atmel,24c64";
-               reg = <0x50>;
-       };
-
-       tmp423a@4c {
-               compatible = "ti,tmp423";
-               reg = <0x4c>;
-       };
-
-       ir35221@71 {
-               compatible = "infineon,ir35221";
-               reg = <0x71>;
-       };
-
-       ir35221@72 {
-               compatible = "infineon,ir35221";
-               reg = <0x72>;
-       };
-
-       pca3: pca9539@74 {
-               compatible = "nxp,pca9539";
-               reg = <0x74>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               gpio@0 {
-                       reg = <0>;
-               };
-
-               gpio@1 {
-                       reg = <1>;
-               };
-
-               gpio@2 {
-                       reg = <2>;
-               };
-
-               gpio@3 {
-                       reg = <3>;
-               };
-
-               gpio@4 {
-                       reg = <4>;
-               };
-
-               gpio@5 {
-                       reg = <5>;
-               };
-
-               gpio@6 {
-                       reg = <6>;
-               };
-
-               gpio@7 {
-                       reg = <7>;
-               };
-
-               gpio@8 {
-                       reg = <8>;
-               };
-
-               gpio@9 {
-                       reg = <9>;
-               };
-
-               gpio@10 {
-                       reg = <10>;
-               };
-
-               gpio@11 {
-                       reg = <11>;
-               };
-
-               gpio@12 {
-                       reg = <12>;
-               };
-
-               gpio@13 {
-                       reg = <13>;
-               };
-
-               gpio@14 {
-                       reg = <14>;
-               };
-
-               gpio@15 {
-                       reg = <15>;
-               };
-       };
-};
-
-&i2c11 {
-       /* MUX
-        *   -> PCIe Slot 0
-        *   -> PCIe Slot 1
-        *   -> PCIe Slot 2
-        *   -> PCIe Slot 3
-        */
-       status = "okay";
-};
-
-&i2c12 {
-       status = "okay";
-
-       tmp275@48 {
-               compatible = "ti,tmp275";
-               reg = <0x48>;
-       };
-
-       tmp275@4a {
-               compatible = "ti,tmp275";
-               reg = <0x4a>;
-       };
-};
-
-&i2c13 {
-       status = "okay";
-};
-
-&vuart {
-       status = "okay";
-};
-
-&gfx {
-       status = "okay";
-       memory-region = <&gfx_memory>;
-};
-
-&wdt1 {
-       aspeed,reset-type = "none";
-       aspeed,external-signal;
-       aspeed,ext-push-pull;
-       aspeed,ext-active-high;
-
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_wdtrst1_default>;
-};
-
-&wdt2 {
-       aspeed,alt-boot;
-};
-
-&ibt {
-       status = "okay";
-};
-
-&adc {
-       status = "okay";
-};
-
-&sdmmc {
-       status = "okay";
-};
-
-&sdhci1 {
-       status = "okay";
-
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_sd2_default>;
-};
-
-#include "ibm-power9-dual.dtsi"
index 9904f0a58cfac61ed2479f439ab64fbaddb094cf..6ac7b0aa6e548da09fae7ba2d1512f1d6fcc2dc8 100644 (file)
        /*AB0-AB7*/     "","","","","","","","",
        /*AC0-AC7*/     "","","","","","","","";
 
-       line_iso_u146_en {
+       line-iso-u146-en-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(O, 4) GPIO_ACTIVE_HIGH>;
                output-high;
        };
 
-       ncsi_mux_en_n {
+       ncsi-mux-en-n-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(P, 0) GPIO_ACTIVE_HIGH>;
                output-low;
        };
 
-       line_bmc_i2c2_sw_rst_n {
+       line-bmc-i2c2-sw-rst-n-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(P, 1) GPIO_ACTIVE_HIGH>;
                output-high;
        };
 
-       line_bmc_i2c5_sw_rst_n {
+       line-bmc-i2c5-sw-rst-n-hog {
                gpio-hog;
                gpios = <ASPEED_GPIO(P, 3) GPIO_ACTIVE_HIGH>;
                output-high;
index e74ba6bf370da63d3c115e38b4f20c71baff2116..4ec568586b14c89daceddea8f17381f72f512a93 100644 (file)
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
-               ranges = <0 0xfffe8000 0x8100>;
+               ranges = <0 0xfffe8000 0x10000>;
 
                timer: timer@80 {
                        compatible = "brcm,bcm6328-timer", "syscon";
                        reg = <0x80 0x3c>;
                };
 
+               /* GPIOs 0 .. 31 */
+               gpio0: gpio@100 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x100 0x04>, <0x114 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 32 .. 63 */
+               gpio1: gpio@104 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x104 0x04>, <0x118 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 64 .. 95 */
+               gpio2: gpio@108 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x108 0x04>, <0x11c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 96 .. 127 */
+               gpio3: gpio@10c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x10c 0x04>, <0x120 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 128 .. 159 */
+               gpio4: gpio@110 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x110 0x04>, <0x124 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               rng@300 {
+                       compatible = "brcm,iproc-rng200";
+                       reg = <0x300 0x28>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                serial0: serial@600 {
                        compatible = "brcm,bcm6345-uart";
                        reg = <0x600 0x1b>;
                        status = "disabled";
                };
 
+               leds: led-controller@700 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "brcm,bcm63138-leds";
+                       reg = <0x700 0xdc>;
+                       status = "disabled";
+               };
+
                hsspi: spi@1000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0x8000 0x50>;
                };
 
+               pl081_dma: dma-controller@d000 {
+                       compatible = "arm,pl081", "arm,primecell";
+                       // The magic B105F00D info is missing
+                       arm,primecell-periphid = <0x00041081>;
+                       reg = <0xd000 0x1000>;
+                       interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+                       memcpy-burst-size = <256>;
+                       memcpy-bus-width = <32>;
+                       clocks = <&periph_clk>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <2>;
+               };
+
                reboot {
                        compatible = "syscon-reboot";
                        regmap = <&timer>;
index 53703827ee3fe58ead1dbe70536d7293ad842d0c..e071cddb28fc2888b8f408b4bc275290dd135642 100644 (file)
                #size-cells = <1>;
                ranges = <0 0xfffe8000 0x8000>;
 
+               /* GPIOs 0 .. 31 */
+               gpio0: gpio@100 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x100 0x04>, <0x114 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 32 .. 63 */
+               gpio1: gpio@104 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x104 0x04>, <0x118 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 64 .. 95 */
+               gpio2: gpio@108 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x108 0x04>, <0x11c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 96 .. 127 */
+               gpio3: gpio@10c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x10c 0x04>, <0x120 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 128 .. 159 */
+               gpio4: gpio@110 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x110 0x04>, <0x124 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               rng@300 {
+                       compatible = "brcm,iproc-rng200";
+                       reg = <0x300 0x28>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                uart0: serial@600 {
                        compatible = "brcm,bcm6345-uart";
                        reg = <0x600 0x20>;
                        status = "disabled";
                };
 
+               leds: led-controller@700 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "brcm,bcm63138-leds";
+                       reg = <0x700 0xdc>;
+                       status = "disabled";
+               };
+
                hsspi: spi@1000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
index 6d8d33498983acfc0c65ee155f64ddedc4a6b376..430750b3030f2534d6bf0468d895ca565007a53f 100644 (file)
                #size-cells = <1>;
                ranges = <0 0xff800000 0x800000>;
 
+               watchdog@480 {
+                       compatible = "brcm,bcm6345-wdt";
+                       reg = <0x480 0x10>;
+               };
+
+               /* GPIOs 0 .. 31 */
+               gpio0: gpio@500 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x500 0x04>, <0x520 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 32 .. 63 */
+               gpio1: gpio@504 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x504 0x04>, <0x524 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 64 .. 95 */
+               gpio2: gpio@508 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x508 0x04>, <0x528 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 96 .. 127 */
+               gpio3: gpio@50c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x50c 0x04>, <0x52c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 128 .. 159 */
+               gpio4: gpio@510 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x510 0x04>, <0x530 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 160 .. 191 */
+               gpio5: gpio@514 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x514 0x04>, <0x534 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 192 .. 223 */
+               gpio6: gpio@518 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x518 0x04>, <0x538 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 224 .. 255 */
+               gpio7: gpio@51c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x51c 0x04>, <0x53c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               rng@b80 {
+                       compatible = "brcm,iproc-rng200";
+                       reg = <0xb80 0x28>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                hsspi: spi@1000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        };
                };
 
+               leds: led-controller@3000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "brcm,bcm63138-leds";
+                       reg = <0x3000 0xdc>;
+                       status = "disabled";
+               };
+
+               pl081_dma: dma-controller@11000 {
+                       compatible = "arm,pl081", "arm,primecell";
+                       // The magic B105F00D info is missing
+                       arm,primecell-periphid = <0x00041081>;
+                       reg = <0x11000 0x1000>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+                       memcpy-burst-size = <256>;
+                       memcpy-bus-width = <32>;
+                       clocks = <&periph_clk>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <2>;
+               };
+
                uart0: serial@12000 {
                        compatible = "arm,pl011", "arm,primecell";
                        reg = <0x12000 0x1000>;
index e0e06af3fe891df3c3d8c2005cf1980d33a7762b..f5591a45d2e4ad64d8f95680aea327771825252b 100644 (file)
                rng@b80 {
                        compatible = "brcm,iproc-rng200";
                        reg = <0xb80 0x28>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
                };
 
                leds: led-controller@800 {
index 52915ec6f339335d87b4e50e1c03625fffb9a45d..a88c3f0fbcb037ee5c6b31933415f90cb51ded2a 100644 (file)
                #size-cells = <1>;
                ranges = <0 0xff800000 0x800000>;
 
+               watchdog@480 {
+                       compatible = "brcm,bcm6345-wdt";
+                       reg = <0x480 0x10>;
+               };
+
+               watchdog@4c0 {
+                       compatible = "brcm,bcm6345-wdt";
+                       reg = <0x4c0 0x10>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 0 .. 31 */
+               gpio0: gpio@500 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x500 0x04>, <0x520 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 32 .. 63 */
+               gpio1: gpio@504 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x504 0x04>, <0x524 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 64 .. 95 */
+               gpio2: gpio@508 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x508 0x04>, <0x528 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 96 .. 127 */
+               gpio3: gpio@50c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x50c 0x04>, <0x52c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 128 .. 159 */
+               gpio4: gpio@510 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x510 0x04>, <0x530 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 160 .. 191 */
+               gpio5: gpio@514 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x514 0x04>, <0x534 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 192 .. 223 */
+               gpio6: gpio@518 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x518 0x04>, <0x538 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 224 .. 255 */
+               gpio7: gpio@51c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x51c 0x04>, <0x53c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               rng@b80 {
+                       compatible = "brcm,iproc-rng200";
+                       reg = <0xb80 0x28>;
+                       interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                hsspi: spi@1000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        };
                };
 
+               leds: led-controller@3000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "brcm,bcm63138-leds";
+                       reg = <0x3000 0xdc>;
+                       status = "disabled";
+               };
+
+               pl081_dma: dma-controller@11000 {
+                       compatible = "arm,pl081", "arm,primecell";
+                       // The magic B105F00D info is missing
+                       arm,primecell-periphid = <0x00041081>;
+                       reg = <0x11000 0x1000>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+                       memcpy-burst-size = <256>;
+                       memcpy-bus-width = <32>;
+                       clocks = <&periph_clk>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <2>;
+               };
+
                uart0: serial@12000 {
                        compatible = "arm,pl011", "arm,primecell";
                        reg = <0x12000 0x1000>;
                        clock-names = "uartclk", "apb_pclk";
                        status = "disabled";
                };
+
+               uart1: serial@13000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x13000 0x1000>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&uart_clk>, <&uart_clk>;
+                       clock-names = "uartclk", "apb_pclk";
+                       status = "disabled";
+               };
        };
 };
index 70cf23a65fdb5ac7ed9eabc986f4ebb4df263c43..dd837bf693905736a7b8ef9cfefea8368e6df6ed 100644 (file)
                #size-cells = <1>;
                ranges = <0 0xff800000 0x800000>;
 
+               watchdog@480 {
+                       compatible = "brcm,bcm6345-wdt";
+                       reg = <0x480 0x10>;
+               };
+
+               watchdog@4c0 {
+                       compatible = "brcm,bcm6345-wdt";
+                       reg = <0x4c0 0x10>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 0 .. 31 */
+               gpio0: gpio@500 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x500 0x04>, <0x520 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 32 .. 63 */
+               gpio1: gpio@504 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x504 0x04>, <0x524 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 64 .. 95 */
+               gpio2: gpio@508 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x508 0x04>, <0x528 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 96 .. 127 */
+               gpio3: gpio@50c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x50c 0x04>, <0x52c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 128 .. 159 */
+               gpio4: gpio@510 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x510 0x04>, <0x530 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 160 .. 191 */
+               gpio5: gpio@514 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x514 0x04>, <0x534 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 192 .. 223 */
+               gpio6: gpio@518 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x518 0x04>, <0x538 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 224 .. 255 */
+               gpio7: gpio@51c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x51c 0x04>, <0x53c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               rng@b80 {
+                       compatible = "brcm,iproc-rng200";
+                       reg = <0xb80 0x28>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               leds: led-controller@700 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "brcm,bcm63138-leds";
+                       reg = <0x700 0xdc>;
+                       status = "disabled";
+               };
+
                hsspi: spi@1000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        };
                };
 
+               pl081_dma: dma-controller@11000 {
+                       compatible = "arm,pl081", "arm,primecell";
+                       // The magic B105F00D info is missing
+                       arm,primecell-periphid = <0x00041081>;
+                       reg = <0x11000 0x1000>;
+                       interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                       memcpy-burst-size = <256>;
+                       memcpy-bus-width = <32>;
+                       clocks = <&periph_clk>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <2>;
+               };
+
                uart0: serial@12000 {
                        compatible = "arm,pl011", "arm,primecell";
                        reg = <0x12000 0x1000>;
-                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&uart_clk>, <&uart_clk>;
                        clock-names = "uartclk", "apb_pclk";
                        status = "disabled";
index 5ac2042515b8f5a9156c47f18f0bb42fdbb2772b..c6307c7437e3bf263ab99eed248541eab5fe0f27 100644 (file)
                        ranges = <0x0 0x0 0x80000>;
 
                        memc-ddr@2000 {
-                               compatible = "brcm,brcmstb-memc-ddr";
+                               compatible = "brcm,brcmstb-memc-ddr-rev-b.1.x",
+                                            "brcm,brcmstb-memc-ddr";
                                reg = <0x2000 0x800>;
                        };
 
                        ranges = <0x0 0x80000 0x80000>;
 
                        memc-ddr@2000 {
-                               compatible = "brcm,brcmstb-memc-ddr";
+                               compatible = "brcm,brcmstb-memc-ddr-rev-b.1.x",
+                                            "brcm,brcmstb-memc-ddr";
                                reg = <0x2000 0x800>;
                        };
 
                        ranges = <0x0 0x100000 0x80000>;
 
                        memc-ddr@2000 {
-                               compatible = "brcm,brcmstb-memc-ddr";
+                               compatible = "brcm,brcmstb-memc-ddr-rev-b.1.x",
+                                            "brcm,brcmstb-memc-ddr";
                                reg = <0x2000 0x800>;
                        };
 
index 71a8b77b46f4528b8ecd60f020854dee0b8215b8..7e71aecb72518a7708399e4704394ba7b3928c94 100644 (file)
                led-1 {
                        function = LED_FUNCTION_INDICATOR;
                        color = <LED_COLOR_ID_RED>;
-                       pwms = <&pwm 1 50000>;
+                       pwms = <&pwm 1 50000 0>;
                        max-brightness = <255>;
                };
 
                led-2 {
                        function = LED_FUNCTION_POWER;
                        color = <LED_COLOR_ID_GREEN>;
-                       pwms = <&pwm 2 50000>;
+                       pwms = <&pwm 2 50000 0>;
                        max-brightness = <255>;
                };
 
                led-3 {
                        function = LED_FUNCTION_INDICATOR;
                        color = <LED_COLOR_ID_BLUE>;
-                       pwms = <&pwm 3 50000>;
+                       pwms = <&pwm 3 50000 0>;
                        max-brightness = <255>;
                };
        };
 
 &pwm {
        status = "okay";
-       #pwm-cells = <2>;
 };
 
 &uart0 {
index 98275a363c57cde22ef57c3885bc4469677ef790..cb1842c83ac8edc311ea30515f2e9c97f303cf17 100644 (file)
                cs-gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
                num-chipselects = <1>;
 
-               switch@0 {
+               ethernet-switch@0 {
                        compatible = "micrel,ks8995";
                        reg = <0>;
                        spi-max-frequency = <50000000>;
+
+                       /*
+                        * The PHYs are accessed over the external MDIO
+                        * bus and not internally through the switch control
+                        * registers.
+                        */
+                       ethernet-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               ethernet-port@0 {
+                                       reg = <0>;
+                                       label = "1";
+                                       phy-mode = "mii";
+                                       phy-handle = <&phy1>;
+                               };
+                               ethernet-port@1 {
+                                       reg = <1>;
+                                       label = "2";
+                                       phy-mode = "mii";
+                                       phy-handle = <&phy2>;
+                               };
+                               ethernet-port@2 {
+                                       reg = <2>;
+                                       label = "3";
+                                       phy-mode = "mii";
+                                       phy-handle = <&phy3>;
+                               };
+                               ethernet-port@3 {
+                                       reg = <3>;
+                                       label = "4";
+                                       phy-mode = "mii";
+                                       phy-handle = <&phy4>;
+                               };
+                               ethernet-port@4 {
+                                       reg = <4>;
+                                       ethernet = <&ethb>;
+                                       phy-mode = "mii";
+                                       fixed-link {
+                                               speed = <100>;
+                                               full-duplex;
+                                       };
+                               };
+
+                       };
                };
        };
 
                };
 
                /*
-                * EthB - connected to the KS8995 switch ports 1-4
-                * FIXME: the boardfile defines .phy_mask = 0x1e for this port to enable output to
-                * all four switch ports, also using an out of tree multiphy patch.
-                * Do we need a new binding and property for this?
+                * EthB connects to the KS8995 CPU port and faces ports 1-4
+                * through the switch fabric.
+                *
+                * To complicate things, the MDIO channel is also only
+                * accessible through EthB, but used independently for PHY
+                * control.
                 */
-               ethernet@c8009000 {
+               ethb: ethernet@c8009000 {
                        status = "okay";
                        queue-rx = <&qmgr 3>;
                        queue-txready = <&qmgr 20>;
-                       phy-mode = "rgmii";
-                       phy-handle = <&phy4>;
+                       phy-mode = "mii";
+                       fixed-link {
+                               speed = <100>;
+                               full-duplex;
+                       };
 
                        mdio {
                                #address-cells = <1>;
                                #size-cells = <0>;
 
-                               /* Should be ports 1-4 on the KS8995 switch */
+                               /*
+                                * LAN ports 1-4 on the KS8995 switch
+                                * and PHY5 for WAN need to be accessed
+                                * through this external MDIO channel.
+                                */
+                               phy1: ethernet-phy@1 {
+                                       reg = <1>;
+                               };
+                               phy2: ethernet-phy@2 {
+                                       reg = <2>;
+                               };
+                               phy3: ethernet-phy@3 {
+                                       reg = <3>;
+                               };
                                phy4: ethernet-phy@4 {
                                        reg = <4>;
                                };
-
-                               /* Should be port 5 on the KS8995 switch */
                                phy5: ethernet-phy@5 {
                                        reg = <5>;
                                };
                        };
                };
 
-               /* EthC - connected to KS8995 switch port 5 */
-               ethernet@c800a000 {
+               /*
+                * EthC connects to MII-P5 on the KS8995 bypassing
+                * all of the switch logic and facing PHY5
+                */
+               ethc: ethernet@c800a000 {
                        status = "okay";
                        queue-rx = <&qmgr 4>;
                        queue-txready = <&qmgr 21>;
-                       phy-mode = "rgmii";
+                       phy-mode = "mii";
                        phy-handle = <&phy5>;
                };
        };
index ce0d6514eeb57131d0fc6982e51ff3b1bd67e230..e4794ccb8e413f27a2c8b6a0dd41efb27f4b8ee3 100644 (file)
        mdio0 {
                #address-cells = <1>;
                #size-cells = <0>;
-               phy0: ethernet-phy@0 {
-                       reg = <0>;
+               compatible = "snps,dwmac-mdio";
+
+               phy0: ethernet-phy@4 {
+                       reg = <4>;
                        rxd0-skew-ps = <0>;
                        rxd1-skew-ps = <0>;
                        rxd2-skew-ps = <0>;
index a7dc4c04d10bdf19f7eab0e5b849e311b649074d..a9a05d826f2233b8b4e04c7d586cbe96504b8aa3 100644 (file)
                        "Out Jack", "HPL",
                        "Out Jack", "HPR",
                        "AIN1L", "In Jack",
-                       "AIN1L", "In Jack";
+                       "AIN1R", "In Jack";
                status = "okay";
 
                simple-audio-card,dai-link@0 {
index 52baffe45f1265eebe7d6be416f94041a64e6ef3..259cb3d5f16df9402c0bc75ebda2ef14f26dc2a0 100644 (file)
@@ -27,8 +27,8 @@
 
        i2c {
                compatible = "i2c-gpio";
-               gpios = < &gpio0 8 GPIO_ACTIVE_HIGH             /* sda */
-                         &gpio0 9 GPIO_ACTIVE_HIGH>;           /* scl */
+               sda-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
        };
 };
index d4e0b8150a84ce21f2ac88e1e79789537b42d8f7..cf26e2ceaaa074ad50132238de7282e398bf116b 100644 (file)
@@ -38,7 +38,7 @@
                simple-audio-card,mclk-fs = <256>;
 
                simple-audio-card,cpu {
-                       sound-dai = <&audio0 0>;
+                       sound-dai = <&audio0>;
                };
 
                simple-audio-card,codec {
diff --git a/src/arm/mediatek/mt6572-jty-d101.dts b/src/arm/mediatek/mt6572-jty-d101.dts
new file mode 100644 (file)
index 0000000..18c3cab
--- /dev/null
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2025 Max Shevchenko <wctrl@proton.me>
+ */
+
+/dts-v1/;
+#include "mt6572.dtsi"
+
+/ {
+       model = "JTY D101";
+       compatible = "jty,d101", "mediatek,mt6572";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               stdout-path = "serial0:921600n8";
+
+               framebuffer: framebuffer@bf400000 {
+                       compatible = "simple-framebuffer";
+                       memory-region = <&framebuffer_reserved>;
+                       width = <1024>;
+                       height = <600>;
+                       stride = <(1024 * 2)>;
+                       format = "r5g6b5";
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x40000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               connsys@80000000 {
+                       reg = <0x80000000 0x100000>;
+                       no-map;
+               };
+
+               modem@be000000 {
+                       reg = <0xbe000000 0x1400000>;
+                       no-map;
+               };
+
+               framebuffer_reserved: framebuffer@bf400000 {
+                       reg = <0xbf400000 0xc00000>;
+                       no-map;
+               };
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/src/arm/mediatek/mt6572-lenovo-a369i.dts b/src/arm/mediatek/mt6572-lenovo-a369i.dts
new file mode 100644 (file)
index 0000000..c2f0c60
--- /dev/null
@@ -0,0 +1,56 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2025 Max Shevchenko <wctrl@proton.me>
+ */
+
+/dts-v1/;
+#include "mt6572.dtsi"
+
+/ {
+       model = "Lenovo A369i";
+       compatible = "lenovo,a369i", "mediatek,mt6572";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               stdout-path = "serial0:921600n8";
+
+               framebuffer: framebuffer@9fa00000 {
+                       compatible = "simple-framebuffer";
+                       memory-region = <&framebuffer_reserved>;
+                       width = <480>;
+                       height = <800>;
+                       stride = <(480 * 2)>;
+                       format = "r5g6b5";
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               connsys@80000000 {
+                       reg = <0x80000000 0x100000>;
+                       no-map;
+               };
+
+               framebuffer_reserved: framebuffer@9fa00000 {
+                       reg = <0x9fa00000 0x600000>;
+                       no-map;
+               };
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/src/arm/mediatek/mt6572.dtsi b/src/arm/mediatek/mt6572.dtsi
new file mode 100644 (file)
index 0000000..ac70f26
--- /dev/null
@@ -0,0 +1,108 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2025 Max Shevchenko <wctrl@proton.me>
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       #address-cells = <1>;
+       #size-cells = <1>;
+       interrupt-parent = <&sysirq>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               enable-method = "mediatek,mt6589-smp";
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x0>;
+               };
+               cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x1>;
+               };
+       };
+
+       uart_clk: dummy26m {
+               compatible = "fixed-clock";
+               clock-frequency = <26000000>;
+               #clock-cells = <0>;
+       };
+
+       system_clk: dummy13m {
+               compatible = "fixed-clock";
+               clock-frequency = <13000000>;
+               #clock-cells = <0>;
+       };
+
+       rtc_clk: dummy32k {
+               compatible = "fixed-clock";
+               clock-frequency = <32000>;
+               #clock-cells = <0>;
+       };
+
+       soc {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "simple-bus";
+               ranges;
+
+               watchdog: watchdog@10007000 {
+                       compatible = "mediatek,mt6572-wdt", "mediatek,mt6589-wdt";
+                       reg = <0x10007000 0x100>;
+                       interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_LOW>;
+                       timeout-sec = <15>;
+                       #reset-cells = <1>;
+               };
+
+               timer: timer@10008000 {
+                       compatible = "mediatek,mt6572-timer", "mediatek,mt6577-timer";
+                       reg = <0x10008000 0x80>;
+                       interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_LOW>;
+                       clocks = <&system_clk>, <&rtc_clk>;
+                       clock-names = "system-clk", "rtc-clk";
+               };
+
+               sysirq: interrupt-controller@10200100 {
+                       compatible = "mediatek,mt6572-sysirq", "mediatek,mt6577-sysirq";
+                       reg = <0x10200100 0x1c>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       interrupt-parent = <&gic>;
+               };
+
+               gic: interrupt-controller@10211000 {
+                       compatible = "arm,cortex-a7-gic";
+                       reg = <0x10211000 0x1000>,
+                             <0x10212000 0x2000>,
+                             <0x10214000 0x2000>,
+                             <0x10216000 0x2000>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       interrupt-parent = <&gic>;
+               };
+
+               uart0: serial@11005000 {
+                       compatible = "mediatek,mt6572-uart", "mediatek,mt6577-uart";
+                       reg = <0x11005000 0x400>;
+                       interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_LOW>;
+                       clocks = <&uart_clk>;
+                       clock-names = "baud";
+                       status = "disabled";
+               };
+
+               uart1: serial@11006000 {
+                       compatible = "mediatek,mt6572-uart", "mediatek,mt6577-uart";
+                       reg = <0x11006000 0x400>;
+                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
+                       clocks = <&uart_clk>;
+                       clock-names = "baud";
+                       status = "disabled";
+               };
+       };
+};
index cdc56b53299d1bab88d2a9591a258a44c7d4a427..c1ff3248bd8f954664aa3c5d796a7976ed51463d 100644 (file)
                compatible = "jedec,spi-nor";
                reg = <0>;
                spi-max-frequency = <104000000>;
-               spi-cs-setup-ns = <7>;
+               spi-cs-setup-delay-ns = <7>;
                spi-tx-bus-width = <4>;
                spi-rx-bus-width = <4>;
                m25p,fast-read;
index 8ac85dac5a969d9dd2005ec42977c9145318b4fa..13c28e92b17e0e4a70862e908a6673f390c2bd38 100644 (file)
@@ -44,7 +44,7 @@
                                        compatible = "jedec,spi-nor";
                                        reg = <0>;
                                        spi-max-frequency = <104000000>;
-                                       spi-cs-setup-ns = <7>;
+                                       spi-cs-setup-delay-ns = <7>;
                                        spi-tx-bus-width = <4>;
                                        spi-rx-bus-width = <4>;
                                        m25p,fast-read;
index ef11606a82b31c2f745141cdac1318805f473273..0417f53b3e964df8bc3746b04bc1ea203fbec0d0 100644 (file)
                compatible = "jedec,spi-nor";
                reg = <0>;
                spi-max-frequency = <104000000>;
-               spi-cs-setup-ns = <7>;
+               spi-cs-setup-delay-ns = <7>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <4>;
                m25p,fast-read;
 
        wilc: wifi@0 {
                reg = <0>;
-               compatible = "microchip,wilc1000";
+               compatible = "microchip,wilc3000", "microchip,wilc1000";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_wilc_default>;
                clocks = <&pmc PMC_TYPE_SYSTEM 9>;
index 9fa6f1395aa6e2876a40389327a91ad05759762d..fbae6a9af6c3cfacb1a9508c6fc54e2739f5881a 100644 (file)
                compatible = "jedec,spi-nor";
                reg = <0>;
                spi-max-frequency = <104000000>;
-               spi-cs-setup-ns = <7>;
+               spi-cs-setup-delay-ns = <7>;
                spi-tx-bus-width = <4>;
                spi-rx-bus-width = <4>;
                m25p,fast-read;
index 53a657cf4efba305225836e196d448ff0ea98044..d086437f5e6fcd336613479cecc45e6c323a9d9c 100644 (file)
                regulator-max-microvolt = <5000000>;
                regulator-always-on;
        };
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
+       status = "okay";
+};
 
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can2_default>;
+       status = "okay";
+};
+
+&can3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can3_default>;
+       status = "okay";
 };
 
 &dma0 {
 };
 
 &pioa {
+       pinctrl_can1_default: can1-default {
+               pinmux = <PIN_PD10__CANTX1>,
+                        <PIN_PD11__CANRX1>;
+               bias-disable;
+       };
+
+       pinctrl_can2_default: can2-default {
+               pinmux = <PIN_PD12__CANTX2>,
+                        <PIN_PD13__CANRX2>;
+               bias-disable;
+       };
+
+       pinctrl_can3_default: can3-default {
+               pinmux = <PIN_PD14__CANTX3>,
+                        <PIN_PD15__CANRX3>;
+               bias-disable;
+       };
+
        pinctrl_gmac0_default: gmac0-default {
                pinmux = <PIN_PA26__G0_TX0>,
                         <PIN_PA27__G0_TX1>,
 
 &sdmmc1 {
        bus-width = <4>;
+       no-1-8-v;
+       sdhci-caps-mask = <0x0 0x00200000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_sdmmc1_default>;
        status = "okay";
index 2543599013b1d315b4045440d945913de1c5a7c8..3924f62ff0fbae2205ffdc2fb79a1bf2270e9d41 100644 (file)
                i2c2 = &i2c9;
        };
 
-       clocks {
-               slow_xtal {
-                       clock-frequency = <32768>;
-               };
-
-               main_xtal {
-                       clock-frequency = <24000000>;
-               };
-       };
-
        gpio-keys {
                compatible = "gpio-keys";
 
        pinctrl-0 = <&pinctrl_i2s0_default>;
 };
 
+&main_xtal {
+       clock-frequency = <24000000>;
+};
+
 &pdmc0 {
        #sound-dai-cells = <0>;
        microchip,mic-pos = <MCHP_PDMC_DS0 MCHP_PDMC_CLK_NEGATIVE>, /* MIC 1 */
        };
 };
 
+&slow_xtal {
+       clock-frequency = <32768>;
+};
+
 &spdifrx {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_spdifrx_default>;
index 2a4c83d887331fcc5e75e50a39d0c85e4d506f31..e105ad855ce8bef21989ec78dc6ae79e5d7da5a4 100644 (file)
 
        i2c-gpio-0 {
                compatible = "i2c-gpio";
-               gpios = <&pioA 25 GPIO_ACTIVE_HIGH /* sda */
-                        &pioA 26 GPIO_ACTIVE_HIGH /* scl */
-                       >;
+               sda-gpios = <&pioA 25 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioA 26 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
index ec973f07a9619b2a8fd78937dbb5f04f4103a3f0..fc0b6a73204f878b4cd2ec5481f969dcd6315c55 100644 (file)
 
        i2c_gpio0: i2c-gpio-0 {
                compatible = "i2c-gpio";
-               gpios = <&pioA 23 GPIO_ACTIVE_HIGH /* sda */
-                        &pioA 24 GPIO_ACTIVE_HIGH /* scl */
-                       >;
+               sda-gpios = <&pioA 23 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioA 24 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
index 0b556c234557a21e12d64bbf18a1bc67f2b98cf1..d1d678b77e84b25345ad79a45c84da1ea9d959ce 100644 (file)
                compatible = "i2c-gpio";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_i2c_bitbang>;
-               gpios = <&pioA 7 GPIO_ACTIVE_HIGH>, /* sda */
-                       <&pioA 8 GPIO_ACTIVE_HIGH>; /* scl */
+               sda-gpios = <&pioA 7 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioA 8 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
index 3e9e5ce7c6c884954023f2dce7722c1ecc1743dc..a4b5d1f228f9c25abac46e83a92797b7cf98cd87 100644 (file)
 
        i2c-gpio-0 {
                compatible = "i2c-gpio";
-               gpios = <&pioB 4 GPIO_ACTIVE_HIGH /* sda */
-                        &pioB 5 GPIO_ACTIVE_HIGH /* scl */
-                       >;
+               sda-gpios = <&pioB 4 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioB 5 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
index e0c1e8df81b10f2c64fe9ac5aa4047b5b8c24bc5..947c011c1b00472332871770632ff56ae68601bd 100644 (file)
@@ -46,7 +46,7 @@
                led-power-green {
                        label = "smartgw:power:green";
                        gpios = <&pioC 20 GPIO_ACTIVE_HIGH>;
-                       default-state = "on";
+                       linux,default-trigger = "timer";
                };
 
                led-power-red {
index 535e26e05e998e202efbca07d29cc177a1d526f9..4e00ed2d3ecdf01d830a05bb4e4ecc3e214c8b81 100644 (file)
 
        i2c-gpio-0 {
                compatible = "i2c-gpio";
-               gpios = <&pioA 20 GPIO_ACTIVE_HIGH /* sda */
-                        &pioA 21 GPIO_ACTIVE_HIGH /* scl */
-                       >;
+               sda-gpios = <&pioA 20 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioA 21 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <5>;        /* ~100 kHz */
index 2f930c39ce4d7945eb769a995a0d81a2cd6e11c1..af41c3dbb4bfbbf5e3e858b9e687816af6fb7dc6 100644 (file)
 
        i2c-gpio-0 {
                compatible = "i2c-gpio";
-               gpios = <&pioA 30 GPIO_ACTIVE_HIGH /* sda */
-                        &pioA 31 GPIO_ACTIVE_HIGH /* scl */
-                       >;
+               sda-gpios = <&pioA 30 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioA 31 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
index 1fec9fcc7cd184475693ca43da2d9e1bd794a3fd..de74cf2980a043ee70ffb9ea0dfc82efaf9fd585 100644 (file)
 
        i2c-gpio-0 {
                compatible = "i2c-gpio";
-               gpios = <&pioA 23 GPIO_ACTIVE_HIGH>, /* sda */
-                       <&pioA 24 GPIO_ACTIVE_HIGH>; /* scl */
+               sda-gpios = <&pioA 23 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioA 24 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
 
        i2c-gpio-1 {
                compatible = "i2c-gpio";
-               gpios = <&pioD 10 GPIO_ACTIVE_HIGH>, /* sda */
-                       <&pioD 11 GPIO_ACTIVE_HIGH>; /* scl */
+               sda-gpios = <&pioD 10 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioD 11 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
index 17bdf1e4db012a01aefe70a8be0cce911de36ed1..9070fd06995a0ac16f75311864f3dd735f2bf52b 100644 (file)
 
        i2c-gpio-0 {
                compatible = "i2c-gpio";
-               gpios = <&pioA 30 GPIO_ACTIVE_HIGH /* sda */
-                        &pioA 31 GPIO_ACTIVE_HIGH /* scl */
-                       >;
+               sda-gpios = <&pioA 30 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioA 31 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
 
        i2c-gpio-1 {
                compatible = "i2c-gpio";
-               gpios = <&pioC 0 GPIO_ACTIVE_HIGH /* sda */
-                        &pioC 1 GPIO_ACTIVE_HIGH /* scl */
-                       >;
+               sda-gpios = <&pioC 0 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioC 1 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
 
        i2c-gpio-2 {
                compatible = "i2c-gpio";
-               gpios = <&pioB 4 GPIO_ACTIVE_HIGH /* sda */
-                        &pioB 5 GPIO_ACTIVE_HIGH /* scl */
-                       >;
+               sda-gpios = <&pioB 4 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&pioB 5 GPIO_ACTIVE_HIGH>;
                i2c-gpio,sda-open-drain;
                i2c-gpio,scl-open-drain;
                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
index b217a908f525349833d78ce809941b9419e6b03c..66c07e642c3e1a2272490ec311062dfdf291c1cc 100644 (file)
        clocks {
                slow_xtal: clock-slowxtal {
                        compatible = "fixed-clock";
+                       clock-output-names = "slow_xtal";
                        #clock-cells = <0>;
                };
 
                main_xtal: clock-mainxtal {
                        compatible = "fixed-clock";
+                       clock-output-names = "main_xtal";
                        #clock-cells = <0>;
                };
        };
                        status = "disabled";
                };
 
+               hlcdc: hlcdc@f8038000 {
+                       compatible = "microchip,sam9x75-xlcdc";
+                       reg = <0xf8038000 0x4000>;
+                       interrupts = <25 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 25>, <&pmc PMC_TYPE_GCK 25>, <&clk32k 1>;
+                       clock-names = "periph_clk", "sys_clk", "slow_clk";
+                       status = "disabled";
+
+                       display-controller {
+                               compatible = "atmel,hlcdc-display-controller";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                               };
+                       };
+
+                       pwm {
+                               compatible = "atmel,hlcdc-pwm";
+                               #pwm-cells = <3>;
+                       };
+               };
+
                flx9: flexcom@f8040000 {
                        compatible = "microchip,sam9x7-flexcom", "atmel,sama5d2-flexcom";
                        reg = <0xf8040000 0x200>;
                        };
                };
 
+               lvds_controller: lvds-controller@f8060000 {
+                       compatible = "microchip,sam9x75-lvds";
+                       reg = <0xf8060000 0x100>;
+                       interrupts = <56 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 56>;
+                       clock-names = "pclk";
+                       status = "disabled";
+               };
+
                matrix: matrix@ffffde00 {
                        compatible = "microchip,sam9x7-matrix", "atmel,at91sam9x5-matrix", "syscon";
                        reg = <0xffffde00 0x200>;
index dc22fb679333e743f0aee23b76f618ec2aa3830e..17430d7f20555fd2d4868106756c4635d1aa1671 100644 (file)
@@ -32,6 +32,8 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a5";
                        reg = <0>;
+                       d-cache-size = <0x8000>;        // L1, 32 KB
+                       i-cache-size = <0x8000>;        // L1, 32 KB
                        next-level-cache = <&L2>;
                };
        };
                        interrupts = <63 IRQ_TYPE_LEVEL_HIGH 4>;
                        cache-unified;
                        cache-level = <2>;
+                       cache-size = <0x20000>;         // L2, 128 KB
                };
 
                ebi: ebi@10000000 {
index e95799c17fdb0a509ee7470f5c3ee690b7c92909..00ba59ac1968c45a5e2cf1f1d9e44b56972e16e8 100644 (file)
@@ -48,6 +48,8 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a5";
                        reg = <0x0>;
+                       d-cache-size = <0x8000>;        // L1, 32 KB
+                       i-cache-size = <0x8000>;        // L1, 32 KB
                };
        };
 
index 59a7d557c7cb2e218a31d7e9906dd77061359b84..ec1d68c640dea85150c469c48d35dcc7cc4e699a 100644 (file)
@@ -50,6 +50,8 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a5";
                        reg = <0>;
+                       d-cache-size = <0x8000>;        // L1, 32 KB
+                       i-cache-size = <0x8000>;        // L1, 32 KB
                        next-level-cache = <&L2>;
                };
        };
                        interrupts = <67 IRQ_TYPE_LEVEL_HIGH 4>;
                        cache-unified;
                        cache-level = <2>;
+                       cache-size = <0x20000>;         // L2, 128 KB
                };
 
                ebi: ebi@10000000 {
index d08d773b1cc578fc6a713922497facac429c2c01..c191acc2c89f2ed9a78004b0310c2894607d2cfc 100644 (file)
                        device_type = "cpu";
                        clocks = <&pmc PMC_TYPE_CORE PMC_CPUPLL>;
                        clock-names = "cpu";
+                       d-cache-size = <0x8000>;        // L1, 32 KB
+                       i-cache-size = <0x8000>;        // L1, 32 KB
+                       next-level-cache = <&L2>;
+
+                       L2: l2-cache {
+                               compatible = "cache";
+                               cache-level = <2>;
+                               cache-size = <0x40000>; // L2, 256 KB
+                               cache-unified;
+                       };
                };
        };
 
        clocks {
                main_xtal: clock-mainxtal {
                        compatible = "fixed-clock";
+                       clock-output-names = "main_xtal";
                        #clock-cells = <0>;
                };
 
                slow_xtal: clock-slowxtal {
                        compatible = "fixed-clock";
+                       clock-output-names = "slow_xtal";
                        #clock-cells = <0>;
                };
        };
                        reg = <0xe0020000 0x8>;
                };
 
+               can0: can@e0828000 {
+                       compatible = "bosch,m_can";
+                       reg = <0xe0828000 0x200>, <0x100000 0x7800>;
+                       reg-names = "m_can", "message_ram";
+                       interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "int0", "int1";
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 58>, <&pmc PMC_TYPE_GCK 58>;
+                       clock-names = "hclk", "cclk";
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 58>;
+                       assigned-clock-rates = <40000000>;
+                       assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_UTMI>;
+                       bosch,mram-cfg = <0x3400 0 0 64 0 0 32 32>;
+                       status = "disabled";
+               };
+
+               can1: can@e082c000 {
+                       compatible = "bosch,m_can";
+                       reg = <0xe082c000 0x200>, <0x100000 0xbc00>;
+                       reg-names = "m_can", "message_ram";
+                       interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "int0", "int1";
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 59>, <&pmc PMC_TYPE_GCK 59>;
+                       clock-names = "hclk", "cclk";
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 59>;
+                       assigned-clock-rates = <40000000>;
+                       assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_UTMI>;
+                       bosch,mram-cfg = <0x7800 0 0 64 0 0 32 32>;
+                       status = "disabled";
+               };
+
+               can2: can@e0830000 {
+                       compatible = "bosch,m_can";
+                       reg = <0xe0830000 0x200>, <0x100000 0x10000>;
+                       reg-names = "m_can", "message_ram";
+                       interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "int0", "int1";
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 60>, <&pmc PMC_TYPE_GCK 60>;
+                       clock-names = "hclk", "cclk";
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 60>;
+                       assigned-clock-rates = <40000000>;
+                       assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_UTMI>;
+                       bosch,mram-cfg = <0xbc00 0 0 64 0 0 32 32>;
+                       status = "disabled";
+               };
+
+               can3: can@e0834000 {
+                       compatible = "bosch,m_can";
+                       reg = <0xe0834000 0x200>, <0x110000 0x4400>;
+                       reg-names = "m_can", "message_ram";
+                       interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "int0", "int1";
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 61>, <&pmc PMC_TYPE_GCK 61>;
+                       clock-names = "hclk", "cclk";
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 61>;
+                       assigned-clock-rates = <40000000>;
+                       assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_UTMI>;
+                       bosch,mram-cfg = <0x0 0 0 64 0 0 32 32>;
+                       status = "disabled";
+               };
+
+               can4: can@e0838000 {
+                       compatible = "bosch,m_can";
+                       reg = <0xe0838000 0x200>, <0x110000 0x8800>;
+                       reg-names = "m_can", "message_ram";
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "int0", "int1";
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 62>, <&pmc PMC_TYPE_GCK 62>;
+                       clock-names = "hclk", "cclk";
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 62>;
+                       assigned-clock-rates = <40000000>;
+                       assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_UTMI>;
+                       bosch,mram-cfg = <0x4400 0 0 64 0 0 32 32>;
+                       status = "disabled";
+               };
+
                dma2: dma-controller@e1200000 {
                        compatible = "microchip,sama7d65-dma", "microchip,sama7g5-dma";
                        reg = <0xe1200000 0x1000>;
                        status = "disabled";
                };
 
+               aes: crypto@e1600000 {
+                       compatible = "microchip,sama7d65-aes", "atmel,at91sam9g46-aes";
+                       reg = <0xe1600000 0x100>;
+                       interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 26>;
+                       clock-names = "aes_clk";
+                       dmas = <&dma0 AT91_XDMAC_DT_PERID(1)>,
+                              <&dma0 AT91_XDMAC_DT_PERID(2)>;
+                       dma-names = "tx", "rx";
+               };
+
+               sha: crypto@e1604000 {
+                       compatible = "microchip,sama7d65-sha", "atmel,at91sam9g46-sha";
+                       reg = <0xe1604000 0x100>;
+                       interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 78>;
+                       clock-names = "sha_clk";
+                       dmas = <&dma0 AT91_XDMAC_DT_PERID(48)>;
+                       dma-names = "tx";
+               };
+
+               tdes: crypto@e1608000 {
+                       compatible = "microchip,sama7d65-tdes", "atmel,at91sam9g46-tdes";
+                       reg = <0xe1608000 0x100>;
+                       interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 91>;
+                       clock-names = "tdes_clk";
+                       dmas = <&dma0 AT91_XDMAC_DT_PERID(54)>,
+                              <&dma0 AT91_XDMAC_DT_PERID(53)>;
+                       dma-names = "tx", "rx";
+               };
+
+               trng: rng@e160c000 {
+                       compatible = "microchip,sama7d65-trng", "microchip,sam9x60-trng";
+                       reg = <0xe160c000 0x100>;
+                       interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 92>;
+               };
+
                dma0: dma-controller@e1610000 {
                        compatible = "microchip,sama7d65-dma", "microchip,sama7g5-dma";
                        reg = <0xe1610000 0x1000>;
                        clock-names = "pclk", "gclk";
                };
 
+               pwm: pwm@e1818000 {
+                       compatible = "microchip,sama7d65-pwm", "atmel,sama5d2-pwm";
+                       reg = <0xe1818000 0x500>;
+                       interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 72>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
                flx0: flexcom@e1820000 {
                        compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
                        reg = <0xe1820000 0x200>;
index 17bcdcf0cf4a05fee9ba9334a1521d8a27055ac5..381cbcfcb34a146f9782af93c6c77299c7a760c7 100644 (file)
                        clock-names = "cpu";
                        operating-points-v2 = <&cpu_opp_table>;
                        #cooling-cells = <2>; /* min followed by max */
+                       d-cache-size = <0x8000>;        // L1, 32 KB
+                       i-cache-size = <0x8000>;        // L1, 32 KB
+                       next-level-cache = <&L2>;
+
+                       L2: l2-cache {
+                               compatible = "cache";
+                               cache-level = <2>;
+                               cache-size = <0x40000>; // L2, 256 KB
+                               cache-unified;
+                       };
                };
        };
 
        };
 
        clocks {
-               slow_xtal: slow_xtal {
+               slow_xtal: clock-slowxtal {
                        compatible = "fixed-clock";
+                       clock-output-names = "slow_xtal";
                        #clock-cells = <0>;
                };
 
-               main_xtal: main_xtal {
+               main_xtal: clock-mainxtal {
                        compatible = "fixed-clock";
+                       clock-output-names = "main_xtal";
                        #clock-cells = <0>;
                };
 
-               usb_clk: usb_clk {
+               usb_clk: clock-usbclk {
                        compatible = "fixed-clock";
                        #clock-cells = <0>;
+                       clock-output-names = "usb_clk";
                        clock-frequency = <48000000>;
                };
        };
diff --git a/src/arm/nvidia/tegra30-asus-p1801-t.dts b/src/arm/nvidia/tegra30-asus-p1801-t.dts
new file mode 100644 (file)
index 0000000..9241cc2
--- /dev/null
@@ -0,0 +1,2087 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/thermal/thermal.h>
+
+#include "tegra30.dtsi"
+#include "tegra30-cpu-opp.dtsi"
+#include "tegra30-cpu-opp-microvolt.dtsi"
+
+/ {
+       model = "Asus Portable AiO P1801-T";
+       compatible = "asus,p1801-t", "nvidia,tegra30";
+       chassis-type = "convertible";
+
+       aliases {
+               mmc0 = &sdmmc4; /* eMMC */
+               mmc1 = &sdmmc1; /* uSD slot */
+               mmc2 = &sdmmc3; /* WiFi */
+
+               rtc0 = &pmic;
+               rtc1 = "/rtc@7000e000";
+
+               display0 = &hdmi;
+
+               serial1 = &uartc; /* Bluetooth */
+               serial2 = &uartb; /* GPS */
+       };
+
+       /*
+        * The decompressor and also some bootloaders rely on a
+        * pre-existing /chosen node to be available to insert the
+        * command line and merge other ATAGS info.
+        */
+       chosen {};
+
+       firmware {
+               trusted-foundations {
+                       compatible = "tlm,trusted-foundations";
+                       tlm,version-major = <2>;
+                       tlm,version-minor = <8>;
+               };
+       };
+
+       memory@80000000 {
+               reg = <0x80000000 0x80000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               linux,cma@80000000 {
+                       compatible = "shared-dma-pool";
+                       alloc-ranges = <0x80000000 0x30000000>;
+                       size = <0x10000000>;            /* 256MiB */
+                       linux,cma-default;
+                       reusable;
+               };
+
+               framebuffer@abe01000 {
+                       reg = <0xabe01000 (1920 * 1080 * 4)>;
+                       no-map;
+               };
+
+               trustzone@bfe00000 {
+                       reg = <0xbfe00000 0x200000>;    /* 2MB */
+                       no-map;
+               };
+
+               ramoops@fea00000 {
+                       compatible = "ramoops";
+                       reg = <0xfea00000 0x10000>;     /* 64kB */
+                       console-size = <0x8000>;        /* 32kB */
+                       record-size = <0x400>;          /*  1kB */
+                       ecc-size = <16>;
+               };
+       };
+
+       host1x@50000000 {
+               hdmi: hdmi@54280000 {
+                       status = "okay";
+
+                       hdmi-supply = <&hdmi_5v0_sys>;
+                       pll-supply = <&vdd_1v8_vio>;
+                       vdd-supply = <&vdd_3v3_sys>;
+
+                       port {
+                               hdmi_out: endpoint {
+                                       remote-endpoint = <&bridge_in>;
+                               };
+                       };
+               };
+       };
+
+       gpio@6000d000 {
+               init-lpm-in-hog {
+                       gpio-hog;
+                       gpios = <TEGRA_GPIO(B, 1) GPIO_ACTIVE_HIGH>;
+                       input;
+               };
+
+               init-lpm-out-hog {
+                       gpio-hog;
+                       gpios = <TEGRA_GPIO(K, 7) GPIO_ACTIVE_HIGH>,
+                               <TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
+                       output-low;
+               };
+
+               tp-vendor-hog {
+                       gpio-hog;
+                       gpios = <TEGRA_GPIO(R, 6) GPIO_ACTIVE_HIGH>;
+                       input;
+               };
+       };
+
+       vde@6001a000 {
+               assigned-clocks = <&tegra_car TEGRA30_CLK_VDE>;
+               assigned-clock-parents = <&tegra_car TEGRA30_CLK_PLL_P>;
+               assigned-clock-rates = <408000000>;
+       };
+
+       pinmux@70000868 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&state_default>;
+
+               state_default: pinmux {
+                       /* SDMMC1 pinmux */
+                       sdmmc1-clk {
+                               nvidia,pins = "sdmmc1_clk_pz0";
+                               nvidia,function = "sdmmc1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc1-cmd {
+                               nvidia,pins = "sdmmc1_dat3_py4",
+                                             "sdmmc1_dat2_py5",
+                                             "sdmmc1_dat1_py6",
+                                             "sdmmc1_dat0_py7",
+                                             "sdmmc1_cmd_pz1";
+                               nvidia,function = "sdmmc1";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc1-cd {
+                               nvidia,pins = "gmi_iordy_pi5";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc1-wp {
+                               nvidia,pins = "vi_d11_pt3";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* SDMMC2 pinmux */
+                       vi-d1-pd5 {
+                               nvidia,pins = "vi_d1_pd5",
+                                             "vi_d2_pl0",
+                                             "vi_d3_pl1",
+                                             "vi_d5_pl3",
+                                             "vi_d7_pl5";
+                               nvidia,function = "sdmmc2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       vi-d8-pl6 {
+                               nvidia,pins = "vi_d8_pl6",
+                                             "vi_d9_pl7";
+                               nvidia,function = "sdmmc2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                               nvidia,io-reset = <0>;
+                       };
+
+                       /* SDMMC3 pinmux */
+                       sdmmc3-clk {
+                               nvidia,pins = "sdmmc3_clk_pa6";
+                               nvidia,function = "sdmmc3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc3-cmd {
+                               nvidia,pins = "sdmmc3_cmd_pa7",
+                                             "sdmmc3_dat0_pb7",
+                                             "sdmmc3_dat1_pb6",
+                                             "sdmmc3_dat2_pb5",
+                                             "sdmmc3_dat3_pb4",
+                                             "sdmmc3_dat4_pd1",
+                                             "sdmmc3_dat5_pd0",
+                                             "sdmmc3_dat6_pd3",
+                                             "sdmmc3_dat7_pd4";
+                               nvidia,function = "sdmmc3";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* SDMMC4 pinmux */
+                       sdmmc4-clk {
+                               nvidia,pins = "sdmmc4_clk_pcc4";
+                               nvidia,function = "sdmmc4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc4-cmd {
+                               nvidia,pins = "sdmmc4_cmd_pt7",
+                                             "sdmmc4_dat0_paa0",
+                                             "sdmmc4_dat1_paa1",
+                                             "sdmmc4_dat2_paa2",
+                                             "sdmmc4_dat3_paa3",
+                                             "sdmmc4_dat4_paa4",
+                                             "sdmmc4_dat5_paa5",
+                                             "sdmmc4_dat6_paa6",
+                                             "sdmmc4_dat7_paa7";
+                               nvidia,function = "sdmmc4";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc4-rst-n {
+                               nvidia,pins = "sdmmc4_rst_n_pcc3";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       cam-mclk {
+                               nvidia,pins = "cam_mclk_pcc0";
+                               nvidia,function = "vi_alt3";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       drive-sdmmc4 {
+                               nvidia,pins = "drive_gma",
+                                             "drive_gmb",
+                                             "drive_gmc",
+                                             "drive_gmd";
+                               nvidia,pull-down-strength = <9>;
+                               nvidia,pull-up-strength = <9>;
+                               nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
+                               nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
+                       };
+
+                       /* I2C pinmux */
+                       gen1-i2c {
+                               nvidia,pins = "gen1_i2c_scl_pc4",
+                                             "gen1_i2c_sda_pc5";
+                               nvidia,function = "i2c1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                       };
+                       gen2-i2c {
+                               nvidia,pins = "gen2_i2c_scl_pt5",
+                                             "gen2_i2c_sda_pt6";
+                               nvidia,function = "i2c2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                       };
+                       cam-i2c {
+                               nvidia,pins = "cam_i2c_scl_pbb1",
+                                             "cam_i2c_sda_pbb2";
+                               nvidia,function = "i2c3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                       };
+                       ddc-i2c {
+                               nvidia,pins = "ddc_scl_pv4",
+                                             "ddc_sda_pv5";
+                               nvidia,function = "i2c4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                       };
+                       pwr-i2c {
+                               nvidia,pins = "pwr_i2c_scl_pz6",
+                                             "pwr_i2c_sda_pz7";
+                               nvidia,function = "i2cpwr";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                       };
+                       hotplug-i2c {
+                               nvidia,pins = "pu4";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* HDMI pinmux */
+                       hdmi-cec {
+                               nvidia,pins = "hdmi_cec_pee3";
+                               nvidia,function = "cec";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                       };
+                       hdmi-hpd {
+                               nvidia,pins = "hdmi_int_pn7";
+                               nvidia,function = "hdmi";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* UART-A */
+                       ulpi-data0-po1 {
+                               nvidia,pins = "ulpi_data0_po1";
+                               nvidia,function = "uarta";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       ulpi-data1-po2 {
+                               nvidia,pins = "ulpi_data1_po2";
+                               nvidia,function = "uarta";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       ulpi-data5-po6 {
+                               nvidia,pins = "ulpi_data5_po6";
+                               nvidia,function = "uarta";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       ulpi-data7-po0 {
+                               nvidia,pins = "ulpi_data7_po0",
+                                             "ulpi_data2_po3",
+                                             "ulpi_data3_po4",
+                                             "ulpi_data4_po5",
+                                             "ulpi_data6_po7";
+                               nvidia,function = "uarta";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* UART-B */
+                       uartb-txd-rts {
+                               nvidia,pins = "uart2_txd_pc2",
+                                             "uart2_rts_n_pj6";
+                               nvidia,function = "uartb";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       uartb-rxd-cts {
+                               nvidia,pins = "uart2_rxd_pc3",
+                                             "uart2_cts_n_pj5";
+                               nvidia,function = "uartb";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* UART-C */
+                       uartc-rxd-cts {
+                               nvidia,pins = "uart3_cts_n_pa1",
+                                             "uart3_rxd_pw7";
+                               nvidia,function = "uartc";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       uartc-txd-rts {
+                               nvidia,pins = "uart3_rts_n_pc0",
+                                             "uart3_txd_pw6";
+                               nvidia,function = "uartc";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       /* UART-D */
+                       ulpi-nxt-py2 {
+                               nvidia,pins = "ulpi_nxt_py2";
+                               nvidia,function = "uartd";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       ulpi-clk-py0 {
+                               nvidia,pins = "ulpi_clk_py0",
+                                             "ulpi_dir_py1",
+                                             "ulpi_stp_py3";
+                               nvidia,function = "uartd";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       /* I2S pinmux */
+                       dap-i2s0 {
+                               nvidia,pins = "dap1_fs_pn0",
+                                             "dap1_din_pn1",
+                                             "dap1_dout_pn2",
+                                             "dap1_sclk_pn3";
+                               nvidia,function = "i2s0";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       dap-i2s1 {
+                               nvidia,pins = "dap2_fs_pa2",
+                                             "dap2_sclk_pa3",
+                                             "dap2_din_pa4",
+                                             "dap2_dout_pa5";
+                               nvidia,function = "i2s1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       dap3-fs {
+                               nvidia,pins = "dap3_fs_pp0",
+                                             "dap3_din_pp1";
+                               nvidia,function = "i2s2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       dap3-dout {
+                               nvidia,pins = "dap3_dout_pp2",
+                                             "dap3_sclk_pp3";
+                               nvidia,function = "i2s2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       dap-i2s3 {
+                               nvidia,pins = "dap4_fs_pp4",
+                                             "dap4_din_pp5",
+                                             "dap4_dout_pp6",
+                                             "dap4_sclk_pp7";
+                               nvidia,function = "i2s3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* sensors pinmux */
+                       nct-irq {
+                               nvidia,pins = "pcc2";
+                               nvidia,function = "i2s4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* Asus EC pinmux */
+                       ec-irqs {
+                               nvidia,pins = "kb_row10_ps2",
+                                             "kb_row15_ps7";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       ec-reqs {
+                               nvidia,pins = "kb_col1_pq1";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* memory type bootstrap */
+                       mem-boostraps {
+                               nvidia,pins = "gmi_ad4_pg4",
+                                             "gmi_ad5_pg5";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* PCI-e pinmux */
+                       pex-l2-rst-n {
+                               nvidia,pins = "pex_l2_rst_n_pcc6",
+                                             "pex_l0_rst_n_pdd1",
+                                             "pex_l1_rst_n_pdd5";
+                               nvidia,function = "pcie";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       pex-l2-clkreq-n {
+                               nvidia,pins = "pex_l2_clkreq_n_pcc7",
+                                             "pex_l0_prsnt_n_pdd0",
+                                             "pex_l0_clkreq_n_pdd2",
+                                             "pex_wake_n_pdd3",
+                                             "pex_l1_prsnt_n_pdd4",
+                                             "pex_l1_clkreq_n_pdd6",
+                                             "pex_l2_prsnt_n_pdd7";
+                               nvidia,function = "pcie";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* SPI pinmux */
+                       spi1-mosi-px4 {
+                               nvidia,pins = "spi1_mosi_px4",
+                                             "spi1_sck_px5",
+                                             "spi1_cs0_n_px6",
+                                             "spi1_miso_px7";
+                               nvidia,function = "spi1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       spi2-cs1-n-pw2 {
+                               nvidia,pins = "spi2_cs1_n_pw2";
+                               nvidia,function = "spi2";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       spi2-sck-px2 {
+                               nvidia,pins = "spi2_sck_px2";
+                               nvidia,function = "spi2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       gmi-a17-pb0 {
+                               nvidia,pins = "gmi_a17_pb0",
+                                             "gmi_a16_pj7";
+                               nvidia,function = "spi4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       gmi-a18-pb1 {
+                               nvidia,pins = "gmi_a18_pb1";
+                               nvidia,function = "spi4";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       gmi-a19-pk7 {
+                               nvidia,pins = "gmi_a19_pk7";
+                               nvidia,function = "spi4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* Display A pinmux */
+                       lcd-pwr0-pb2 {
+                               nvidia,pins = "lcd_pwr0_pb2",
+                                             "lcd_pclk_pb3",
+                                             "lcd_pwr1_pc1",
+                                             "lcd_d0_pe0",
+                                             "lcd_d1_pe1",
+                                             "lcd_d2_pe2",
+                                             "lcd_d3_pe3",
+                                             "lcd_d4_pe4",
+                                             "lcd_d5_pe5",
+                                             "lcd_d6_pe6",
+                                             "lcd_d7_pe7",
+                                             "lcd_d8_pf0",
+                                             "lcd_d9_pf1",
+                                             "lcd_d10_pf2",
+                                             "lcd_d11_pf3",
+                                             "lcd_d12_pf4",
+                                             "lcd_d13_pf5",
+                                             "lcd_d14_pf6",
+                                             "lcd_d15_pf7",
+                                             "lcd_de_pj1",
+                                             "lcd_hsync_pj3",
+                                             "lcd_vsync_pj4",
+                                             "lcd_d16_pm0",
+                                             "lcd_d17_pm1",
+                                             "lcd_d18_pm2",
+                                             "lcd_d19_pm3",
+                                             "lcd_d20_pm4",
+                                             "lcd_d21_pm5",
+                                             "lcd_d22_pm6",
+                                             "lcd_d23_pm7",
+                                             "lcd_dc0_pn6",
+                                             "lcd_sdin_pz2";
+                               nvidia,function = "displaya";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       lcd-cs0-n-pn4 {
+                               nvidia,pins = "lcd_cs0_n_pn4",
+                                             "lcd_sdout_pn5",
+                                             "lcd_wr_n_pz3";
+                               nvidia,function = "displaya";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       blink {
+                               nvidia,pins = "clk_32k_out_pa0";
+                               nvidia,function = "blink";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       /* KBC keys */
+                       kb-col0-pq0 {
+                               nvidia,pins = "kb_col0_pq0";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       kb-col1-pq1 {
+                               nvidia,pins = "kb_row1_pr1",
+                                             "kb_row3_pr3",
+                                             "kb_row14_ps6";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       kb-col4-pq4 {
+                               nvidia,pins = "kb_col4_pq4",
+                                             "kb_col5_pq5",
+                                             "kb_col7_pq7",
+                                             "kb_row2_pr2",
+                                             "kb_row4_pr4",
+                                             "kb_row5_pr5",
+                                             "kb_row12_ps4",
+                                             "kb_row13_ps5";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       gmi-wp-n-pc7 {
+                               nvidia,pins = "gmi_wp_n_pc7",
+                                             "gmi_wait_pi7",
+                                             "gmi_cs3_n_pk4";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       gmi-cs0-n-pj0 {
+                               nvidia,pins = "gmi_cs0_n_pj0",
+                                             "gmi_cs1_n_pj2",
+                                             "gmi_cs2_n_pk3";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       vi-pclk-pt0 {
+                               nvidia,pins = "vi_pclk_pt0";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                               nvidia,io-reset = <0>;
+                       };
+
+                       /* GPIO keys pinmux */
+                       power-key {
+                               nvidia,pins = "pv0";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       vol-keys {
+                               nvidia,pins = "kb_col2_pq2",
+                                             "kb_col3_pq3";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* Bluetooth */
+                       bt-shutdown {
+                               nvidia,pins = "pu0";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       bt-dev-wake {
+                               nvidia,pins = "pu1";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       bt-host-wake {
+                               nvidia,pins = "pu6";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       pu2 {
+                               nvidia,pins = "pu2";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       pu3 {
+                               nvidia,pins = "pu3";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       pcc1 {
+                               nvidia,pins = "pcc1";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       pv2 {
+                               nvidia,pins = "pv2";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       pv3 {
+                               nvidia,pins = "pv3";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       vi-vsync-pd6 {
+                               nvidia,pins = "vi_vsync_pd6",
+                                             "vi_hsync_pd7";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                               nvidia,io-reset = <0>;
+                       };
+                       vi-d10-pt2 {
+                               nvidia,pins = "vi_d10_pt2",
+                                             "vi_d0_pt4",
+                                             "pbb0";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       kb-row0-pr0 {
+                               nvidia,pins = "kb_row0_pr0";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       gmi-ad0-pg0 {
+                               nvidia,pins = "gmi_ad0_pg0",
+                                             "gmi_ad1_pg1",
+                                             "gmi_ad2_pg2",
+                                             "gmi_ad3_pg3",
+                                             "gmi_ad6_pg6",
+                                             "gmi_ad7_pg7",
+                                             "gmi_wr_n_pi0",
+                                             "gmi_oe_n_pi1",
+                                             "gmi_dqs_pi2",
+                                             "gmi_adv_n_pk0",
+                                             "gmi_clk_pk1";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       gmi-ad13-ph5 {
+                               nvidia,pins = "gmi_ad13_ph5";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       gmi-ad10-ph2 {
+                               nvidia,pins = "gmi_ad10_ph2",
+                                             "gmi_ad11_ph3",
+                                             "gmi_ad14_ph6";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       gmi-ad12-ph4 {
+                               nvidia,pins = "gmi_ad12_ph4",
+                                             "gmi_rst_n_pi4";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* USB2 VBUS control */
+                       usb2-vbus-control {
+                               nvidia,pins = "gmi_ad15_ph7";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       /* PWM pinmux */
+                       pwm-0 {
+                               nvidia,pins = "gmi_ad8_ph0";
+                               nvidia,function = "pwm0";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       pwm-2 {
+                               nvidia,pins = "pu5";
+                               nvidia,function = "pwm2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* S/PDIF pinmux */
+                       spdif-out {
+                               nvidia,pins = "spdif_out_pk5";
+                               nvidia,function = "spdif";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       spdif-in {
+                               nvidia,pins = "spdif_in_pk6";
+                               nvidia,function = "spdif";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       vi-d4-pl2 {
+                               nvidia,pins = "vi_d4_pl2";
+                               nvidia,function = "vi";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       vi-d6-pl4 {
+                               nvidia,pins = "vi_d6_pl4";
+                               nvidia,function = "vi";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                               nvidia,lock = <0>;
+                               nvidia,io-reset = <0>;
+                       };
+                       vi-mclk-pt1 {
+                               nvidia,pins = "vi_mclk_pt1";
+                               nvidia,function = "vi";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       jtag-rtck {
+                               nvidia,pins = "jtag_rtck_pu7";
+                               nvidia,function = "rtck";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       crt-hsync-pv6 {
+                               nvidia,pins = "crt_hsync_pv6",
+                                             "crt_vsync_pv7";
+                               nvidia,function = "crt";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       clk1-out {
+                               nvidia,pins = "clk1_out_pw4";
+                               nvidia,function = "extperiph1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       clk2-out {
+                               nvidia,pins = "clk2_out_pw5";
+                               nvidia,function = "extperiph2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       clk3-out {
+                               nvidia,pins = "clk3_out_pee0";
+                               nvidia,function = "extperiph3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       sys-clk-req {
+                               nvidia,pins = "sys_clk_req_pz5";
+                               nvidia,function = "sysclk";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       pbb4 {
+                               nvidia,pins = "pbb4";
+                               nvidia,function = "vgp4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       pbb5 {
+                               nvidia,pins = "pbb5";
+                               nvidia,function = "vgp5";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       pbb6 {
+                               nvidia,pins = "pbb6";
+                               nvidia,function = "vgp6";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       clk2-req-pcc5 {
+                               nvidia,pins = "clk2_req_pcc5",
+                                             "clk1_req_pee2";
+                               nvidia,function = "dap";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       clk3-req-pee1 {
+                               nvidia,pins = "clk3_req_pee1";
+                               nvidia,function = "dev3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       owr {
+                               nvidia,pins = "owr";
+                               nvidia,function = "owr";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* P1801-T specific pinmux */
+                       lcd-pwr2 {
+                               nvidia,pins = "lcd_pwr2_pc6",
+                                             "lcd_dc1_pd2";
+                               nvidia,function = "displaya";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       lcd-m1 {
+                               nvidia,pins = "lcd_m1_pw1";
+                               nvidia,function = "displaya";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       key-mode {
+                               nvidia,pins = "gmi_cs4_n_pk2";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       splashtop {
+                               nvidia,pins = "gmi_cs6_n_pi3";
+                               nvidia,function = "nand_alt";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       w8-detect {
+                               nvidia,pins = "gmi_cs7_n_pi6";
+                               nvidia,function = "nand_alt";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       pbb3 {
+                               nvidia,pins = "pbb3";
+                               nvidia,function = "vgp3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       pbb7 {
+                               nvidia,pins = "pbb7";
+                               nvidia,function = "i2s4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       spi2-mosi-px0 {
+                               nvidia,pins = "spi2_mosi_px0";
+                               nvidia,function = "spi6";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       tp-vendor {
+                               nvidia,pins = "kb_row6_pr6",
+                                             "kb_row7_pr7";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       tp-power {
+                               nvidia,pins = "kb_row8_ps0";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       /* GPIO power/drive control */
+                       drive-dap1 {
+                               nvidia,pins = "drive_dap1",
+                                             "drive_dap2",
+                                             "drive_dbg",
+                                             "drive_at5",
+                                             "drive_gme",
+                                             "drive_ddc",
+                                             "drive_ao1",
+                                             "drive_uart3";
+                               nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
+                               nvidia,schmitt = <TEGRA_PIN_ENABLE>;
+                               nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
+                               nvidia,pull-down-strength = <31>;
+                               nvidia,pull-up-strength = <31>;
+                               nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+                               nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+                       };
+                       drive-sdio1 {
+                               nvidia,pins = "drive_sdio1",
+                                             "drive_sdio3";
+                               nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
+                               nvidia,schmitt = <TEGRA_PIN_DISABLE>;
+                               nvidia,pull-down-strength = <46>;
+                               nvidia,pull-up-strength = <42>;
+                               nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FAST>;
+                               nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FAST>;
+                       };
+               };
+       };
+
+       uartb: serial@70006040 {
+               compatible = "nvidia,tegra30-hsuart";
+               reset-names = "serial";
+               /delete-property/ reg-shift;
+               status = "okay";
+
+               /* Broadcom GPS BCM47511 */
+       };
+
+       uartc: serial@70006200 {
+               compatible = "nvidia,tegra30-hsuart";
+               reset-names = "serial";
+               /delete-property/ reg-shift;
+               status = "okay";
+
+               /* Azurewave AW-AH691 BCM43241B0 */
+       };
+
+       pwm: pwm@7000a000 {
+               status = "okay";
+       };
+
+       i2c@7000c000 {
+               status = "okay";
+               clock-frequency = <280000>;
+       };
+
+       i2c@7000c400 {
+               status = "okay";
+               clock-frequency = <400000>;
+
+               /* Nuvoton NPCE791LA0DX embedded controller */
+       };
+
+       i2c@7000c500 {
+               status = "okay";
+               clock-frequency = <100000>;
+
+               accelerometer@f {
+                       compatible = "kionix,kxtf9";
+                       reg = <0x0f>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(O, 5) IRQ_TYPE_EDGE_RISING>;
+
+                       vdd-supply = <&vdd_1v8_vio>;
+                       vddio-supply = <&vdd_1v8_vio>;
+
+                       mount-matrix = "0", "1", "0",
+                                      "1", "0", "0",
+                                      "0", "0", "1";
+               };
+       };
+
+       hdmi_ddc: i2c@7000c700 {
+               status = "okay";
+               clock-frequency = <33000>;
+       };
+
+       i2c@7000d000 {
+               status = "okay";
+               clock-frequency = <400000>;
+
+               rt5640: audio-codec@1c {
+                       compatible = "realtek,rt5640";
+                       reg = <0x1c>;
+
+                       realtek,dmic1-data-pin = <1>;
+
+                       clocks = <&tegra_pmc TEGRA_PMC_CLK_OUT_1>;
+                       clock-names = "mclk";
+
+                       realtek,ldo1-en-gpios = <&gpio TEGRA_GPIO(BB, 6) GPIO_ACTIVE_HIGH>;
+               };
+
+               /* Texas Instruments TPS659110 PMIC */
+               pmic: pmic@2d {
+                       compatible = "ti,tps65911";
+                       reg = <0x2d>;
+
+                       interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       wakeup-source;
+
+                       ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
+                       ti,system-power-controller;
+                       ti,sleep-keep-ck32k;
+                       ti,sleep-enable;
+
+                       #gpio-cells = <2>;
+                       gpio-controller;
+
+                       vcc1-supply = <&vdd_5v0_bat>;
+                       vcc2-supply = <&vdd_5v0_bat>;
+                       vcc3-supply = <&vdd_1v8_vio>;
+                       vcc4-supply = <&vdd_5v0_bat>;
+                       vcc5-supply = <&vdd_5v0_bat>;
+                       vcc6-supply = <&vddio_ddr>;
+                       vcc7-supply = <&vdd_5v0_bat>;
+                       vccio-supply = <&vdd_5v0_bat>;
+
+                       pmic-sleep-hog {
+                               gpio-hog;
+                               gpios = <2 GPIO_ACTIVE_HIGH>;
+                               output-high;
+                       };
+
+                       regulators {
+                               /* vdd1 is not used by Portable AiO */
+
+                               vddio_ddr: vdd2 {
+                                       regulator-name = "vddio_ddr";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               vdd_cpu: vddctrl {
+                                       regulator-name = "vdd_cpu,vdd_sys";
+                                       regulator-min-microvolt = <600000>;
+                                       regulator-max-microvolt = <1400000>;
+                                       regulator-coupled-with = <&vdd_core>;
+                                       regulator-coupled-max-spread = <300000>;
+                                       regulator-max-step-microvolt = <100000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                                       ti,regulator-ext-sleep-control = <1>;
+
+                                       nvidia,tegra-cpu-regulator;
+                               };
+
+                               vdd_1v8_vio: vio {
+                                       regulator-name = "vdd_1v8_gen";
+                                       regulator-min-microvolt = <1500000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               /* eMMC VDD */
+                               vcore_emmc: ldo1 {
+                                       regulator-name = "vdd_emmc_core";
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                               };
+
+                               /* uSD slot VDD */
+                               vdd_usd: ldo2 {
+                                       regulator-name = "vdd_usd";
+                                       regulator-min-microvolt = <3100000>;
+                                       regulator-max-microvolt = <3100000>;
+                                       regulator-always-on;
+                               };
+
+                               /* uSD slot VDDIO */
+                               vddio_usd: ldo3 {
+                                       regulator-name = "vddio_usd";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <3100000>;
+                               };
+
+                               ldo4 {
+                                       regulator-name = "vdd_rtc";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               /* ldo5 is not used by Portable AiO */
+
+                               ldo6 {
+                                       regulator-name = "avdd_dsi_csi,pwrdet_mipi";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                               };
+
+                               ldo7 {
+                                       regulator-name = "vdd_pllm,x,u,a_p_c_s";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                                       ti,regulator-ext-sleep-control = <8>;
+                               };
+
+                               ldo8 {
+                                       regulator-name = "vdd_ddr_hs";
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                                       regulator-always-on;
+                                       ti,regulator-ext-sleep-control = <8>;
+                               };
+                       };
+               };
+
+               nct72: temperature-sensor@4c {
+                       compatible = "onnn,nct1008";
+                       reg = <0x4c>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(CC, 2) IRQ_TYPE_EDGE_FALLING>;
+
+                       vcc-supply = <&vdd_3v3_sys>;
+                       #thermal-sensor-cells = <1>;
+               };
+
+               vdd_core: core-regulator@60 {
+                       compatible = "ti,tps62361";
+                       reg = <0x60>;
+
+                       regulator-name = "tps62361-vout";
+                       regulator-min-microvolt = <500000>;
+                       regulator-max-microvolt = <1770000>;
+                       regulator-coupled-with = <&vdd_cpu>;
+                       regulator-coupled-max-spread = <300000>;
+                       regulator-max-step-microvolt = <100000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+                       ti,enable-vout-discharge;
+                       ti,vsel0-state-high;
+                       ti,vsel1-state-high;
+
+                       nvidia,tegra-core-regulator;
+               };
+       };
+
+       vdd_5v0_bat: regulator-bat {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_ac_bat";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_5v0_cp: regulator-sby {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_5v0_sby";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               gpio = <&pmic 0 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_bat>;
+       };
+
+       vdd_5v0_sys: regulator-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_5v0_sys";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               gpio = <&pmic 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_bat>;
+       };
+
+       vdd_1v5_ddr: regulator-ddr {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_ddr";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               regulator-always-on;
+               regulator-boot-on;
+               gpio = <&pmic 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_bat>;
+       };
+
+       vdd_3v3_sys: regulator-3v {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_3v3_sys";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               gpio = <&pmic 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_bat>;
+       };
+
+       vdd_3v3_com: regulator-com {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_3v3_com";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               gpio = <&gpio TEGRA_GPIO(D, 0) GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_3v3_sys>;
+       };
+
+       usb2_vbus: regulator-usb2 {
+               compatible = "regulator-fixed";
+               regulator-name = "usb2_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&gpio TEGRA_GPIO(H, 7) GPIO_ACTIVE_HIGH>;
+               gpio-open-drain;
+               vin-supply = <&vdd_5v0_sys>;
+       };
+
+       hdmi_5v0_sys: regulator-hdmi {
+               compatible = "regulator-fixed";
+               regulator-name = "hdmi_5v0_sys";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               gpio = <&gpio TEGRA_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_sys>;
+       };
+
+       pmc@7000e400 {
+               status = "okay";
+               nvidia,invert-interrupt;
+               nvidia,suspend-mode = <2>;
+               nvidia,cpu-pwr-good-time = <2000>;
+               nvidia,cpu-pwr-off-time = <200>;
+               nvidia,core-pwr-good-time = <3845 3845>;
+               nvidia,core-pwr-off-time = <0>;
+               nvidia,core-power-req-active-high;
+               nvidia,sys-clock-req-active-high;
+               core-supply = <&vdd_core>;
+
+               i2c-thermtrip {
+                       nvidia,i2c-controller-id = <4>;
+                       nvidia,bus-addr = <0x2d>;
+                       nvidia,reg-addr = <0x3f>;
+                       nvidia,reg-data = <0x81>;
+               };
+       };
+
+       memory-controller@7000f000 {
+               emc-timings-3 {
+                       /* Micron 2GB 800MHz */
+                       nvidia,ram-code = <3>;
+
+                       timing-25500000 {
+                               clock-frequency = <25500000>;
+
+                               nvidia,emem-configuration = < 0x00030003 0xc0000020
+                                       0x00000001 0x00000001 0x00000002 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0502 0x75830303 0x001f0000 >;
+                       };
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emem-configuration = < 0x00010003 0xc0000020
+                                       0x00000001 0x00000001 0x00000002 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0502 0x74630303 0x001f0000 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emem-configuration = < 0x00000003 0xc0000030
+                                       0x00000001 0x00000001 0x00000003 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0503 0x73c30504 0x001f0000 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emem-configuration = < 0x00000006 0xc0000025
+                                       0x00000001 0x00000001 0x00000005 0x00000002
+                                       0x00000003 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0505 0x73840a06 0x001f0000 >;
+                       };
+
+                       timing-400000000 {
+                               clock-frequency = <400000000>;
+
+                               nvidia,emem-configuration = < 0x0000000c 0xc0000048
+                                       0x00000001 0x00000002 0x00000009 0x00000005
+                                       0x00000005 0x00000001 0x00000002 0x00000008
+                                       0x00000002 0x00000002 0x00000003 0x00000006
+                                       0x06030202 0x000d0709 0x7086120a 0x001f0000 >;
+                       };
+
+                       timing-800000000 {
+                               clock-frequency = <800000000>;
+
+                               nvidia,emem-configuration = < 0x00000018 0xc0000090
+                                       0x00000004 0x00000005 0x00000013 0x0000000c
+                                       0x0000000b 0x00000002 0x00000003 0x0000000c
+                                       0x00000002 0x00000002 0x00000004 0x00000008
+                                       0x08040202 0x00160d13 0x712c2414 0x001f0000 >;
+                       };
+               };
+       };
+
+       memory-controller@7000f400 {
+               emc-timings-3 {
+                       /* Micron 2GB 800MHz */
+                       nvidia,ram-code = <3>;
+
+                       timing-25500000 {
+                               clock-frequency = <25500000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000001
+                                       0x00000006 0x00000000 0x00000000 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000000
+                                       0x00000000 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x00000009
+                                       0x0000000b 0x000000c0 0x00000000 0x00000030
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000007 0x00000007
+                                       0x00000004 0x00000001 0x00000000 0x00000004
+                                       0x00000005 0x000000c7 0x00000006 0x00000006
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000287 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000002
+                                       0x0000000d 0x00000001 0x00000000 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000000
+                                       0x00000000 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x00000009
+                                       0x0000000b 0x00000181 0x00000000 0x00000060
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x0000000e 0x0000000e
+                                       0x00000004 0x00000002 0x00000000 0x00000004
+                                       0x00000005 0x0000018e 0x00000006 0x00000006
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x8000040b 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000004
+                                       0x0000001a 0x00000003 0x00000001 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000001
+                                       0x00000001 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x00000009
+                                       0x0000000b 0x00000303 0x00000000 0x000000c0
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x0000001c 0x0000001c
+                                       0x00000004 0x00000004 0x00000000 0x00000004
+                                       0x00000005 0x0000031c 0x00000006 0x00000006
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000713 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000009
+                                       0x00000035 0x00000007 0x00000002 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000002
+                                       0x00000002 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000006 0x00000004 0x00000009
+                                       0x0000000b 0x00000607 0x00000000 0x00000181
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000038 0x00000038
+                                       0x00000004 0x00000007 0x00000000 0x00000004
+                                       0x00000005 0x00000638 0x00000007 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x004400a4
+                                       0x00008000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00020000
+                                       0x00000100 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000d22 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-400000000 {
+                               clock-frequency = <400000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200000>;
+                               nvidia,emc-mode-reset = <0x80000521>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+
+                               nvidia,emc-configuration =  < 0x00000012
+                                       0x00000066 0x0000000c 0x00000004 0x00000003
+                                       0x00000008 0x00000002 0x0000000a 0x00000004
+                                       0x00000004 0x00000002 0x00000001 0x00000000
+                                       0x00000004 0x00000006 0x00000004 0x0000000a
+                                       0x0000000c 0x00000bf0 0x00000000 0x000002fc
+                                       0x00000001 0x00000008 0x00000001 0x00000000
+                                       0x00000008 0x0000000f 0x0000006c 0x00000200
+                                       0x00000004 0x0000000c 0x00000000 0x00000004
+                                       0x00000005 0x00000c30 0x00000000 0x00000004
+                                       0x00000000 0x00000000 0x00007088 0x001d0084
+                                       0x00008000 0x00044000 0x00044000 0x00044000
+                                       0x00044000 0x00044000 0x00044000 0x00044000
+                                       0x00044000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00048000 0x00048000 0x00048000
+                                       0x00048000 0x000002a0 0x0800013d 0x00000000
+                                       0x77fff884 0x01f1f508 0x05057404 0x54000007
+                                       0x080001e8 0x08000021 0x00000802 0x00020000
+                                       0x00000100 0x0158000c 0xa0f10000 0x00000000
+                                       0x00000000 0x800018c8 0xe8000000 0xff00ff89 >;
+                       };
+
+                       timing-800000000 {
+                               clock-frequency = <800000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200018>;
+                               nvidia,emc-mode-reset = <0x80000d71>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000025
+                                       0x000000ce 0x0000001a 0x00000009 0x00000005
+                                       0x0000000d 0x00000004 0x00000013 0x00000009
+                                       0x00000009 0x00000003 0x00000001 0x00000000
+                                       0x00000007 0x0000000b 0x00000009 0x0000000b
+                                       0x00000012 0x00001820 0x00000000 0x00000608
+                                       0x00000003 0x00000012 0x00000001 0x00000000
+                                       0x0000000f 0x00000018 0x000000d8 0x00000200
+                                       0x00000005 0x00000018 0x00000000 0x00000007
+                                       0x00000008 0x00001860 0x0000000c 0x00000004
+                                       0x00000000 0x00000000 0x00005088 0xf0070191
+                                       0x00008000 0x0000c00a 0x0000000a 0x0000000a
+                                       0x0000000a 0x0000000a 0x0000000a 0x0000000a
+                                       0x0000000a 0x00018000 0x00018000 0x00018000
+                                       0x00018000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x0000000a 0x0000000a 0x0000000a
+                                       0x0000000a 0x000002a0 0x0800013d 0x22220000
+                                       0x77fff884 0x01f1f501 0x07077404 0x54000000
+                                       0x080001e8 0x08000021 0x00000802 0x00020000
+                                       0x00000100 0x00f0000c 0xa0f10202 0x00000000
+                                       0x00000000 0x8000308c 0xe8000000 0xff00ff49 >;
+                       };
+               };
+       };
+
+       hda@70030000 {
+               status = "okay";
+       };
+
+       ahub@70080000 {
+               i2s@70080400 { /* i2s1 */
+                       status = "okay";
+               };
+
+               /* BT SCO */
+               i2s@70080600 { /* i2s3 */
+                       status = "okay";
+               };
+       };
+
+       sdmmc1: mmc@78000000 {
+               status = "okay";
+
+               /* SDR104 mode unsupported yet */
+               max-frequency = <104000000>;
+
+               cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
+               bus-width = <4>;
+
+               vmmc-supply = <&vdd_usd>;       /* ldo2 */
+               vqmmc-supply = <&vddio_usd>;    /* ldo3 */
+       };
+
+       sdmmc3: mmc@78000400 {
+               status = "okay";
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               keep-power-in-suspend;
+               bus-width = <4>;
+               non-removable;
+
+               mmc-pwrseq = <&brcm_wifi_pwrseq>;
+               vmmc-supply = <&vdd_3v3_com>;
+               vqmmc-supply = <&vdd_1v8_vio>;
+
+               /* Azurewave AW-AH691 BCM43241B0 */
+               wifi@1 {
+                       compatible = "brcm,bcm4329-fmac";
+                       reg = <1>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(O, 4) IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "host-wake";
+               };
+       };
+
+       sdmmc4: mmc@78000600 {
+               status = "okay";
+               bus-width = <8>;
+
+               non-removable;
+               mmc-ddr-3_3v;
+
+               vmmc-supply = <&vcore_emmc>;
+               vqmmc-supply = <&vdd_1v8_vio>;
+       };
+
+       /* USB via ASUS connector */
+       usb@7d000000 {
+               compatible = "nvidia,tegra30-udc";
+               status = "okay";
+               dr_mode = "peripheral";
+       };
+
+       usb-phy@7d000000 {
+               status = "okay";
+               dr_mode = "peripheral";
+               nvidia,hssync-start-delay = <0>;
+               nvidia,xcvr-lsfslew = <2>;
+               nvidia,xcvr-lsrslew = <2>;
+               vbus-supply = <&vdd_5v0_sys>;
+       };
+
+       /* mini-USB port */
+       usb@7d004000 {
+               status = "okay";
+       };
+
+       usb-phy@7d004000 {
+               status = "okay";
+               vbus-supply = <&usb2_vbus>;
+       };
+
+       /* Full size USB */
+       usb@7d008000 {
+               status = "okay";
+       };
+
+       usb-phy@7d008000 {
+               status = "okay";
+               vbus-supply = <&vdd_5v0_bat>;
+       };
+
+       pad_battery: battery-cell {
+               compatible = "simple-battery";
+               device-chemistry = "lithium-ion-polymer";
+               charge-full-design-microamp-hours = <5136000>;
+               energy-full-design-microwatt-hours = <38000000>;
+               operating-range-celsius = <0 45>;
+       };
+
+       /* Connected to a 18.4" LVDS panel */
+       bridge {
+               compatible = "mstar,tsumu88adt3-lf-1";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               bridge_in: endpoint {
+                                       remote-endpoint = <&hdmi_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               bridge_out: endpoint {
+                                       remote-endpoint = <&hdmi_connector_in>;
+                               };
+                       };
+               };
+       };
+
+       /* PMIC has a built-in 32KHz oscillator which is used by PMC */
+       clk32k_in: clock-32k {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               clock-output-names = "pmic-oscillator";
+       };
+
+       connector {
+               compatible = "hdmi-connector";
+               label = "HDMI";
+               type = "a";
+
+               /* low: tablet, high: dock */
+               hpd-gpios = <&gpio TEGRA_GPIO(H, 4) GPIO_ACTIVE_LOW>;
+               ddc-i2c-bus = <&hdmi_ddc>;
+               ddc-en-gpios = <&gpio TEGRA_GPIO(H, 3) GPIO_ACTIVE_HIGH>;
+
+               port {
+                       hdmi_connector_in: endpoint {
+                               remote-endpoint = <&bridge_out>;
+                       };
+               };
+       };
+
+       cpus {
+               cpu0: cpu@0 {
+                       cpu-supply = <&vdd_cpu>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+               };
+               cpu1: cpu@1 {
+                       cpu-supply = <&vdd_cpu>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+               };
+               cpu2: cpu@2 {
+                       cpu-supply = <&vdd_cpu>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+               };
+               cpu3: cpu@3 {
+                       cpu-supply = <&vdd_cpu>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               key-power {
+                       label = "Power";
+                       gpios = <&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+
+               key-volume-up {
+                       label = "Volume Up";
+                       gpios = <&gpio TEGRA_GPIO(Q, 2) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+
+               key-volume-down {
+                       label = "Volume Down";
+                       gpios = <&gpio TEGRA_GPIO(Q, 3) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+
+               switch-docking-station-mode {
+                       label = "Mode";
+                       gpios = <&gpio TEGRA_GPIO(K, 2) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_MODE>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+       };
+
+       opp-table-actmon {
+               opp-800000000 {
+                       opp-supported-hw = <0x0006>;
+               };
+
+               /delete-node/ opp-900000000;
+       };
+
+       opp-table-emc {
+               opp-800000000-1300 {
+                       opp-supported-hw = <0x0006>;
+               };
+
+               /delete-node/ opp-900000000-1350;
+       };
+
+       brcm_wifi_pwrseq: pwrseq-wifi {
+               compatible = "mmc-pwrseq-simple";
+
+               clocks = <&tegra_pmc TEGRA_PMC_CLK_BLINK>;
+               clock-names = "ext_clock";
+
+               reset-gpios = <&gpio TEGRA_GPIO(D, 4) GPIO_ACTIVE_LOW>;
+               post-power-on-delay-ms = <300>;
+               power-off-delay-us = <300>;
+       };
+
+       sound {
+               compatible = "asus,tegra-audio-rt5640-p1801-t",
+                            "nvidia,tegra-audio-rt5640";
+               nvidia,model = "Asus Portable AiO P1801-T RT5642";
+
+               nvidia,audio-routing =
+                       "Headphones", "HPOR",
+                       "Headphones", "HPOL",
+                       "Speakers", "SPORP",
+                       "Speakers", "SPORN",
+                       "Speakers", "SPOLP",
+                       "Speakers", "SPOLN",
+                       "DMIC1", "Mic Jack";
+
+               nvidia,i2s-controller = <&tegra_i2s1>;
+               nvidia,audio-codec = <&rt5640>;
+
+               nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
+
+               clocks = <&tegra_car TEGRA30_CLK_PLL_A>,
+                        <&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
+                        <&tegra_pmc TEGRA_PMC_CLK_OUT_1>;
+               clock-names = "pll_a", "pll_a_out0", "mclk";
+
+               assigned-clocks = <&tegra_car TEGRA30_CLK_EXTERN1>,
+                                 <&tegra_pmc TEGRA_PMC_CLK_OUT_1>;
+
+               assigned-clock-parents = <&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
+                                        <&tegra_car TEGRA30_CLK_EXTERN1>;
+       };
+
+       thermal-zones {
+               /*
+                * NCT72 has two sensors:
+                *
+                *      0: internal that monitors ambient/skin temperature
+                *      1: external that is connected to the CPU's diode
+                *
+                * Ideally we should use userspace thermal governor,
+                * but it's a much more complex solution. The "skin"
+                * zone exists as a simpler solution which prevents
+                * the Portable AiO from getting too hot from a user's
+                * tactile perspective. The CPU zone is intended to
+                * protect silicon from damage.
+                */
+
+               skin-thermal {
+                       polling-delay-passive = <1000>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
+
+                       thermal-sensors = <&nct72 0>;
+
+                       trips {
+                               trip0: skin-alert {
+                                       /* throttle at 57C until temperature drops to 56.8C */
+                                       temperature = <57000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               trip1: skin-crit {
+                                       /* shut down at 65C */
+                                       temperature = <65000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&trip0>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&actmon THERMAL_NO_LIMIT
+                                                                 THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+
+               cpu-thermal {
+                       polling-delay-passive = <1000>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
+
+                       thermal-sensors = <&nct72 1>;
+
+                       trips {
+                               trip2: cpu-alert {
+                                       /* throttle at 75C until temperature drops to 74.8C */
+                                       temperature = <75000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               trip3: cpu-crit {
+                                       /* shut down at 90C */
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map1 {
+                                       trip = <&trip2>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&actmon THERMAL_NO_LIMIT
+                                                                 THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
+};
diff --git a/src/arm/nvidia/tegra30-asus-tf600t.dts b/src/arm/nvidia/tegra30-asus-tf600t.dts
new file mode 100644 (file)
index 0000000..5d9e23a
--- /dev/null
@@ -0,0 +1,2500 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/thermal/thermal.h>
+
+#include "tegra30.dtsi"
+#include "tegra30-cpu-opp.dtsi"
+#include "tegra30-cpu-opp-microvolt.dtsi"
+
+/ {
+       model = "Asus VivoTab RT TF600T";
+       compatible = "asus,tf600t", "nvidia,tegra30";
+       chassis-type = "convertible";
+
+       aliases {
+               mmc0 = &sdmmc4; /* eMMC */
+               mmc1 = &sdmmc1; /* uSD slot */
+               mmc2 = &sdmmc3; /* WiFi */
+
+               rtc0 = &pmic;
+               rtc1 = "/rtc@7000e000";
+
+               display1 = &hdmi;
+
+               serial1 = &uartc; /* Bluetooth */
+               serial2 = &uartb; /* GPS */
+       };
+
+       /*
+        * The decompressor and also some bootloaders rely on a
+        * pre-existing /chosen node to be available to insert the
+        * command line and merge other ATAGS info.
+        */
+       chosen {};
+
+       memory@80000000 {
+               reg = <0x80000000 0x80000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               linux,cma@80000000 {
+                       compatible = "shared-dma-pool";
+                       alloc-ranges = <0x80000000 0x30000000>;
+                       size = <0x10000000>;            /* 256MiB */
+                       linux,cma-default;
+                       reusable;
+               };
+       };
+
+       host1x@50000000 {
+               hdmi: hdmi@54280000 {
+                       status = "okay";
+
+                       hdmi-supply = <&hdmi_5v0_sys>;
+                       pll-supply = <&vdd_1v8_vio>;
+                       vdd-supply = <&vdd_3v3_sys>;
+
+                       nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>;
+                       nvidia,ddc-i2c-bus = <&hdmi_ddc>;
+               };
+       };
+
+       vde@6001a000 {
+               assigned-clocks = <&tegra_car TEGRA30_CLK_VDE>;
+               assigned-clock-parents = <&tegra_car TEGRA30_CLK_PLL_P>;
+               assigned-clock-rates = <408000000>;
+       };
+
+       pinmux@70000868 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&state_default>;
+
+               state_default: pinmux {
+                       /* SDMMC1 pinmux */
+                       sdmmc1-clk {
+                               nvidia,pins = "sdmmc1_clk_pz0";
+                               nvidia,function = "sdmmc1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc1-cmd {
+                               nvidia,pins = "sdmmc1_dat3_py4",
+                                             "sdmmc1_dat2_py5",
+                                             "sdmmc1_dat1_py6",
+                                             "sdmmc1_dat0_py7",
+                                             "sdmmc1_cmd_pz1";
+                               nvidia,function = "sdmmc1";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc1-cd {
+                               nvidia,pins = "gmi_iordy_pi5";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc1-wp {
+                               nvidia,pins = "vi_d11_pt3";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* SDMMC2 pinmux */
+                       vi-d1-pd5 {
+                               nvidia,pins = "vi_d1_pd5",
+                                             "vi_d2_pl0",
+                                             "vi_d3_pl1",
+                                             "vi_d5_pl3",
+                                             "vi_d7_pl5";
+                               nvidia,function = "sdmmc2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       vi-d8-pl6 {
+                               nvidia,pins = "vi_d8_pl6",
+                                             "vi_d9_pl7";
+                               nvidia,function = "sdmmc2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                               nvidia,io-reset = <0>;
+                       };
+
+                       /* SDMMC3 pinmux */
+                       sdmmc3-clk {
+                               nvidia,pins = "sdmmc3_clk_pa6";
+                               nvidia,function = "sdmmc3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc3-cmd {
+                               nvidia,pins = "sdmmc3_cmd_pa7",
+                                             "sdmmc3_dat0_pb7",
+                                             "sdmmc3_dat1_pb6",
+                                             "sdmmc3_dat2_pb5",
+                                             "sdmmc3_dat3_pb4",
+                                             "sdmmc3_dat4_pd1",
+                                             "sdmmc3_dat5_pd0",
+                                             "sdmmc3_dat6_pd3",
+                                             "sdmmc3_dat7_pd4";
+                               nvidia,function = "sdmmc3";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* SDMMC4 pinmux */
+                       sdmmc4-clk {
+                               nvidia,pins = "sdmmc4_clk_pcc4";
+                               nvidia,function = "sdmmc4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc4-cmd {
+                               nvidia,pins = "sdmmc4_cmd_pt7",
+                                             "sdmmc4_dat0_paa0",
+                                             "sdmmc4_dat1_paa1",
+                                             "sdmmc4_dat2_paa2",
+                                             "sdmmc4_dat3_paa3",
+                                             "sdmmc4_dat4_paa4",
+                                             "sdmmc4_dat5_paa5",
+                                             "sdmmc4_dat6_paa6",
+                                             "sdmmc4_dat7_paa7";
+                               nvidia,function = "sdmmc4";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       sdmmc4-rst-n {
+                               nvidia,pins = "sdmmc4_rst_n_pcc3";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       cam-mclk {
+                               nvidia,pins = "cam_mclk_pcc0";
+                               nvidia,function = "vi_alt3";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* I2C pinmux */
+                       gen1-i2c {
+                               nvidia,pins = "gen1_i2c_scl_pc4",
+                                             "gen1_i2c_sda_pc5";
+                               nvidia,function = "i2c1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <TEGRA_PIN_DISABLE>;
+                       };
+                       gen2-i2c {
+                               nvidia,pins = "gen2_i2c_scl_pt5",
+                                             "gen2_i2c_sda_pt6";
+                               nvidia,function = "i2c2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <TEGRA_PIN_DISABLE>;
+                       };
+                       cam-i2c {
+                               nvidia,pins = "cam_i2c_scl_pbb1",
+                                             "cam_i2c_sda_pbb2";
+                               nvidia,function = "i2c3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <TEGRA_PIN_DISABLE>;
+                       };
+                       ddc-i2c {
+                               nvidia,pins = "ddc_scl_pv4",
+                                             "ddc_sda_pv5";
+                               nvidia,function = "i2c4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <TEGRA_PIN_DISABLE>;
+                       };
+                       pwr-i2c {
+                               nvidia,pins = "pwr_i2c_scl_pz6",
+                                             "pwr_i2c_sda_pz7";
+                               nvidia,function = "i2cpwr";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <TEGRA_PIN_DISABLE>;
+                       };
+                       hotplug-i2c {
+                               nvidia,pins = "pu4";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* HDMI pinmux */
+                       hdmi-cec {
+                               nvidia,pins = "hdmi_cec_pee3";
+                               nvidia,function = "cec";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,open-drain = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <TEGRA_PIN_DISABLE>;
+                       };
+                       hdmi-hpd {
+                               nvidia,pins = "hdmi_int_pn7";
+                               nvidia,function = "hdmi";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* UART-A */
+                       ulpi-data0-po1 {
+                               nvidia,pins = "ulpi_data0_po1";
+                               nvidia,function = "uarta";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       ulpi-data1-po2 {
+                               nvidia,pins = "ulpi_data1_po2";
+                               nvidia,function = "uarta";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       ulpi-data5-po6 {
+                               nvidia,pins = "ulpi_data5_po6";
+                               nvidia,function = "uarta";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       ulpi-data7-po0 {
+                               nvidia,pins = "ulpi_data7_po0",
+                                             "ulpi_data2_po3",
+                                             "ulpi_data3_po4",
+                                             "ulpi_data4_po5",
+                                             "ulpi_data6_po7";
+                               nvidia,function = "uarta";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* UART-B */
+                       uartb-txd-rts {
+                               nvidia,pins = "uart2_txd_pc2",
+                                             "uart2_rts_n_pj6";
+                               nvidia,function = "uartb";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       uartb-rxd-cts {
+                               nvidia,pins = "uart2_rxd_pc3",
+                                             "uart2_cts_n_pj5";
+                               nvidia,function = "uartb";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* UART-C */
+                       uartc-rxd-cts {
+                               nvidia,pins = "uart3_cts_n_pa1",
+                                             "uart3_rxd_pw7";
+                               nvidia,function = "uartc";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       uartc-txd-rts {
+                               nvidia,pins = "uart3_rts_n_pc0",
+                                             "uart3_txd_pw6";
+                               nvidia,function = "uartc";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       /* UART-D */
+                       ulpi-nxt-py2 {
+                               nvidia,pins = "ulpi_nxt_py2";
+                               nvidia,function = "uartd";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       ulpi-clk-py0 {
+                               nvidia,pins = "ulpi_clk_py0",
+                                             "ulpi_dir_py1",
+                                             "ulpi_stp_py3";
+                               nvidia,function = "uartd";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       /* I2S pinmux */
+                       dap-i2s0 {
+                               nvidia,pins = "dap1_fs_pn0",
+                                             "dap1_din_pn1",
+                                             "dap1_dout_pn2",
+                                             "dap1_sclk_pn3";
+                               nvidia,function = "i2s0";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       dap-i2s1 {
+                               nvidia,pins = "dap2_fs_pa2",
+                                             "dap2_sclk_pa3",
+                                             "dap2_din_pa4",
+                                             "dap2_dout_pa5";
+                               nvidia,function = "i2s1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       dap3-fs {
+                               nvidia,pins = "dap3_fs_pp0";
+                               nvidia,function = "i2s2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       dap3-din {
+                               nvidia,pins = "dap3_din_pp1";
+                               nvidia,function = "i2s2";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       dap3-dout {
+                               nvidia,pins = "dap3_dout_pp2",
+                                             "dap3_sclk_pp3";
+                               nvidia,function = "i2s2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       dap-i2s3 {
+                               nvidia,pins = "dap4_fs_pp4",
+                                             "dap4_din_pp5",
+                                             "dap4_dout_pp6",
+                                             "dap4_sclk_pp7";
+                               nvidia,function = "i2s3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       i2s4 {
+                               nvidia,pins = "pbb7";
+                               nvidia,function = "i2s4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* Sensors pinmux */
+                       nct-irq {
+                               nvidia,pins = "pcc2";
+                               nvidia,function = "i2s4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       hall {
+                               nvidia,pins = "pbb6";
+                               nvidia,function = "vgp6";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* Asus EC pinmux */
+                       ec-irqs {
+                               nvidia,pins = "kb_row10_ps2",
+                                             "kb_row15_ps7";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       ec-reqs {
+                               nvidia,pins = "kb_col1_pq1";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* Memory type bootstrap */
+                       mem-boostraps {
+                               nvidia,pins = "gmi_ad4_pg4",
+                                             "gmi_ad5_pg5";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* PCI-e pinmux */
+                       pex-l2-rst-n {
+                               nvidia,pins = "pex_l2_rst_n_pcc6",
+                                             "pex_l0_rst_n_pdd1",
+                                             "pex_l1_rst_n_pdd5";
+                               nvidia,function = "pcie";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       pex-l2-clkreq-n {
+                               nvidia,pins = "pex_l2_clkreq_n_pcc7",
+                                             "pex_l0_prsnt_n_pdd0",
+                                             "pex_l0_clkreq_n_pdd2",
+                                             "pex_wake_n_pdd3",
+                                             "pex_l1_prsnt_n_pdd4",
+                                             "pex_l1_clkreq_n_pdd6",
+                                             "pex_l2_prsnt_n_pdd7";
+                               nvidia,function = "pcie";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* Display A pinmux */
+                       lcd-pwr0-pb2 {
+                               nvidia,pins = "lcd_pwr0_pb2",
+                                             "lcd_pclk_pb3",
+                                             "lcd_pwr1_pc1",
+                                             "lcd_d0_pe0",
+                                             "lcd_d1_pe1",
+                                             "lcd_d2_pe2",
+                                             "lcd_d3_pe3",
+                                             "lcd_d4_pe4",
+                                             "lcd_d5_pe5",
+                                             "lcd_d6_pe6",
+                                             "lcd_d7_pe7",
+                                             "lcd_d8_pf0",
+                                             "lcd_d9_pf1",
+                                             "lcd_d10_pf2",
+                                             "lcd_d11_pf3",
+                                             "lcd_d12_pf4",
+                                             "lcd_d13_pf5",
+                                             "lcd_d14_pf6",
+                                             "lcd_d15_pf7",
+                                             "lcd_de_pj1",
+                                             "lcd_hsync_pj3",
+                                             "lcd_vsync_pj4",
+                                             "lcd_d16_pm0",
+                                             "lcd_d17_pm1",
+                                             "lcd_d18_pm2",
+                                             "lcd_d19_pm3",
+                                             "lcd_d20_pm4",
+                                             "lcd_d21_pm5",
+                                             "lcd_d22_pm6",
+                                             "lcd_d23_pm7",
+                                             "lcd_dc0_pn6",
+                                             "lcd_sdin_pz2";
+                               nvidia,function = "displaya";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       lcd-cs0-n-pn4 {
+                               nvidia,pins = "lcd_sdout_pn5",
+                                             "lcd_wr_n_pz3",
+                                             "lcd_pwr2_pc6",
+                                             "lcd_dc1_pd2";
+                               nvidia,function = "displaya";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       blink {
+                               nvidia,pins = "clk_32k_out_pa0";
+                               nvidia,function = "blink";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       /* KBC keys */
+                       kb-col0 {
+                               nvidia,pins = "kb_col0_pq0",
+                                             "kb_row1_pr1",
+                                             "kb_row3_pr3",
+                                             "kb_row7_pr7",
+                                             "kb_row8_ps0";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       kb-col5 {
+                               nvidia,pins = "kb_col5_pq5",
+                                             "kb_col7_pq7",
+                                             "kb_row2_pr2",
+                                             "kb_row4_pr4",
+                                             "kb_row5_pr5",
+                                             "kb_row13_ps5";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       gmi-cs0-n-pj0 {
+                               nvidia,pins = "gmi_wp_n_pc7",
+                                             "gmi_wait_pi7",
+                                             "gmi_cs0_n_pj0",
+                                             "gmi_cs1_n_pj2",
+                                             "gmi_cs2_n_pk3",
+                                             "gmi_cs3_n_pk4";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       vi-pclk-pt0 {
+                               nvidia,pins = "vi_pclk_pt0";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                               nvidia,io-reset = <0>;
+                       };
+
+                       /* GPIO keys pinmux */
+                       power-key {
+                               nvidia,pins = "pv0";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       vol-keys {
+                               nvidia,pins = "kb_col3_pq3",
+                                             "kb_col4_pq4";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* Bluetooth */
+                       bt-shutdown {
+                               nvidia,pins = "pu0";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       bt-dev-wake {
+                               nvidia,pins = "pu1";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       bt-host-wake {
+                               nvidia,pins = "pu6";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       pu2 {
+                               nvidia,pins = "pu2";
+                               nvidia,function = "rsvd1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       pu3 {
+                               nvidia,pins = "pu3";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       pcc1 {
+                               nvidia,pins = "pcc1";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       pv2 {
+                               nvidia,pins = "pv2";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       pv3 {
+                               nvidia,pins = "pv3";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       vi-vsync-pd6 {
+                               nvidia,pins = "vi_vsync_pd6",
+                                             "vi_hsync_pd7";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,lock = <0>;
+                               nvidia,io-reset = <0>;
+                       };
+                       vi-d10-pt2 {
+                               nvidia,pins = "vi_d10_pt2",
+                                             "vi_d0_pt4",
+                                             "pbb0";
+                               nvidia,function = "rsvd2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       kb-row0-pr0 {
+                               nvidia,pins = "kb_row0_pr0";
+                               nvidia,function = "rsvd4";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       gmi-ad0-pg0 {
+                               nvidia,pins = "gmi_ad0_pg0",
+                                             "gmi_ad1_pg1",
+                                             "gmi_ad2_pg2",
+                                             "gmi_ad3_pg3",
+                                             "gmi_ad6_pg6",
+                                             "gmi_ad7_pg7",
+                                             "gmi_wr_n_pi0",
+                                             "gmi_oe_n_pi1",
+                                             "gmi_dqs_pi2",
+                                             "gmi_adv_n_pk0",
+                                             "gmi_clk_pk1";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       gmi-ad13-ph5 {
+                               nvidia,pins = "gmi_ad13_ph5";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       gmi-ad10-ph2 {
+                               nvidia,pins = "gmi_ad10_ph2",
+                                             "gmi_ad11_ph3",
+                                             "gmi_ad14_ph6";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       gmi-ad12-ph4 {
+                               nvidia,pins = "gmi_ad12_ph4",
+                                             "gmi_rst_n_pi4",
+                                             "gmi_cs7_n_pi6";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* Vibrator control */
+                       vibrator {
+                               nvidia,pins = "gmi_ad11_ph3";
+                               nvidia,function = "nand";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       /* PWM pinmux */
+                       pwm-0 {
+                               nvidia,pins = "gmi_ad8_ph0";
+                               nvidia,function = "pwm0";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       pwm-2 {
+                               nvidia,pins = "pu5";
+                               nvidia,function = "pwm2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       gmi-cs-n {
+                               nvidia,pins = "gmi_cs4_n_pk2",
+                                             "gmi_cs6_n_pi3";
+                               nvidia,function = "gmi";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* Spdif pinmux */
+                       spdif-out {
+                               nvidia,pins = "spdif_out_pk5";
+                               nvidia,function = "spdif";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       spdif-in {
+                               nvidia,pins = "spdif_in_pk6";
+                               nvidia,function = "spdif";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       vi-d4-pl2 {
+                               nvidia,pins = "vi_d4_pl2";
+                               nvidia,function = "vi";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       vi-d6-pl4 {
+                               nvidia,pins = "vi_d6_pl4";
+                               nvidia,function = "vi";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                               nvidia,lock = <0>;
+                               nvidia,io-reset = <0>;
+                       };
+                       vi-mclk-pt1 {
+                               nvidia,pins = "vi_mclk_pt1";
+                               nvidia,function = "vi";
+                               nvidia,pull = <TEGRA_PIN_PULL_UP>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       jtag {
+                               nvidia,pins = "jtag_rtck_pu7";
+                               nvidia,function = "rtck";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       crt-sync {
+                               nvidia,pins = "crt_hsync_pv6",
+                                             "crt_vsync_pv7";
+                               nvidia,function = "crt";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       clk1-out {
+                               nvidia,pins = "clk1_out_pw4";
+                               nvidia,function = "extperiph1";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       clk2-out {
+                               nvidia,pins = "clk2_out_pw5";
+                               nvidia,function = "extperiph2";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       clk3-out {
+                               nvidia,pins = "clk3_out_pee0";
+                               nvidia,function = "extperiph3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+                       sys-clk-req {
+                               nvidia,pins = "sys_clk_req_pz5";
+                               nvidia,function = "sysclk";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       pbb3 {
+                               nvidia,pins = "pbb3";
+                               nvidia,function = "vgp3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       pbb4 {
+                               nvidia,pins = "pbb4";
+                               nvidia,function = "vgp4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       pbb5 {
+                               nvidia,pins = "pbb5";
+                               nvidia,function = "vgp5";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       clk2-req-pcc5 {
+                               nvidia,pins = "clk2_req_pcc5",
+                                             "clk1_req_pee2";
+                               nvidia,function = "dap";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+                       clk3-req-pee1 {
+                               nvidia,pins = "clk3_req_pee1";
+                               nvidia,function = "dev3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       owr {
+                               nvidia,pins = "owr";
+                               nvidia,function = "owr";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       /* GPIO power/drive control */
+                       drive-dap1 {
+                               nvidia,pins = "drive_dap1",
+                                             "drive_dap2",
+                                             "drive_dbg",
+                                             "drive_at5",
+                                             "drive_gme",
+                                             "drive_ddc",
+                                             "drive_ao1",
+                                             "drive_uart3";
+                               nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
+                               nvidia,schmitt = <TEGRA_PIN_ENABLE>;
+                               nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
+                               nvidia,pull-down-strength = <31>;
+                               nvidia,pull-up-strength = <31>;
+                               nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+                               nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
+                       };
+                       drive-sdio1 {
+                               nvidia,pins = "drive_sdio1",
+                                             "drive_sdio3";
+                               nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
+                               nvidia,schmitt = <TEGRA_PIN_DISABLE>;
+                               nvidia,pull-down-strength = <46>;
+                               nvidia,pull-up-strength = <42>;
+                               nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FAST>;
+                               nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FAST>;
+                       };
+                       drive-sdmmc4 {
+                               nvidia,pins = "drive_gma",
+                                             "drive_gmb",
+                                             "drive_gmc",
+                                             "drive_gmd";
+                               nvidia,pull-down-strength = <9>;
+                               nvidia,pull-up-strength = <9>;
+                               nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
+                               nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
+                       };
+               };
+       };
+
+       uartb: serial@70006040 {
+               compatible = "nvidia,tegra30-hsuart";
+               reset-names = "serial";
+               /delete-property/ reg-shift;
+               status = "okay";
+
+               /* Broadcom GPS BCM47511 */
+       };
+
+       uartc: serial@70006200 {
+               compatible = "nvidia,tegra30-hsuart";
+               reset-names = "serial";
+               /delete-property/ reg-shift;
+               status = "okay";
+
+               nvidia,adjust-baud-rates = <0 9600 100>,
+                                          <9600 115200 200>,
+                                          <1000000 4000000 136>;
+
+               /* Azurewave AW-NH665 BCM4330B1 */
+               bluetooth {
+                       compatible = "brcm,bcm4330-bt";
+                       max-speed = <4000000>;
+
+                       clocks = <&tegra_pmc TEGRA_PMC_CLK_BLINK>;
+                       clock-names = "txco";
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(U, 6) IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "host-wakeup";
+
+                       device-wakeup-gpios = <&gpio TEGRA_GPIO(U, 1) GPIO_ACTIVE_HIGH>;
+                       shutdown-gpios = <&gpio TEGRA_GPIO(U, 0) GPIO_ACTIVE_HIGH>;
+
+                       vbat-supply = <&vdd_3v3_com>;
+                       vddio-supply = <&vdd_1v8_vio>;
+               };
+       };
+
+       pwm@7000a000 {
+               status = "okay";
+       };
+
+       gen1_i2c: i2c@7000c000 {
+               status = "okay";
+               clock-frequency = <100000>;
+
+               /* Nuvoton NPCE698LA0BX embedded controller */
+       };
+
+       i2c@7000c400 {
+               status = "okay";
+               clock-frequency = <400000>;
+
+               /* Atmel Maxtouch MXT1664 HID over I2C */
+               touchscreen@4b {
+                       compatible = "hid-over-i2c";
+                       reg = <0x4b>;
+
+                       hid-descr-addr = <0x0000>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(H, 4) IRQ_TYPE_LEVEL_LOW>;
+
+                       vdd-supply = <&vdd_3v3_sys>;
+                       vddl-supply = <&vdd_1v8_vio>;
+               };
+       };
+
+       i2c@7000c500 {
+               status = "okay";
+               clock-frequency = <100000>;
+
+               /* TI TPS61050/61052 Boost Converter */
+               flash-led@33 {
+                       compatible = "ti,tps61052";
+                       reg = <0x33>;
+
+                       led {
+                               color = <LED_COLOR_ID_WHITE>;
+                       };
+               };
+
+               imu@69 {
+                       compatible = "invensense,mpu6050";
+                       reg = <0x69>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(X, 1) IRQ_TYPE_EDGE_RISING>;
+
+                       vdd-supply   = <&vdd_3v3_sys>;
+                       vddio-supply = <&vdd_1v8_vio>;
+
+                       mount-matrix =   "0", "-1",  "0",
+                                       "-1",  "0",  "0",
+                                        "0",  "0", "-1";
+
+                       /* External I2C interface */
+                       i2c-gate {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               magnetometer@d {
+                                       compatible = "asahi-kasei,ak8975";
+                                       reg = <0x0d>;
+
+                                       interrupt-parent = <&gpio>;
+                                       interrupts = <TEGRA_GPIO(D, 5) IRQ_TYPE_EDGE_RISING>;
+
+                                       vdd-supply = <&vdd_3v3_sys>;
+                                       vid-supply = <&vdd_1v8_vio>;
+
+                                       mount-matrix =   "0", "-1",  "0",
+                                                       "-1",  "0",  "0",
+                                                        "0",  "0", "-1";
+                               };
+                       };
+               };
+       };
+
+       hdmi_ddc: i2c@7000c700 {
+               status = "okay";
+               clock-frequency = <93750>;
+       };
+
+       i2c@7000d000 {
+               status = "okay";
+               clock-frequency = <400000>;
+
+               rt5640: audio-codec@1c {
+                       compatible = "realtek,rt5640";
+                       reg = <0x1c>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(W, 3) IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&tegra_pmc TEGRA_PMC_CLK_OUT_1>;
+                       clock-names = "mclk";
+               };
+
+               /* Texas Instruments TPS659110 PMIC */
+               pmic: pmic@2d {
+                       compatible = "ti,tps65911";
+                       reg = <0x2d>;
+
+                       interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+
+                       ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
+                       ti,system-power-controller;
+                       ti,sleep-keep-ck32k;
+                       ti,sleep-enable;
+
+                       #gpio-cells = <2>;
+                       gpio-controller;
+
+                       vcc1-supply = <&vdd_5v0_bat>;
+                       vcc2-supply = <&vdd_5v0_bat>;
+                       vcc3-supply = <&vdd_1v8_vio>;
+                       vcc4-supply = <&vdd_5v0_sys>;
+                       vcc5-supply = <&vdd_5v0_bat>;
+                       vcc6-supply = <&vdd_3v3_sys>;
+                       vcc7-supply = <&vdd_5v0_bat>;
+                       vccio-supply = <&vdd_5v0_bat>;
+
+                       pmic-sleep-hog {
+                               gpio-hog;
+                               gpios = <2 GPIO_ACTIVE_HIGH>;
+                               output-high;
+                       };
+
+                       regulators {
+                               vdd_lcd: vdd1 {
+                                       regulator-name = "vddio_ddr_1v2";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                                       ti,regulator-ext-sleep-control = <8>;
+                               };
+
+                               vddio_ddr: vdd2 {
+                                       regulator-name = "vddio_ddr";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               vdd_cpu: vddctrl {
+                                       regulator-name = "vdd_cpu,vdd_sys";
+                                       regulator-min-microvolt = <600000>;
+                                       regulator-max-microvolt = <1400000>;
+                                       regulator-coupled-with = <&vdd_core>;
+                                       regulator-coupled-max-spread = <300000>;
+                                       regulator-max-step-microvolt = <100000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                                       ti,regulator-ext-sleep-control = <1>;
+
+                                       nvidia,tegra-cpu-regulator;
+                               };
+
+                               vdd_1v8_vio: vio {
+                                       regulator-name = "vdd_1v8_gen";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               /* eMMC VDD */
+                               vcore_emmc: ldo1 {
+                                       regulator-name = "vdd_emmc_core";
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                               };
+
+                               /* ldo2 and ldo3 are not used by TF600T */
+
+                               ldo4 {
+                                       regulator-name = "vdd_rtc";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               /* uSD slot VDDIO */
+                               vddio_usd: ldo5 {
+                                       regulator-name = "vddio_sdmmc";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                               };
+
+                               avdd_dsi_csi: ldo6 {
+                                       regulator-name = "avdd_dsi_csi";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                               };
+
+                               ldo7 {
+                                       regulator-name = "vdd_pllm,x,u,a_p_c_s";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                                       ti,regulator-ext-sleep-control = <8>;
+                               };
+
+                               ldo8 {
+                                       regulator-name = "vdd_ddr_hs";
+                                       regulator-min-microvolt = <1000000>;
+                                       regulator-max-microvolt = <1000000>;
+                                       regulator-always-on;
+                                       ti,regulator-ext-sleep-control = <8>;
+                               };
+                       };
+               };
+
+               /* Capella CM3218 ambient light sensor */
+               light-sensor@48 {
+                       compatible = "capella,cm32181";
+                       reg = <0x48>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(L, 0) IRQ_TYPE_EDGE_RISING>;
+
+                       vdd-supply = <&vdd_3v3_als>;
+               };
+
+               nct72: temperature-sensor@4c {
+                       compatible = "onnn,nct1008";
+                       reg = <0x4c>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(CC, 2) IRQ_TYPE_EDGE_FALLING>;
+
+                       vcc-supply = <&vdd_3v3_sys>;
+                       #thermal-sensor-cells = <1>;
+               };
+
+               vdd_core: core-regulator@60 {
+                       compatible = "ti,tps62361";
+                       reg = <0x60>;
+
+                       regulator-name = "tps62361-vout";
+                       regulator-min-microvolt = <500000>;
+                       regulator-max-microvolt = <1770000>;
+                       regulator-coupled-with = <&vdd_cpu>;
+                       regulator-coupled-max-spread = <300000>;
+                       regulator-max-step-microvolt = <100000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+                       ti,enable-vout-discharge;
+                       ti,vsel0-state-high;
+                       ti,vsel1-state-high;
+
+                       nvidia,tegra-core-regulator;
+               };
+       };
+
+       pmc@7000e400 {
+               status = "okay";
+               nvidia,invert-interrupt;
+               nvidia,suspend-mode = <2>;
+               nvidia,cpu-pwr-good-time = <2000>;
+               nvidia,cpu-pwr-off-time = <200>;
+               nvidia,core-pwr-good-time = <3845 3845>;
+               nvidia,core-pwr-off-time = <0>;
+               nvidia,core-power-req-active-high;
+               nvidia,sys-clock-req-active-high;
+               core-supply = <&vdd_core>;
+
+               i2c-thermtrip {
+                       nvidia,i2c-controller-id = <4>;
+                       nvidia,bus-addr = <0x2d>;
+                       nvidia,reg-addr = <0x3f>;
+                       nvidia,reg-data = <0x81>;
+               };
+       };
+
+       spi@7000da00 {
+               status = "okay";
+               spi-max-frequency = <25000000>;
+
+               flash@1 {
+                       compatible = "winbond,w25q32", "jedec,spi-nor";
+                       reg = <1>;
+
+                       spi-max-frequency = <20000000>;
+                       vcc-supply = <&vdd_3v3_sys>;
+               };
+       };
+
+       memory-controller@7000f000 {
+               emc-timings-0 {
+                       /* Elpida 2GB 750 MHZ */
+                       nvidia,ram-code = <0>;
+
+                       timing-25500000 {
+                               clock-frequency = <25500000>;
+
+                               nvidia,emem-configuration = < 0x00020001 0xc0000010
+                                       0x00000001 0x00000001 0x00000002 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0502 0x75e30303 0x001f0000 >;
+                       };
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emem-configuration = < 0x00010001 0xc0000010
+                                       0x00000001 0x00000001 0x00000002 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0502 0x74e30303 0x001f0000 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emem-configuration = < 0x00000001 0xc0000018
+                                       0x00000001 0x00000001 0x00000003 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0503 0x74430504 0x001f0000 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emem-configuration = < 0x00000003 0xc0000025
+                                       0x00000001 0x00000001 0x00000005 0x00000002
+                                       0x00000003 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0505 0x74040a06 0x001f0000 >;
+                       };
+
+                       timing-375000000 {
+                               clock-frequency = <375000000>;
+
+                               nvidia,emem-configuration = < 0x00000005 0xc0000044
+                                       0x00000001 0x00000002 0x00000009 0x00000005
+                                       0x00000005 0x00000001 0x00000002 0x00000008
+                                       0x00000002 0x00000002 0x00000003 0x00000006
+                                       0x06030202 0x000d0709 0x7086110a 0x001f0000 >;
+                       };
+
+                       timing-750000000 {
+                               clock-frequency = <750000000>;
+
+                               nvidia,emem-configuration = < 0x0000000b 0xc0000087
+                                       0x00000004 0x00000005 0x00000012 0x0000000c
+                                       0x0000000b 0x00000002 0x00000003 0x0000000c
+                                       0x00000002 0x00000002 0x00000004 0x00000008
+                                       0x08040202 0x00160d12 0x710c2213 0x001f0000 >;
+                       };
+               };
+
+               emc-timings-1 {
+                       /* Hynix 2GB 750 MHZ */
+                       nvidia,ram-code = <1>;
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emem-configuration = < 0x00010003 0xc0000010
+                                       0x00000001 0x00000001 0x00000002 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0502 0x74630303 0x001f0000 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emem-configuration = < 0x00000003 0xc0000018
+                                       0x00000001 0x00000001 0x00000003 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0503 0x73c30504 0x001f0000 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emem-configuration = < 0x00000006 0xc0000025
+                                       0x00000001 0x00000001 0x00000005 0x00000002
+                                       0x00000003 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0505 0x73840a06 0x001f0000 >;
+                       };
+
+                       timing-375000000 {
+                               clock-frequency = <375000000>;
+
+                               nvidia,emem-configuration = < 0x0000000b 0xc0000044
+                                       0x00000001 0x00000002 0x00000009 0x00000005
+                                       0x00000005 0x00000001 0x00000002 0x00000008
+                                       0x00000002 0x00000002 0x00000003 0x00000006
+                                       0x06030202 0x000c0609 0x7086110a 0x001f0000 >;
+                       };
+
+                       timing-750000000 {
+                               clock-frequency = <750000000>;
+
+                               nvidia,emem-configuration = < 0x00000016 0xc0000087
+                                       0x00000003 0x00000004 0x00000012 0x0000000c
+                                       0x0000000b 0x00000002 0x00000003 0x0000000c
+                                       0x00000002 0x00000002 0x00000004 0x00000008
+                                       0x08040202 0x00150c12 0x710c2213 0x001f0000 >;
+                       };
+               };
+
+               emc-timings-2 {
+                       /* Micron 2GB 750 MHZ */
+                       nvidia,ram-code = <2>;
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emem-configuration = < 0x00010003 0xc0000010
+                                       0x00000001 0x00000001 0x00000002 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0502 0x73430303 0x001f0000 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emem-configuration = < 0x00000003 0xc0000018
+                                       0x00000001 0x00000001 0x00000003 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0503 0x74430504 0x001f0000 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emem-configuration = < 0x00000006 0xc0000025
+                                       0x00000001 0x00000001 0x00000005 0x00000002
+                                       0x00000003 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0505 0x74040a06 0x001f0000 >;
+                       };
+
+                       timing-375000000 {
+                               clock-frequency = <375000000>;
+
+                               nvidia,emem-configuration = < 0x0000000b 0xc0000044
+                                       0x00000001 0x00000002 0x00000009 0x00000005
+                                       0x00000005 0x00000001 0x00000002 0x00000008
+                                       0x00000002 0x00000002 0x00000003 0x00000006
+                                       0x06030202 0x000d0709 0x7086110a 0x001f0000 >;
+                       };
+
+                       timing-750000000 {
+                               clock-frequency = <750000000>;
+
+                               nvidia,emem-configuration = < 0x00000016 0xc0000087
+                                       0x00000004 0x00000005 0x00000012 0x0000000c
+                                       0x0000000b 0x00000003 0x00000003 0x0000000c
+                                       0x00000002 0x00000002 0x00000004 0x00000008
+                                       0x08040202 0x00160d12 0x710c2213 0x001f0000 >;
+                       };
+               };
+       };
+
+       memory-controller@7000f400 {
+               emc-timings-0 {
+                       /* Elpida 2GB 750 MHZ */
+                       nvidia,ram-code = <0>;
+
+                       timing-25500000 {
+                               clock-frequency = <25500000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+                               nvidia,emc-cfg-dyn-self-ref;
+
+                               nvidia,emc-configuration =  < 0x00000001
+                                       0x00000007 0x00000000 0x00000000 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000000
+                                       0x00000000 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x000000c0 0x00000000 0x00000030
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000008 0x00000008
+                                       0x00000004 0x00000001 0x00000000 0x00000004
+                                       0x00000005 0x000000c7 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000287 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+                               nvidia,emc-cfg-dyn-self-ref;
+
+                               nvidia,emc-configuration =  < 0x00000002
+                                       0x0000000f 0x00000001 0x00000000 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000000
+                                       0x00000000 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x00000181 0x00000000 0x00000060
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000010 0x00000010
+                                       0x00000004 0x00000002 0x00000000 0x00000004
+                                       0x00000005 0x0000018e 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x8000040b 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+                               nvidia,emc-cfg-dyn-self-ref;
+
+                               nvidia,emc-configuration =  < 0x00000004
+                                       0x0000001e 0x00000003 0x00000001 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000001
+                                       0x00000001 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x00000303 0x00000000 0x000000c0
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000020 0x00000020
+                                       0x00000004 0x00000004 0x00000000 0x00000004
+                                       0x00000005 0x0000031c 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000713 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+                               nvidia,emc-cfg-dyn-self-ref;
+
+                               nvidia,emc-configuration =  < 0x00000009
+                                       0x0000003d 0x00000007 0x00000002 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000002
+                                       0x00000002 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000006 0x00000004 0x0000000a
+                                       0x0000000b 0x00000607 0x00000000 0x00000181
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000040 0x00000040
+                                       0x00000004 0x00000007 0x00000000 0x00000004
+                                       0x00000005 0x00000638 0x00000007 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x004400a4
+                                       0x00008000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00020000
+                                       0x00000100 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000d22 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-375000000 {
+                               clock-frequency = <375000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200040>;
+                               nvidia,emc-mode-reset = <0x80000521>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+
+                               nvidia,emc-configuration =  < 0x00000011
+                                       0x0000006f 0x0000000c 0x00000004 0x00000003
+                                       0x00000008 0x00000002 0x0000000a 0x00000004
+                                       0x00000004 0x00000002 0x00000001 0x00000000
+                                       0x00000004 0x00000006 0x00000004 0x0000000a
+                                       0x0000000c 0x00000b2d 0x00000000 0x000002cb
+                                       0x00000001 0x00000008 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000075 0x00000200
+                                       0x00000004 0x0000000c 0x00000000 0x00000004
+                                       0x00000005 0x00000b6d 0x00000000 0x00000004
+                                       0x00000000 0x00000000 0x00007088 0x00200084
+                                       0x00008000 0x00034000 0x00034000 0x00034000
+                                       0x00034000 0x00014000 0x00014000 0x00014000
+                                       0x00014000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00048000 0x00048000 0x00048000
+                                       0x00048000 0x000002a0 0x0600013d 0x00000000
+                                       0x77fff884 0x01f1f508 0x05057404 0x54000007
+                                       0x080001e8 0x06000021 0x00000802 0x00020000
+                                       0x00000100 0x0150000c 0xa0f10000 0x00000000
+                                       0x00000000 0x8000174b 0xe8000000 0xff00ff89 >;
+                       };
+
+                       timing-750000000 {
+                               clock-frequency = <750000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200058>;
+                               nvidia,emc-mode-reset = <0x80000d71>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000023
+                                       0x000000df 0x00000019 0x00000009 0x00000005
+                                       0x0000000d 0x00000004 0x00000013 0x00000009
+                                       0x00000009 0x00000003 0x00000001 0x00000000
+                                       0x00000007 0x0000000b 0x00000009 0x0000000b
+                                       0x00000011 0x0000169a 0x00000000 0x000005a6
+                                       0x00000003 0x00000010 0x00000001 0x00000000
+                                       0x0000000e 0x00000018 0x000000e9 0x00000200
+                                       0x00000005 0x00000017 0x00000000 0x00000007
+                                       0x00000008 0x000016da 0x0000000c 0x00000004
+                                       0x00000000 0x00000000 0x00005088 0xf0080191
+                                       0x00008000 0x0000000a 0x0000000a 0x0000000a
+                                       0x0000000a 0x00000008 0x00000008 0x00000008
+                                       0x00000008 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x0000000a 0x0000000a 0x0000000a
+                                       0x0000000a 0x000002a0 0x0600013d 0x22220000
+                                       0x77fff884 0x01f1f501 0x07077404 0x54000000
+                                       0x080001e8 0x06000021 0x00000802 0x00020000
+                                       0x00000100 0x00df000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80002d93 0xf8000000 0xff00ff49 >;
+                       };
+               };
+
+               emc-timings-1 {
+                       /* Hynix 2GB 750 MHZ */
+                       nvidia,ram-code = <1>;
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+                               nvidia,emc-cfg-dyn-self-ref;
+
+                               nvidia,emc-configuration =  < 0x00000002
+                                       0x0000000d 0x00000001 0x00000000 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000000
+                                       0x00000000 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x00000181 0x00000000 0x00000060
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x0000000e 0x0000000e
+                                       0x00000004 0x00000002 0x00000000 0x00000004
+                                       0x00000005 0x0000018e 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x8000040b 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+                               nvidia,emc-cfg-dyn-self-ref;
+
+                               nvidia,emc-configuration =  < 0x00000004
+                                       0x0000001a 0x00000003 0x00000001 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000001
+                                       0x00000001 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x00000303 0x00000000 0x000000c0
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x0000001c 0x0000001c
+                                       0x00000004 0x00000004 0x00000000 0x00000004
+                                       0x00000005 0x0000031c 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000713 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+                               nvidia,emc-cfg-dyn-self-ref;
+
+                               nvidia,emc-configuration =  < 0x00000009
+                                       0x00000035 0x00000007 0x00000002 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000002
+                                       0x00000002 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000006 0x00000004 0x0000000a
+                                       0x0000000b 0x00000607 0x00000000 0x00000181
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000038 0x00000038
+                                       0x00000004 0x00000007 0x00000000 0x00000004
+                                       0x00000005 0x00000638 0x00000007 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x004400a4
+                                       0x00008000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00020000
+                                       0x00000100 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000d22 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-375000000 {
+                               clock-frequency = <375000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200040>;
+                               nvidia,emc-mode-reset = <0x80000521>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+
+                               nvidia,emc-configuration =  < 0x00000011
+                                       0x00000060 0x0000000c 0x00000003 0x00000004
+                                       0x00000008 0x00000002 0x0000000a 0x00000003
+                                       0x00000003 0x00000002 0x00000001 0x00000000
+                                       0x00000004 0x00000006 0x00000004 0x0000000a
+                                       0x0000000c 0x00000b2d 0x00000000 0x000002cb
+                                       0x00000001 0x00000008 0x00000001 0x00000000
+                                       0x00000007 0x00000010 0x00000066 0x00000200
+                                       0x00000004 0x0000000c 0x00000000 0x00000004
+                                       0x00000005 0x00000b6d 0x00000000 0x00000004
+                                       0x00000000 0x00000000 0x00007288 0x00200084
+                                       0x00008000 0x00044000 0x00044000 0x00044000
+                                       0x00044000 0x00014000 0x00014000 0x00014000
+                                       0x00014000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00048000 0x00048000 0x00048000
+                                       0x00048000 0x000002a0 0x0600013d 0x00000000
+                                       0x77fff884 0x01f1f508 0x05057404 0x54000007
+                                       0x08000168 0x06000021 0x00000802 0x00020000
+                                       0x00000100 0x015f000c 0xa0f10000 0x00000000
+                                       0x00000000 0x8000174b 0xe8000000 0xff00ff89 >;
+                       };
+
+                       timing-750000000 {
+                               clock-frequency = <750000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200058>;
+                               nvidia,emc-mode-reset = <0x80000d71>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000023
+                                       0x000000c1 0x00000019 0x00000008 0x00000005
+                                       0x0000000d 0x00000004 0x00000013 0x00000008
+                                       0x00000008 0x00000003 0x00000001 0x00000000
+                                       0x00000007 0x0000000b 0x00000009 0x0000000b
+                                       0x00000011 0x0000169a 0x00000000 0x000005a6
+                                       0x00000003 0x00000010 0x00000001 0x00000000
+                                       0x0000000e 0x00000018 0x000000cb 0x00000200
+                                       0x00000005 0x00000017 0x00000000 0x00000007
+                                       0x00000008 0x000016da 0x0000000c 0x00000004
+                                       0x00000000 0x00000000 0x00005088 0xf0080191
+                                       0x00008000 0x00008008 0x00000008 0x00000008
+                                       0x00000008 0x00000008 0x00000008 0x00000008
+                                       0x00000008 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x0000000a 0x0000000a 0x0000000a
+                                       0x0000000a 0x000002a0 0x0800013d 0x22220000
+                                       0x77fff884 0x01f1f501 0x07077404 0x54000000
+                                       0x080001e8 0x08000021 0x00000802 0x00020000
+                                       0x00000100 0x00fd000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80002d93 0xe8000000 0xff00ff49 >;
+                       };
+               };
+
+               emc-timings-2 {
+                       /* Micron 2GB 750 MHZ */
+                       nvidia,ram-code = <2>;
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+                               nvidia,emc-cfg-dyn-self-ref;
+
+                               nvidia,emc-configuration =  < 0x00000002
+                                       0x00000008 0x00000001 0x00000000 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000000
+                                       0x00000000 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x00000181 0x00000000 0x00000060
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000009 0x00000009
+                                       0x00000004 0x00000002 0x00000000 0x00000004
+                                       0x00000005 0x0000018e 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x8000040b 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+                               nvidia,emc-cfg-dyn-self-ref;
+
+                               nvidia,emc-configuration =  < 0x00000004
+                                       0x0000001e 0x00000003 0x00000001 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000001
+                                       0x00000001 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x00000303 0x00000000 0x000000c0
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000020 0x00000020
+                                       0x00000004 0x00000004 0x00000000 0x00000004
+                                       0x00000005 0x0000031c 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000713 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+                               nvidia,emc-cfg-dyn-self-ref;
+
+                               nvidia,emc-configuration =  < 0x00000009
+                                       0x0000003d 0x00000007 0x00000002 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000002
+                                       0x00000002 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000006 0x00000004 0x0000000a
+                                       0x0000000b 0x00000607 0x00000000 0x00000181
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000040 0x00000040
+                                       0x00000004 0x00000007 0x00000000 0x00000004
+                                       0x00000005 0x00000638 0x00000007 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x004400a4
+                                       0x00008000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00020000
+                                       0x00000100 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000d22 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-375000000 {
+                               clock-frequency = <375000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200040>;
+                               nvidia,emc-mode-reset = <0x80000521>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+
+                               nvidia,emc-configuration =  < 0x00000011
+                                       0x0000006f 0x0000000c 0x00000004 0x00000003
+                                       0x00000008 0x00000002 0x0000000a 0x00000004
+                                       0x00000004 0x00000002 0x00000001 0x00000000
+                                       0x00000004 0x00000006 0x00000004 0x0000000a
+                                       0x0000000c 0x00000b2d 0x00000000 0x000002cb
+                                       0x00000001 0x00000008 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000075 0x00000200
+                                       0x00000004 0x0000000c 0x00000000 0x00000004
+                                       0x00000005 0x00000b6d 0x00000000 0x00000004
+                                       0x00000000 0x00000000 0x00007088 0x00200084
+                                       0x00008000 0x00044000 0x00044000 0x00044000
+                                       0x00044000 0x00014000 0x00014000 0x00014000
+                                       0x00014000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00048000 0x00048000 0x00048000
+                                       0x00048000 0x000002a0 0x0800013d 0x00000000
+                                       0x77fff884 0x01f1f508 0x05057404 0x54000007
+                                       0x080001e8 0x08000021 0x00000802 0x00020000
+                                       0x00000100 0x0150000c 0xa0f10000 0x00000000
+                                       0x00000000 0x8000174b 0xe8000000 0xff00ff89 >;
+                       };
+
+                       timing-750000000 {
+                               clock-frequency = <750000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200058>;
+                               nvidia,emc-mode-reset = <0x80000d71>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000023
+                                       0x000000df 0x00000019 0x00000009 0x00000005
+                                       0x0000000d 0x00000004 0x00000013 0x00000009
+                                       0x00000009 0x00000006 0x00000001 0x00000000
+                                       0x00000007 0x0000000b 0x00000009 0x0000000b
+                                       0x00000011 0x0000169a 0x00000000 0x000005a6
+                                       0x00000003 0x00000010 0x00000001 0x00000000
+                                       0x0000000e 0x00000018 0x000000e9 0x00000200
+                                       0x00000005 0x00000017 0x00000000 0x00000007
+                                       0x00000008 0x000016da 0x0000000c 0x00000004
+                                       0x00000000 0x00000000 0x00005088 0xf0080191
+                                       0x00008000 0x0000800a 0x0000000a 0x0000000a
+                                       0x0000000a 0x00000008 0x00000008 0x00000008
+                                       0x00000008 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x007fc00a 0x0000000a 0x0000000a
+                                       0x0000000a 0x000002a0 0x0800013d 0x22220000
+                                       0x77fff884 0x01f1f501 0x07077404 0x54000000
+                                       0x080001e8 0x08000021 0x00000802 0x00020000
+                                       0x00000100 0x00df000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80002d93 0xf8000000 0xff00ff49 >;
+                       };
+               };
+       };
+
+       hda@70030000 {
+               status = "okay";
+       };
+
+       ahub@70080000 {
+               i2s@70080400 {          /* i2s1 */
+                       status = "okay";
+               };
+
+               /* BT SCO */
+               i2s@70080600 {          /* i2s3 */
+                       status = "okay";
+               };
+       };
+
+       sdmmc1: mmc@78000000 {
+               status = "okay";
+               bus-width = <4>;
+
+               cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
+               power-gpios =  <&gpio TEGRA_GPIO(D, 7) GPIO_ACTIVE_HIGH>;
+
+               vmmc-supply = <&vdd_3v3_sys>;
+               vqmmc-supply = <&vddio_usd>;
+       };
+
+       sdmmc3: mmc@78000400 {
+               status = "okay";
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               assigned-clocks = <&tegra_car TEGRA30_CLK_SDMMC3>;
+               assigned-clock-parents = <&tegra_car TEGRA30_CLK_PLL_C>;
+               assigned-clock-rates = <50000000>;
+
+               max-frequency = <50000000>;
+               keep-power-in-suspend;
+               bus-width = <4>;
+               non-removable;
+
+               mmc-pwrseq = <&brcm_wifi_pwrseq>;
+               vmmc-supply = <&vdd_3v3_com>;
+               vqmmc-supply = <&vdd_1v8_vio>;
+
+               /* Azurewave AW-NH665 BCM4330B1 */
+               wifi@1 {
+                       compatible = "brcm,bcm4329-fmac";
+                       reg = <1>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(O, 4) IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "host-wake";
+               };
+       };
+
+       sdmmc4: mmc@78000600 {
+               status = "okay";
+               bus-width = <8>;
+
+               non-removable;
+               mmc-ddr-1_8v;
+
+               vmmc-supply = <&vcore_emmc>;
+               vqmmc-supply = <&vdd_1v8_vio>;
+       };
+
+       /* USB via ASUS connector */
+       usb@7d000000 {
+               compatible = "nvidia,tegra30-udc";
+               status = "okay";
+               dr_mode = "peripheral";
+       };
+
+       usb-phy@7d000000 {
+               status = "okay";
+               dr_mode = "peripheral";
+               nvidia,hssync-start-delay = <0>;
+               nvidia,xcvr-lsfslew = <2>;
+               nvidia,xcvr-lsrslew = <2>;
+               vbus-supply = <&vdd_5v0_sys>;
+       };
+
+       /* Dock's USB port */
+       usb@7d008000 {
+               status = "okay";
+       };
+
+       usb-phy@7d008000 {
+               status = "okay";
+               vbus-supply = <&vdd_5v0_bat>;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+
+               enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
+               power-supply = <&vdd_5v0_bl>;
+               pwms = <&pwm 0 71428>;
+
+               brightness-levels = <1 255>;
+               num-interpolated-steps = <254>;
+               default-brightness-level = <15>;
+       };
+
+       pad_battery: battery-pad {
+               compatible = "simple-battery";
+               device-chemistry = "lithium-ion-polymer";
+               charge-full-design-microamp-hours = <6760000>;
+               energy-full-design-microwatt-hours = <25000000>;
+               operating-range-celsius = <0 45>;
+       };
+
+       dock_battery: battery-dock {
+               compatible = "simple-battery";
+               device-chemistry = "lithium-ion-polymer";
+               charge-full-design-microamp-hours = <2980000>;
+               energy-full-design-microwatt-hours = <22000000>;
+               operating-range-celsius = <0 45>;
+       };
+
+       /* PMIC has a built-in 32KHz oscillator which is used by PMC */
+       clk32k_in: clock-32k {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               clock-output-names = "pmic-oscillator";
+       };
+
+       cpus {
+               cpu0: cpu@0 {
+                       cpu-supply = <&vdd_cpu>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+               };
+               cpu1: cpu@1 {
+                       cpu-supply = <&vdd_cpu>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+               };
+               cpu2: cpu@2 {
+                       cpu-supply = <&vdd_cpu>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+               };
+               cpu3: cpu@3 {
+                       cpu-supply = <&vdd_cpu>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+               };
+       };
+
+       extcon-keys {
+               compatible = "gpio-keys";
+
+               switch-dock-hall-sensor {
+                       label = "Lid sensor";
+                       gpios = <&gpio TEGRA_GPIO(BB, 6) GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       debounce-interval = <500>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+
+               switch-lineout-detect {
+                       label = "Audio dock line-out detect";
+                       gpios = <&gpio TEGRA_GPIO(X, 3) GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LINEOUT_INSERT>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               key-power {
+                       label = "Power";
+                       gpios = <&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+
+               key-volume-down {
+                       label = "Volume Down";
+                       gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+
+               key-volume-up {
+                       label = "Volume Up";
+                       gpios = <&gpio TEGRA_GPIO(Q, 3) GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+       };
+
+       haptic-feedback {
+               compatible = "gpio-vibrator";
+               enable-gpios = <&gpio TEGRA_GPIO(H, 3) GPIO_ACTIVE_HIGH>;
+               vcc-supply = <&vdd_3v3_sys>;
+       };
+
+       opp-table-actmon {
+               /delete-node/ opp-800000000;
+               /delete-node/ opp-900000000;
+       };
+
+       opp-table-emc {
+               /delete-node/ opp-800000000-1300;
+               /delete-node/ opp-900000000-1350;
+       };
+
+       brcm_wifi_pwrseq: pwrseq-wifi {
+               compatible = "mmc-pwrseq-simple";
+
+               clocks = <&tegra_pmc TEGRA_PMC_CLK_BLINK>;
+               clock-names = "ext_clock";
+
+               reset-gpios = <&gpio TEGRA_GPIO(P, 1) GPIO_ACTIVE_LOW>;
+               post-power-on-delay-ms = <300>;
+               power-off-delay-us = <300>;
+       };
+
+       vdd_5v0_bat: regulator-bat {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_ac_bat";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_5v0_cp: regulator-sby {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_5v0_sby";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               gpio = <&pmic 0 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_bat>;
+       };
+
+       vdd_5v0_sys: regulator-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_5v0_sys";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               gpio = <&pmic 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_bat>;
+       };
+
+       vdd_1v5_ddr: regulator-ddr {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_ddr";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               regulator-always-on;
+               regulator-boot-on;
+               gpio = <&pmic 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_bat>;
+       };
+
+       vdd_3v3_sys: regulator-3v {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_3v3_sys";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               gpio = <&pmic 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_bat>;
+       };
+
+       vdd_3v3_com: regulator-com {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_3v3_com";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               gpio = <&gpio TEGRA_GPIO(D, 0) GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_3v3_sys>;
+       };
+
+       vdd_3v3_als: regulator-als {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_3v3_als";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               gpio = <&gpio TEGRA_GPIO(L, 5) GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_3v3_sys>;
+       };
+
+       vdd_5v0_bl: regulator-bl {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_5v0_bl";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               gpio = <&gpio TEGRA_GPIO(H, 0) GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_bat>;
+       };
+
+       hdmi_5v0_sys: regulator-hdmi {
+               compatible = "regulator-fixed";
+               regulator-name = "hdmi_5v0_sys";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio TEGRA_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&vdd_5v0_sys>;
+       };
+
+       sound {
+               compatible = "asus,tegra-audio-rt5640-tf600t",
+                            "nvidia,tegra-audio-rt5640";
+               nvidia,model = "Asus VivoTab RT TF600T RT5640";
+
+               nvidia,audio-routing =
+                       "Headphones", "HPOR",
+                       "Headphones", "HPOL",
+                       "Speakers", "SPORP",
+                       "Speakers", "SPORN",
+                       "Speakers", "SPOLP",
+                       "Speakers", "SPOLN",
+                       "DMIC1", "Mic Jack";
+
+               nvidia,i2s-controller = <&tegra_i2s1>;
+               nvidia,audio-codec = <&rt5640>;
+
+               nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
+               nvidia,mic-det-gpios = <&gpio TEGRA_GPIO(X, 2) GPIO_ACTIVE_LOW>;
+               nvidia,coupled-mic-hp-det;
+
+               clocks = <&tegra_car TEGRA30_CLK_PLL_A>,
+                        <&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
+                        <&tegra_pmc TEGRA_PMC_CLK_OUT_1>;
+               clock-names = "pll_a", "pll_a_out0", "mclk";
+
+               assigned-clocks = <&tegra_car TEGRA30_CLK_EXTERN1>,
+                                 <&tegra_pmc TEGRA_PMC_CLK_OUT_1>;
+
+               assigned-clock-parents = <&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
+                                        <&tegra_car TEGRA30_CLK_EXTERN1>;
+       };
+
+       thermal-zones {
+               /*
+                * NCT72 has two sensors:
+                *
+                *      0: internal that monitors ambient/skin temperature
+                *      1: external that is connected to the CPU's diode
+                *
+                * Ideally we should use userspace thermal governor,
+                * but it's a much more complex solution.  The "skin"
+                * zone exists as a simpler solution which prevents
+                * Transformers from getting too hot from a user's
+                * tactile perspective. The CPU zone is intended to
+                * protect silicon from damage.
+                */
+
+               skin-thermal {
+                       polling-delay-passive = <1000>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
+
+                       thermal-sensors = <&nct72 0>;
+
+                       trips {
+                               trip0: skin-alert {
+                                       /* throttle at 57C until temperature drops to 56.8C */
+                                       temperature = <57000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               trip1: skin-crit {
+                                       /* shut down at 65C */
+                                       temperature = <65000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&trip0>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&actmon THERMAL_NO_LIMIT
+                                                                 THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+
+               cpu-thermal {
+                       polling-delay-passive = <1000>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
+
+                       thermal-sensors = <&nct72 1>;
+
+                       trips {
+                               trip2: cpu-alert {
+                                       /* throttle at 75C until temperature drops to 74.8C */
+                                       temperature = <75000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               trip3: cpu-crit {
+                                       /* shut down at 90C */
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map1 {
+                                       trip = <&trip2>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&actmon THERMAL_NO_LIMIT
+                                                                 THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
+};
index 4012f9c799a8a3b1b309498c71626685c4914851..b7d0ebb766a6eca277adf85291542c094c03a33c 100644 (file)
                status = "okay";
                clock-frequency = <400000>;
 
+               embedded-controller@10 {
+                       compatible = "pegatron,chagall-ec";
+                       reg = <0x10>;
+
+                       monitored-battery = <&battery>;
+                       power-supplies = <&mains>;
+               };
+
                /* Wolfson Microelectronics WM8903 audio codec */
                wm8903: audio-codec@1a {
                        compatible = "wlf,wm8903";
                default-brightness-level = <15>;
        };
 
+       battery: battery-cell {
+               compatible = "simple-battery";
+               device-chemistry = "lithium-ion-polymer";
+               charge-full-design-microamp-hours = <3050000>;
+               energy-full-design-microwatt-hours = <23000000>;
+               operating-range-celsius = <0 45>;
+       };
+
        /* PMIC has a built-in 32KHz oscillator which is used by PMC */
        clk32k_in: clock-32k {
                compatible = "fixed-clock";
index 5f62c99909c592980f54ee8ab1fe1c47cc9a28c4..872cf7e16f20c923e7772e8def7df46276d683ef 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2013-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 9c9122da3737a02c8040262f91948d55626c3fc9..96c37f4296e5d13f31c29b66c99fe1fde1d47a7a 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2013-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
- *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
  */
 
 /dts-v1/;
index 29e3f5f37c25d43ff95807122f03b99293e3486e..88855d3b20317ab05b5705dfce9778db178e5a40 100644 (file)
@@ -1,45 +1,9 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2012-2017 <LW@KARO-electronics.de>
  * based on imx53-qsb.dts
  *   Copyright 2011 Freescale Semiconductor, Inc.
  *   Copyright 2011 Linaro Ltd.
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include "imx53.dtsi"
index 82d5f85722eaf911e75b94801c34278fedfaf52b..50dd3df9dd045572582b722fe72b638f467aee97 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 59b8afc36e66c2fa3dc64084b90aebb31acc29f9..8ca5b6b8da072e494b072d145cadd738057f734a 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2016 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 21bdfaf8df53d323e0b5d16f9fce3195d586dc8d..b94455406a57914291af033af5700b31a98d74b3 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 103261ea93343cecec0f8f149f6057e20d63aaf5..dd978105b42ff36c1a85d4a18bda77b3715eb3ad 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 9c6d3cd3d6a76d48e79fd9366d5f16a4e10ddfb6..172dad42363983337fb95a1d46d27dc7194cb44c 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 7436626673fc4511cc46cb743ec5e22fdf93bf7a..136ae7841878382d105b9ede50accddbb6c8734b 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index fc23b4d291a1b462695c192f3618b7f86de71583..e1b525ed292ab8a3879357b8efe6454e79698e42 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 9eb2ef17339c739080b9ea02b753574ba582197f..9a6a5cda9a3bf10444082d98ba8f09c349cce5b4 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2015-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 4101c6597721c70cf167a2c89a21730121bbdee0..0e8f4c3f376022f62b83ee833377e657b8f52628 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index a5532ecc18c5ad9d3901f53e575483da3cbe9cc6..9958e8701c98f263b49dfa42c884104432f2e05f 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2015-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 67ed0452f5de5c1a2437a6ccbf70b7fdcdb195e4..d9bfd340efb2164894507102ba3f04d08c8ad4f6 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index d34189fc52d9793e70ab56a6b6c23b1501122071..8243f0d6d387201d2b436d23c8795a7cd9faf3bf 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 7030b2654bbd23d33580d79679e7016671b8a0e0..2d031403ab197b5cadd83cb0fd8c3caaef5a1d78 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index aef5fcc42904f6e5775e92df3b72573252e5a0b5..684a2583db75921a5cb998ee46c854a0c18271b7 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 5342f2f5a8a856c25fbc70200212f6f6aec96ce1..7fdc794615f24bb019d0d6f0d84b12c57ddfd1e8 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index c4588fb0bf6fe492ed84f48adcc8eea5c94d9299..209aaebe148a429b0bf6dc6f170bd271e5a1b9ce 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2016-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 2c7feeef1b0e05171b3113bb21dbac6f1e56e240..44d1871ac666aad870812fdbcb8591e6669331a0 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index e9c224cea752256fb30a2a68106be401695281d4..22842f2ef6859ce65179bd2e324e235a30ebbc1c 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2016 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 735f2bbf143970932b0712c60943b13b3ffd5035..c69fdd064e2f8c885f824cacc857246a9edac44a 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index a182e4cb0e6ec2bdfa0273e45e8f8bfd3e999f30..a9a33eeb97120467abe5c62aee76c45007c636cd 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index ca1e2ae3341ece1b14ff924dd6d6ca9700c39a71..25a93cd4e5f585c59a90b96a7f67714659666cdc 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 393bfec58e2f47525ec8b0ca8cd53c64bd477d59..d630c572c7043ecc8a2934c63ddcd9bacca6e845 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 4ee860b626ff6842d23ee3971d1a85b21416f79c..01ac3493fa3285e1a66a832a52f72125ae7097c3 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 1ab175ffa238ad2e2a80a9c223accd4c4951692c..1013025cb2d54bf3b8700e1c1bf6a3a4220f5a22 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 0a4daec8d3ad3abd733892febf7ab11029bc47ff..5dd8f1642db328ea985a332a1a6fd9110c66c8ea 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 9ffbb0fe7df860c1d343e0daca42166e6b326a57..ffa79c0eb05a15dac21bce0b0809b25f29c0c568 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index cb2fcb4896c6590efae1c8e411eca573426243aa..1346fd663d68eaeeae05395007c2a725ef713abe 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index d43a5d8f174976bc78ae0c5d4043daa3d5e3d669..eac07d5944cca2a586e78fe89513c802558af0d8 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index f7b0acb65352c3c3852c3e2ca7f70aef2a37a508..c485da35d333ab9a4f30aeb4612369c278ad62e9 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 387edf2b3f96b437da6b4b421b5c71faf2d64db9..53304fc3a90b1e7121bb652de47b457421fb71d4 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2016-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 29960d1cf6a03f260e92e7d1a11f34d6c24a3a1e..009a9d56757c8c11f22b991928547c281b25e866 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include <dt-bindings/gpio/gpio.h>
index c6e231de674aa35f0f3d6e4bd90838573d5606a0..e3b677384a227dc04b03e609af0b613099455bc6 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2016 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include <dt-bindings/gpio/gpio.h>
index d0f648938cae784f1db2d53658150359436044a4..ce1d49a9e0cd5f28f5b95375e895817cc0be19f0 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include <dt-bindings/gpio/gpio.h>
index 71911df881ccca150cd445454ae5d9c9062732ff..50b484998c49c3057976bcb17b1d05a782a237f1 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include <dt-bindings/gpio/gpio.h>
index 716c324a745809bc091511d46634191bfafe0ffb..3125cd04d4ea66df445fcdbdec6c5c9a0da58160 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Gateworks Corporation
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include <dt-bindings/gpio/gpio.h>
index 77594546ef376826ab67282f0c71263a3a881bdd..cdeaca36867e5fef1496bbc7171c1ba529f99ad3 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 / {
index 4eb53d5677a6501c97ee578deee107dbb6e83166..63d09c01a3c67054685f9428c680045d0808d3ca 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 / {
index bae7313d729d958511cfd3060158a61193ce19b3..dd4e5bce4a55dca44ee70d5485017ddba1e186d2 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 / {
index 2fa37d1b16cc0473004f5a64969b0dc6112d3104..2bb5b762c98400b285426341f0fb21a4e64a0258 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2014-2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include <dt-bindings/gpio/gpio.h>
index 92b38e6699aafca6e9205f547880eb910b78f810..3183abdd25aa694b5e2d96561d91f6a78b273f74 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index ffc0f2ee11d2378bc82904149ac1c7168477fc22..174824a8138ef7363d487948af08415694a53605 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 07ad70718aec59fe2bd60bcf79311f0300168a1c..31854bc52e76573fb960b80454388594cfb402b3 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index dd494d587014ec627d1a745002fa015ccd0f3f03..dfe1535128fe0a2d2e6ebad07d0f3ebe7248d5b6 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2017 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 29d2f86d5e34a74d6cc498f25b35da70a5f72c0d..f4c45e964daf8f6ff1951d5fe94b7806c25c45d9 100644 (file)
        pinctrl-0 = <&pinctrl_uart2>;
        linux,rs485-enabled-at-boot-time;
        rs485-rx-during-tx;
-       rs485-rts-active-low;
        uart-has-rtscts;
        status = "okay";
 };
index dcf88f6103466f1afaef092b6dbae5e062ffa063..4c0ac4d4df68688b1b8f36bd6c3be522393a98ea 100644 (file)
 
        flash@0 {
                compatible = "mxicy,mx25v8035f", "jedec,spi-nor";
-               spi-max-frequency = <50000000>;
                reg = <0>;
+               spi-max-frequency = <50000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               reg = <0x0 0xf0000>;
+                               label = "u-boot";
+                       };
+
+                       partition@f0000 {
+                               reg = <0xf0000 0x8000>;
+                               label = "env";
+                       };
+
+                       partition@f8000 {
+                               reg = <0xf8000 0x8000>;
+                               label = "env_redundant";
+                       };
+               };
        };
 };
 
@@ -61,7 +82,7 @@
        pinctrl-0 = <&pinctrl_qspi>;
        status = "okay";
 
-       spi-flash@0 {
+       flash@0 {
                #address-cells = <1>;
                #size-cells = <1>;
                compatible = "spi-nand";
index 8c2f3df79b47fee19aff4827aa510af24b11e5a4..188f3a2a312fa465014772a64f0d918df320e7c3 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2015 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index d82698e7d50fb54853ff336fca838a435c3e775b..247a0aab779122e3099d0e3124563f3da51f8846 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2015 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 20c810a81403a31b91bed018d9ad36d935adb5de..84b45542814e3e0482cade4df40ac365e19985a2 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2015 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 278120404d3175683c90a81dc1581d1e2845aa12..f053358bc9317f8447d65013a18670cb470106b2 100644 (file)
@@ -1,42 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 /*
  * Copyright 2015 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include <dt-bindings/gpio/gpio.h>
diff --git a/src/arm/nxp/imx/imx6ull-engicam-microgea-bmm.dts b/src/arm/nxp/imx/imx6ull-engicam-microgea-bmm.dts
new file mode 100644 (file)
index 0000000..279d46c
--- /dev/null
@@ -0,0 +1,303 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
+ * Copyright (C) 2025 Engicam srl
+ */
+
+/dts-v1/;
+
+#include "imx6ull-engicam-microgea.dtsi"
+
+/ {
+       compatible = "engicam,microgea-imx6ull-bmm",
+                    "engicam,microgea-imx6ull", "fsl,imx6ull";
+       model = "Engicam MicroGEA i.MX6ULL BMM Board";
+
+       backlight {
+               compatible = "pwm-backlight";
+               brightness-levels = <0 100>;
+               num-interpolated-steps = <100>;
+               default-brightness-level = <85>;
+               pwms = <&pwm8 0 100000 0>;
+       };
+
+       buzzer {
+               compatible = "pwm-beeper";
+               pwms = <&pwm4 0 1000000 0>;
+       };
+
+       reg_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       reg_usb1_vbus: regulator-usb1-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_usb1>;
+               regulator-name = "usb1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio5 0 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_usb2_vbus: regulator-usb2-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_usb2>;
+               regulator-name = "usbotg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio5 3 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_ext_pwr: regulator-ext-pwr {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_ext_pwr>;
+               regulator-name = "ext-pwr";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio5 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "imx6ull-microgea-bmm-sgtl5000";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&codec_dai>;
+               simple-audio-card,frame-master = <&codec_dai>;
+               simple-audio-card,widgets =
+                       "Microphone", "Mic Jack",
+                       "Headphone", "Headphone Jack";
+               simple-audio-card,routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "Headphone Jack", "HP_OUT";
+
+               cpu_dai: simple-audio-card,cpu {
+                       sound-dai = <&sai2>;
+               };
+
+               codec_dai: simple-audio-card,codec {
+                       sound-dai = <&codec>;
+               };
+       };
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       clock-frequency = <100000>;
+       status = "okay";
+
+       codec: audio-codec@a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_mclk>;
+               #sound-dai-cells = <0>;
+               clocks = <&clks IMX6UL_CLK_CKO>;
+               assigned-clocks = <&clks IMX6UL_CLK_CKO2_SEL>,
+                                 <&clks IMX6UL_CLK_CKO2_PODF>,
+                                 <&clks IMX6UL_CLK_CKO2>,
+                                 <&clks IMX6UL_CLK_CKO>;
+               assigned-clock-parents = <&clks IMX6UL_CLK_OSC>,
+                                        <&clks IMX6UL_CLK_CKO2_SEL>,
+                                        <&clks IMX6UL_CLK_CKO2_PODF>,
+                                        <&clks IMX6UL_CLK_CKO2>;
+               VDDA-supply = <&reg_3v3>;
+               VDDIO-supply = <&reg_3v3>;
+               VDDD-supply = <&reg_1v8>;
+       };
+};
+
+&pwm4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm4>;
+       status = "okay";
+};
+
+&pwm8 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm8>;
+       status = "okay";
+};
+
+&sai2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai2>;
+       status = "okay";
+};
+
+&tsc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_tsc>;
+       measure-delay-time = <0x9ffff>;
+       pre-charge-time = <0xfff>;
+       xnur-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&usbotg1 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb1_vbus>;
+       status = "okay";
+};
+
+&usbotg2 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb2_vbus>;
+       status = "okay";
+};
+
+/* MicroSD */
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       vmmc-supply = <&reg_3v3>;
+       bus-width = <4>;
+       keep-power-in-suspend;
+       non-removable;
+       wakeup-source;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_can: can-grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX      0x1b020
+                       MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX      0x1b020
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO00__I2C2_SCL          0x4001b8b0
+                       MX6UL_PAD_UART5_RX_DATA__I2C2_SDA       0x4001b8b0
+               >;
+       };
+
+       pinctrl_mclk: mclkgrp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_TMS__CCM_CLKO1           0x13009
+               >;
+       };
+
+       pinctrl_pwm4: pwm4grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO05__PWM4_OUT          0x110b0
+               >;
+       };
+
+       pinctrl_pwm8: pwm8grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET1_RX_ER__PWM8_OUT         0x11008
+               >;
+       };
+
+       pinctrl_sai2: sai2grp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA        0x130b0
+                       MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK        0x17088
+                       MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC        0x17088
+                       MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA     0x120b0
+               >;
+       };
+
+       pinctrl_tsc: tscgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO01__GPIO1_IO01        0x000b0
+                       MX6UL_PAD_GPIO1_IO02__GPIO1_IO02        0x000b0
+                       MX6UL_PAD_GPIO1_IO03__GPIO1_IO03        0x000b0
+                       MX6UL_PAD_GPIO1_IO04__GPIO1_IO04        0x000b0
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x10059
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
+               >;
+       };
+
+       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
+               >;
+       };
+};
+
+&iomuxc_snvs {
+       pinctrl_reg_usb1: regusb1grp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00     0x17059
+               >;
+       };
+
+       pinctrl_reg_usb2: regusb2grp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03     0x17059
+               >;
+       };
+
+       pinctrl_reg_ext_pwr: reg-ext-pwrgrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER6__GPIO5_IO06     0x17059
+               >;
+       };
+};
diff --git a/src/arm/nxp/imx/imx6ull-engicam-microgea-gtw.dts b/src/arm/nxp/imx/imx6ull-engicam-microgea-gtw.dts
new file mode 100644 (file)
index 0000000..d500f88
--- /dev/null
@@ -0,0 +1,162 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
+ * Copyright (C) 2025 Engicam srl
+ */
+
+/dts-v1/;
+
+#include "imx6ull-engicam-microgea.dtsi"
+
+/ {
+       compatible = "engicam,microgea-imx6ull-gtw",
+                    "engicam,microgea-imx6ull", "fsl,imx6ull";
+       model = "Engicam MicroGEA i.MX6ULL GTW Board";
+
+       reg_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_keys>;
+
+               user-button {
+                       label = "User button";
+                       gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_MISC>;
+                       wakeup-source;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_leds>, <&pinctrl_pwrled>;
+
+               led-0 {
+                       gpios = <&gpio5 7 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+
+               led-1 {
+                       gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-2 {
+                       gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-3 {
+                       gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       usb_hub: usb-hub {
+               compatible = "smsc,usb3503a";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usb_hub>;
+               reset-gpios = <&gpio5 6 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+&usbotg1 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usbotg2 {
+       dr_mode = "host";
+       disable-over-current;
+       status = "okay";
+};
+
+/* MicroSD */
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       vmmc-supply = <&reg_3v3>;
+       bus-width = <4>;
+       non-removable;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_gpio_keys: gpio_keysgrp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_TDI__GPIO1_IO13          0x0b0b0
+               >;
+       };
+
+       pinctrl_leds: ledsgrp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_TCK__GPIO1_IO14          0x130b0
+                       MX6UL_PAD_JTAG_TRST_B__GPIO1_IO15       0x130b0
+                       MX6UL_PAD_JTAG_TDO__GPIO1_IO12          0x130b0
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX   0x1b0b1
+                       MX6UL_PAD_UART2_RTS_B__UART2_DCE_RTS    0x1b0b1
+                       MX6UL_PAD_UART2_CTS_B__UART2_DCE_CTS    0x1b0b1
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x10059
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
+               >;
+       };
+};
+
+&iomuxc_snvs {
+       pinctrl_pwrled: ledsgrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07     0x130b0
+               >;
+       };
+
+       pinctrl_usb_hub: usb_hubgrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER6__GPIO5_IO06     0x17059
+               >;
+       };
+};
diff --git a/src/arm/nxp/imx/imx6ull-engicam-microgea-rmm.dts b/src/arm/nxp/imx/imx6ull-engicam-microgea-rmm.dts
new file mode 100644 (file)
index 0000000..5d1cc8a
--- /dev/null
@@ -0,0 +1,360 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
+ * Copyright (C) 2025 Engicam srl
+ */
+
+/dts-v1/;
+
+#include "imx6ull-engicam-microgea.dtsi"
+
+/ {
+       compatible = "engicam,microgea-imx6ull-rmm",
+                    "engicam,microgea-imx6ull", "fsl,imx6ull";
+       model = "Engicam MicroGEA i.MX6ULL BMM Board";
+
+       backlight {
+               compatible = "pwm-backlight";
+               brightness-levels = <0 100>;
+               num-interpolated-steps = <100>;
+               default-brightness-level = <85>;
+               pwms = <&pwm8 0 100000 0>;
+       };
+
+       buzzer {
+               compatible = "pwm-beeper";
+               pwms = <&pwm4 0 1000000 0>;
+       };
+
+       reg_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       reg_usb1_vbus: regulator-usb1-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_usb1>;
+               regulator-name = "usb1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio5 0 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_usb2_vbus: regulator-usb2-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_usb2>;
+               regulator-name = "usbotg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio5 3 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_ext_pwr: regulator-ext-pwr {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_ext_pwr>;
+               regulator-name = "ext-pwr";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio5 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "imx6ull-microgea-rmm-sgtl5000";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&codec_dai>;
+               simple-audio-card,frame-master = <&codec_dai>;
+               simple-audio-card,widgets =
+                       "Microphone", "Mic Jack",
+                       "Headphone", "Headphone Jack";
+               simple-audio-card,routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "Headphone Jack", "HP_OUT";
+
+               cpu_dai: simple-audio-card,cpu {
+                       sound-dai = <&sai2>;
+               };
+
+               codec_dai: simple-audio-card,codec {
+                       sound-dai = <&codec>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_leds>;
+
+               led-0 {
+                       gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+                       status = "okay";
+               };
+
+               led-1 {
+                       gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+                       status = "okay";
+               };
+       };
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       clock-frequency = <100000>;
+       status = "okay";
+
+       touchscreen: touchscreen@38 {
+               compatible ="edt,edt-ft5306";
+               reg = <0x38>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_touchscreen>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
+               reset-gpios = <&gpio2 14 GPIO_ACTIVE_LOW>;
+               report-rate-hz = <6>;
+               /* settings valid only for Hycon touchscreen */
+               touchscreen-size-x = <1280>;
+               touchscreen-size-y = <800>;
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       clock-frequency = <100000>;
+       status = "okay";
+
+       codec: audio-codec@a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_mclk>;
+               #sound-dai-cells = <0>;
+               clocks = <&clks IMX6UL_CLK_CKO>;
+               assigned-clocks = <&clks IMX6UL_CLK_CKO2_SEL>,
+                                 <&clks IMX6UL_CLK_CKO2_PODF>,
+                                 <&clks IMX6UL_CLK_CKO2>,
+                                 <&clks IMX6UL_CLK_CKO>;
+               assigned-clock-parents = <&clks IMX6UL_CLK_OSC>,
+                                        <&clks IMX6UL_CLK_CKO2_SEL>,
+                                        <&clks IMX6UL_CLK_CKO2_PODF>,
+                                        <&clks IMX6UL_CLK_CKO2>;
+               VDDA-supply = <&reg_3v3>;
+               VDDIO-supply = <&reg_3v3>;
+               VDDD-supply = <&reg_1v8>;
+       };
+};
+
+&pwm4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm4>;
+       status = "okay";
+};
+
+&pwm8 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm8>;
+       status = "okay";
+};
+
+&sai2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai2>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4>;
+       status = "okay";
+};
+
+&usbotg1 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb1_vbus>;
+       disable-over-current;
+       status = "okay";
+};
+
+&usbotg2 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb2_vbus>;
+       disable-over-current;
+       status = "okay";
+};
+
+/* MicroSD */
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       vmmc-supply = <&reg_3v3>;
+       bus-width = <4>;
+       keep-power-in-suspend;
+       non-removable;
+       wakeup-source;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_can: can-grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX      0x1b020
+                       MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX      0x1b020
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_PIXCLK__I2C1_SCL          0x4001b8b0
+                       MX6UL_PAD_CSI_MCLK__I2C1_SDA            0x4001b8b0
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO00__I2C2_SCL          0x4001b8b0
+                       MX6UL_PAD_GPIO1_IO01__I2C2_SDA          0x4001b8b0
+               >;
+       };
+
+       pinctrl_leds: ledsgrp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET2_RX_EN__GPIO2_IO10       0x130b0
+                       MX6UL_PAD_ENET2_TX_DATA0__GPIO2_IO11    0x130b0
+               >;
+       };
+
+       pinctrl_mclk: mclkgrp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_TMS__CCM_CLKO1           0x13009
+               >;
+       };
+
+       pinctrl_pwm4: pwm4grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO05__PWM4_OUT          0x110b0
+               >;
+       };
+
+       pinctrl_pwm8: pwm8grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET1_RX_ER__PWM8_OUT         0x110b0
+               >;
+       };
+
+       pinctrl_sai2: sai2grp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA        0x130b0
+                       MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK        0x17088
+                       MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC        0x17088
+                       MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA     0x120b0
+               >;
+       };
+
+       pinctrl_touchscreen: touchgrp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET2_TX_CLK__GPIO2_IO14      0x17059
+                       MX6UL_PAD_ENET2_RX_DATA0__GPIO2_IO08    0x17059
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1
+               >;
+       };
+
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX   0x0b0b0
+                       MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX   0x0b0b0
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x10059
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
+               >;
+       };
+
+       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
+               >;
+       };
+};
+
+&iomuxc_snvs {
+       pinctrl_reg_usb1: regusb1grp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00     0x17059
+               >;
+       };
+
+       pinctrl_reg_usb2: regusb2grp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03     0x17059
+               >;
+       };
+
+       pinctrl_reg_ext_pwr: reg-ext-pwrgrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER6__GPIO5_IO06     0x17059
+               >;
+       };
+};
diff --git a/src/arm/nxp/imx/imx6ull-engicam-microgea.dtsi b/src/arm/nxp/imx/imx6ull-engicam-microgea.dtsi
new file mode 100644 (file)
index 0000000..43518bf
--- /dev/null
@@ -0,0 +1,95 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
+ * Copyright (C) 2025 Engicam srl
+ */
+
+/dts-v1/;
+
+ #include "imx6ull.dtsi"
+
+/ {
+       compatible = "engicam,microgea-imx6ull", "fsl,imx6ull";
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>;
+       };
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet1>, <&pinctrl_phy_reset>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy0>;
+       local-mac-address = [00 00 00 00 00 00];
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <4000>;
+                       reset-deassert-us = <4000>;
+               };
+       };
+};
+
+/* NAND */
+&gpmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpmi_nand>;
+       nand-ecc-mode = "hw";
+       nand-ecc-strength = <0>;
+       nand-ecc-step-size = <0>;
+       nand-on-flash-bbt;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_enet1: enet1grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN      0x1b0b0
+                       MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
+                       MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN      0x1b0b0
+                       MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4001b009
+                       MX6UL_PAD_GPIO1_IO07__ENET1_MDC         0x1b0b0
+                       MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x1b0b0
+               >;
+       };
+
+       pinctrl_gpmi_nand: gpminandgrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_CLE__RAWNAND_CLE         0xb0b1
+                       MX6UL_PAD_NAND_ALE__RAWNAND_ALE         0xb0b1
+                       MX6UL_PAD_NAND_WP_B__RAWNAND_WP_B       0xb0b1
+                       MX6UL_PAD_NAND_READY_B__RAWNAND_READY_B 0xb000
+                       MX6UL_PAD_NAND_CE0_B__RAWNAND_CE0_B     0xb0b1
+                       MX6UL_PAD_NAND_RE_B__RAWNAND_RE_B       0xb0b1
+                       MX6UL_PAD_NAND_WE_B__RAWNAND_WE_B       0xb0b1
+                       MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00   0xb0b1
+                       MX6UL_PAD_NAND_DATA01__RAWNAND_DATA01   0xb0b1
+                       MX6UL_PAD_NAND_DATA02__RAWNAND_DATA02   0xb0b1
+                       MX6UL_PAD_NAND_DATA03__RAWNAND_DATA03   0xb0b1
+                       MX6UL_PAD_NAND_DATA04__RAWNAND_DATA04   0xb0b1
+                       MX6UL_PAD_NAND_DATA05__RAWNAND_DATA05   0xb0b1
+                       MX6UL_PAD_NAND_DATA06__RAWNAND_DATA06   0xb0b1
+                       MX6UL_PAD_NAND_DATA07__RAWNAND_DATA07   0xb0b1
+               >;
+       };
+};
+
+&iomuxc_snvs {
+       pinctrl_phy_reset: phy-resetgrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09     0x1b0b0
+               >;
+       };
+};
index af4acc311572c19f89e04d58ecbda960a1488a03..f2cd95e992e74c04737184f3a7b217b8b8b95748 100644 (file)
                };
        };
 
-       reg_brcm: regulator-brcm {
-               compatible = "regulator-fixed";
-               enable-active-high;
-               gpio = <&gpio5 10 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_brcm_reg>;
-               regulator-name = "brcm_reg";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               startup-delay-us = <200000>;
-       };
-
-       reg_bt: regulator-bt {
-               compatible = "regulator-fixed";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_bt_reg>;
-               enable-active-high;
-               gpio = <&gpio5 17 GPIO_ACTIVE_HIGH>;
-               regulator-name = "bt_reg";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-always-on;
-       };
-
        reg_peri_3p15v: regulator-peri-3p15v {
                compatible = "regulator-fixed";
                regulator-name = "peri_3p15v_reg";
                regulator-always-on;
        };
 
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_brcm_reg>;
+               post-power-on-delay-ms = <200>;
+               reset-gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
+       };
+
        sound {
                compatible = "simple-audio-card";
                simple-audio-card,name = "imx7-sgtl5000";
        assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
        uart-has-rtscts;
        status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm4345c5";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_bt_reg>;
+               shutdown-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
+               max-speed = <3000000>;
+       };
 };
 
 &uart6 {
 };
 
 &usdhc1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc1>;
        bus-width = <4>;
        keep-power-in-suspend;
        no-1-8-v;
        non-removable;
-       vmmc-supply = <&reg_brcm>;
+       mmc-pwrseq = <&sdio_pwrseq>;
        status = "okay";
+
+       wifi@0 {
+               compatible = "brcm,bcm43455-fmac", "brcm,bcm4329-fmac";
+               reg = <0>;
+       };
 };
 
 &usdhc3 {
index 3c6ef7bfba60986b797bb01b843830d364c96d45..880b9a4f32b0846a773dbf9ad30715c84ac2fda6 100644 (file)
                                 <&pcc3 IMX7ULP_CLK_PCTLC>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&iomuxc1 0 0 20>;
+                       ngpios = <20>;
                };
 
                gpio_ptd: gpio@40af0000 {
                                 <&pcc3 IMX7ULP_CLK_PCTLD>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&iomuxc1 0 32 12>;
+                       ngpios = <12>;
                };
 
                gpio_pte: gpio@40b00000 {
                                 <&pcc3 IMX7ULP_CLK_PCTLE>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&iomuxc1 0 64 16>;
+                       ngpios = <16>;
                };
 
                gpio_ptf: gpio@40b10000 {
                                 <&pcc3 IMX7ULP_CLK_PCTLF>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&iomuxc1 0 96 20>;
+                       ngpios = <20>;
                };
        };
 
index 41f41a786f9dcc05eb896085a670ef762444e02e..6cf405e9b0826047dbe2ead16fe5e4101bedcbdb 100644 (file)
                                compatible = "nxp,lpc3220-pwm";
                                reg = <0x4005c000 0x4>;
                                clocks = <&clk LPC32XX_CLK_PWM1>;
+                               #pwm-cells = <3>;
                                assigned-clocks = <&clk LPC32XX_CLK_PWM1>;
                                assigned-clock-parents = <&clk LPC32XX_CLK_PERIPH>;
                                status = "disabled";
                                compatible = "nxp,lpc3220-pwm";
                                reg = <0x4005c004 0x4>;
                                clocks = <&clk LPC32XX_CLK_PWM2>;
+                               #pwm-cells = <3>;
                                assigned-clocks = <&clk LPC32XX_CLK_PWM2>;
                                assigned-clock-parents = <&clk LPC32XX_CLK_PERIPH>;
                                status = "disabled";
diff --git a/src/arm/nxp/mxs/imx28-amarula-rmm.dts b/src/arm/nxp/mxs/imx28-amarula-rmm.dts
new file mode 100644 (file)
index 0000000..af59211
--- /dev/null
@@ -0,0 +1,300 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
+ */
+
+/dts-v1/;
+
+#include "imx28.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       compatible = "amarula,imx28-rmm", "fsl,imx28";
+       model = "Amarula i.MX28 rmm";
+
+       memory@40000000 {
+               reg = <0x40000000 0x08000000>;
+               device_type = "memory";
+       };
+
+       backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm 4 5000000 0>;
+               brightness-levels = <0 255>;
+               num-interpolated-steps = <255>;
+               default-brightness-level = <255>;
+               power-supply = <&reg_5v>;
+       };
+
+       beeper {
+               compatible = "pwm-beeper";
+               pwms = <&pwm 7 100000 0>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&leds_pins>;
+
+               led-0 {
+                       gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+
+               led-1 {
+                       gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+
+               led-2 {
+                       gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+       };
+
+       reg_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_5v: regulator-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       reg_fec_3v3: regulator-fec-3v3 {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&fec_3v3_enable_pin>;
+               regulator-name = "fec-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&gpio3 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               startup-delay-us = <300000>;
+               vin-supply = <&reg_5v>;
+       };
+
+       reg_usb0_vbus: regulator-usb0-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb0_vbus_enable_pin>;
+               regulator-name = "usb0_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio2 5 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       reg_usb1_vbus: regulator-usb1-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb1_vbus_enable_pin>;
+               regulator-name = "usb1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio2 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+};
+
+&auart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&auart0_2pins_a>;
+       status = "okay";
+};
+
+&auart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&auart1_pins_a>;
+       status = "okay";
+};
+
+&can0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&can0_pins_a>;
+       status = "okay";
+};
+
+&duart {
+       pinctrl-names = "default";
+       pinctrl-0 = <&duart_pins_b>;
+       status = "okay";
+};
+
+&duart_pins_b {
+       fsl,voltage = <MXS_VOLTAGE_LOW>;
+};
+
+&gpmi {
+       #size-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+
+       touchscreen: touchscreen@38 {
+               compatible = "edt,edt-ft5306";
+               reg = <0x38>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&edt_ft5x06_pins &edt_ft5x06_wake_pin>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <19 IRQ_TYPE_EDGE_RISING>;
+               reset-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+               wake-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&lradc {
+       status = "okay";
+};
+
+&mac0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mac0_pins_a>;
+       phy-mode = "rmii";
+       phy-supply = <&reg_fec_3v3>;
+       phy-handle = <&ethphy>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       max-speed = <100>;
+                       reset-gpios = <&gpio3 28 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <4000>;
+                       reset-deassert-us = <4000>;
+               };
+       };
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&hog_pins_a>;
+
+       edt_ft5x06_pins: edt-ft5x06@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_GPMI_RDY1__GPIO_0_21 /* Reset */
+                       MX28_PAD_GPMI_CE3N__GPIO_0_19 /* Interrupt */
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_ENABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       edt_ft5x06_wake_pin: edt-ft5x06-wake@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <MX28_PAD_GPMI_CE2N__GPIO_0_18>;
+               fsl,drive-strength = <MXS_DRIVE_16mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       fec_3v3_enable_pin: fec-3v3-enable@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <MX28_PAD_SPDIF__GPIO_3_27>;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       hog_pins_a: hog@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_SSP2_SS1__GPIO_2_20  /* External power */
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       leds_pins: leds@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_SSP0_DATA7__GPIO_2_7
+                       MX28_PAD_PWM0__GPIO_3_16
+                       MX28_PAD_PWM1__GPIO_3_17
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       usb0_vbus_enable_pin: usb0-vbus-enable@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <MX28_PAD_SSP0_DATA5__GPIO_2_5>;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+
+       usb1_vbus_enable_pin: usb1-vbus-enable@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <MX28_PAD_SSP0_DATA6__GPIO_2_6>;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+       };
+};
+
+&pwm {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm4_pins_a &pwm7_pins_a>;
+       status = "okay";
+};
+
+/* microSD */
+&ssp0 {
+       compatible = "fsl,imx28-mmc";
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_sck_cfg>;
+       broken-cd;
+       bus-width = <4>;
+       status = "okay";
+};
+
+&usb0 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb0_vbus>;
+       status = "okay";
+};
+
+&usb1 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb1_vbus>;
+       status = "okay";
+};
+
+&usbphy0 {
+       status = "okay";
+};
+
+&usbphy1 {
+       status = "okay";
+};
index bbea8b77386f1153247d1e191dcaa874a7f7969f..ece46d0e7c7fcd7d36e1a3beb96d36c6c4d594da 100644 (file)
                                        fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
+                               pwm7_pins_a: pwm7@0 {
+                                       reg = <0>;
+                                       fsl,pinmux-ids = <
+                                               MX28_PAD_SAIF1_SDATA0__PWM_7
+                                       >;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
+                               };
+
                                lcdif_24bit_pins_a: lcdif-24bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
index 5a19da9313ae6c205debc920878f08435228118d..86c360868e4bf278426ade729ae79451b3f600b3 100644 (file)
@@ -17,6 +17,7 @@
        panel: panel {
                compatible = "edt,et057090dhu";
                backlight = <&bl>;
+               power-supply = <&reg_3v3>;
 
                port {
                        panel_in: endpoint {
 };
 
 &iomuxc {
-       vf610-colibri {
-               pinctrl_can_int: can_int {
-                       fsl,pins = <
-                               VF610_PAD_PTB21__GPIO_43        0x22ed
-                       >;
-               };
+       pinctrl_can_int: can_intgrp {
+               fsl,pins = <
+                       VF610_PAD_PTB21__GPIO_43        0x22ed
+               >;
        };
 };
index cc1e069c44e626cd309304a85c7b94225b178039..98f9ee1b00306ac632681ff89194f350733a9795 100644 (file)
 };
 
 &iomuxc {
-       vf610-colibri {
-               pinctrl_flexcan0: can0grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB14__CAN0_RX        0x31F1
-                               VF610_PAD_PTB15__CAN0_TX        0x31F2
-                       >;
-               };
-
-               pinctrl_flexcan1: can1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB16__CAN1_RX        0x31F1
-                               VF610_PAD_PTB17__CAN1_TX        0x31F2
-                       >;
-               };
-
-               pinctrl_gpio_ext: gpio_ext {
-                       fsl,pins = <
-                               VF610_PAD_PTD10__GPIO_89        0x22ed /* EXT_IO_0 */
-                               VF610_PAD_PTD9__GPIO_88         0x22ed /* EXT_IO_1 */
-                               VF610_PAD_PTD26__GPIO_68        0x22ed /* EXT_IO_2 */
-                       >;
-               };
-
-               pinctrl_dcu0_1: dcu0grp_1 {
-                       fsl,pins = <
-                               VF610_PAD_PTE0__DCU0_HSYNC      0x1902
-                               VF610_PAD_PTE1__DCU0_VSYNC      0x1902
-                               VF610_PAD_PTE2__DCU0_PCLK       0x1902
-                               VF610_PAD_PTE4__DCU0_DE         0x1902
-                               VF610_PAD_PTE5__DCU0_R0         0x1902
-                               VF610_PAD_PTE6__DCU0_R1         0x1902
-                               VF610_PAD_PTE7__DCU0_R2         0x1902
-                               VF610_PAD_PTE8__DCU0_R3         0x1902
-                               VF610_PAD_PTE9__DCU0_R4         0x1902
-                               VF610_PAD_PTE10__DCU0_R5        0x1902
-                               VF610_PAD_PTE11__DCU0_R6        0x1902
-                               VF610_PAD_PTE12__DCU0_R7        0x1902
-                               VF610_PAD_PTE13__DCU0_G0        0x1902
-                               VF610_PAD_PTE14__DCU0_G1        0x1902
-                               VF610_PAD_PTE15__DCU0_G2        0x1902
-                               VF610_PAD_PTE16__DCU0_G3        0x1902
-                               VF610_PAD_PTE17__DCU0_G4        0x1902
-                               VF610_PAD_PTE18__DCU0_G5        0x1902
-                               VF610_PAD_PTE19__DCU0_G6        0x1902
-                               VF610_PAD_PTE20__DCU0_G7        0x1902
-                               VF610_PAD_PTE21__DCU0_B0        0x1902
-                               VF610_PAD_PTE22__DCU0_B1        0x1902
-                               VF610_PAD_PTE23__DCU0_B2        0x1902
-                               VF610_PAD_PTE24__DCU0_B3        0x1902
-                               VF610_PAD_PTE25__DCU0_B4        0x1902
-                               VF610_PAD_PTE26__DCU0_B5        0x1902
-                               VF610_PAD_PTE27__DCU0_B6        0x1902
-                               VF610_PAD_PTE28__DCU0_B7        0x1902
-                       >;
-               };
-
-               pinctrl_dspi1: dspi1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTD5__DSPI1_CS0               0x33e2
-                               VF610_PAD_PTD6__DSPI1_SIN               0x33e1
-                               VF610_PAD_PTD7__DSPI1_SOUT              0x33e2
-                               VF610_PAD_PTD8__DSPI1_SCK               0x33e2
-                       >;
-               };
-
-               pinctrl_esdhc1: esdhc1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTA24__ESDHC1_CLK     0x31ef
-                               VF610_PAD_PTA25__ESDHC1_CMD     0x31ef
-                               VF610_PAD_PTA26__ESDHC1_DAT0    0x31ef
-                               VF610_PAD_PTA27__ESDHC1_DAT1    0x31ef
-                               VF610_PAD_PTA28__ESDHC1_DATA2   0x31ef
-                               VF610_PAD_PTA29__ESDHC1_DAT3    0x31ef
-                               VF610_PAD_PTB20__GPIO_42        0x219d
-                       >;
-               };
-
-               pinctrl_fec1: fec1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTA6__RMII_CLKOUT             0x30d2
-                               VF610_PAD_PTC9__ENET_RMII1_MDC          0x30d2
-                               VF610_PAD_PTC10__ENET_RMII1_MDIO        0x30d3
-                               VF610_PAD_PTC11__ENET_RMII1_CRS         0x30d1
-                               VF610_PAD_PTC12__ENET_RMII1_RXD1        0x30d1
-                               VF610_PAD_PTC13__ENET_RMII1_RXD0        0x30d1
-                               VF610_PAD_PTC14__ENET_RMII1_RXER        0x30d1
-                               VF610_PAD_PTC15__ENET_RMII1_TXD1        0x30d2
-                               VF610_PAD_PTC16__ENET_RMII1_TXD0        0x30d2
-                               VF610_PAD_PTC17__ENET_RMII1_TXEN        0x30d2
-                       >;
-               };
-
-               pinctrl_gpio_bl_on: gpio_bl_on {
-                       fsl,pins = <
-                               VF610_PAD_PTC0__GPIO_45         0x22ef
-                       >;
-               };
-
-               pinctrl_i2c0: i2c0grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB14__I2C0_SCL               0x37ff
-                               VF610_PAD_PTB15__I2C0_SDA               0x37ff
-                       >;
-               };
-
-               pinctrl_i2c0_gpio: i2c0gpiogrp {
-                       fsl,pins = <
-                               VF610_PAD_PTB14__GPIO_36                0x37ff
-                               VF610_PAD_PTB15__GPIO_37                0x37ff
-                       >;
-               };
-
-               pinctrl_nfc: nfcgrp {
-                       fsl,pins = <
-                               VF610_PAD_PTD23__NF_IO7         0x28df
-                               VF610_PAD_PTD22__NF_IO6         0x28df
-                               VF610_PAD_PTD21__NF_IO5         0x28df
-                               VF610_PAD_PTD20__NF_IO4         0x28df
-                               VF610_PAD_PTD19__NF_IO3         0x28df
-                               VF610_PAD_PTD18__NF_IO2         0x28df
-                               VF610_PAD_PTD17__NF_IO1         0x28df
-                               VF610_PAD_PTD16__NF_IO0         0x28df
-                               VF610_PAD_PTB24__NF_WE_B        0x28c2
-                               VF610_PAD_PTB25__NF_CE0_B       0x28c2
-                               VF610_PAD_PTB27__NF_RE_B        0x28c2
-                               VF610_PAD_PTC26__NF_RB_B        0x283d
-                               VF610_PAD_PTC27__NF_ALE         0x28c2
-                               VF610_PAD_PTC28__NF_CLE         0x28c2
-                       >;
-               };
-
-               pinctrl_pwm0: pwm0grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB0__FTM0_CH0                0x1182
-                               VF610_PAD_PTB1__FTM0_CH1                0x1182
-                       >;
-               };
-
-               pinctrl_pwm1: pwm1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB8__FTM1_CH0                0x1182
-                               VF610_PAD_PTB9__FTM1_CH1                0x1182
-                       >;
-               };
-
-               pinctrl_uart0: uart0grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB10__UART0_TX               0x21a2
-                               VF610_PAD_PTB11__UART0_RX               0x21a1
-                               VF610_PAD_PTB12__UART0_RTS              0x21a2
-                               VF610_PAD_PTB13__UART0_CTS              0x21a1
-                       >;
-               };
-
-               pinctrl_uart1: uart1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB4__UART1_TX                0x21a2
-                               VF610_PAD_PTB5__UART1_RX                0x21a1
-                       >;
-               };
-
-               pinctrl_uart2: uart2grp {
-                       fsl,pins = <
-                               VF610_PAD_PTD0__UART2_TX                0x21a2
-                               VF610_PAD_PTD1__UART2_RX                0x21a1
-                               VF610_PAD_PTD2__UART2_RTS               0x21a2
-                               VF610_PAD_PTD3__UART2_CTS               0x21a1
-                       >;
-               };
-
-               pinctrl_usbh1_reg: gpio_usb_vbus {
-                       fsl,pins = <
-                               VF610_PAD_PTD4__GPIO_83                 0x22ed
-                       >;
-               };
+       pinctrl_flexcan0: can0grp {
+               fsl,pins = <
+                       VF610_PAD_PTB14__CAN0_RX        0x31F1
+                       VF610_PAD_PTB15__CAN0_TX        0x31F2
+               >;
+       };
+
+       pinctrl_flexcan1: can1grp {
+               fsl,pins = <
+                       VF610_PAD_PTB16__CAN1_RX        0x31F1
+                       VF610_PAD_PTB17__CAN1_TX        0x31F2
+               >;
+       };
+
+       pinctrl_gpio_ext: gpio_extgrp {
+               fsl,pins = <
+                       VF610_PAD_PTD10__GPIO_89        0x22ed /* EXT_IO_0 */
+                       VF610_PAD_PTD9__GPIO_88         0x22ed /* EXT_IO_1 */
+                       VF610_PAD_PTD26__GPIO_68        0x22ed /* EXT_IO_2 */
+               >;
+       };
+
+       pinctrl_dcu0_1: dcu01grp {
+               fsl,pins = <
+                       VF610_PAD_PTE0__DCU0_HSYNC      0x1902
+                       VF610_PAD_PTE1__DCU0_VSYNC      0x1902
+                       VF610_PAD_PTE2__DCU0_PCLK       0x1902
+                       VF610_PAD_PTE4__DCU0_DE         0x1902
+                       VF610_PAD_PTE5__DCU0_R0         0x1902
+                       VF610_PAD_PTE6__DCU0_R1         0x1902
+                       VF610_PAD_PTE7__DCU0_R2         0x1902
+                       VF610_PAD_PTE8__DCU0_R3         0x1902
+                       VF610_PAD_PTE9__DCU0_R4         0x1902
+                       VF610_PAD_PTE10__DCU0_R5        0x1902
+                       VF610_PAD_PTE11__DCU0_R6        0x1902
+                       VF610_PAD_PTE12__DCU0_R7        0x1902
+                       VF610_PAD_PTE13__DCU0_G0        0x1902
+                       VF610_PAD_PTE14__DCU0_G1        0x1902
+                       VF610_PAD_PTE15__DCU0_G2        0x1902
+                       VF610_PAD_PTE16__DCU0_G3        0x1902
+                       VF610_PAD_PTE17__DCU0_G4        0x1902
+                       VF610_PAD_PTE18__DCU0_G5        0x1902
+                       VF610_PAD_PTE19__DCU0_G6        0x1902
+                       VF610_PAD_PTE20__DCU0_G7        0x1902
+                       VF610_PAD_PTE21__DCU0_B0        0x1902
+                       VF610_PAD_PTE22__DCU0_B1        0x1902
+                       VF610_PAD_PTE23__DCU0_B2        0x1902
+                       VF610_PAD_PTE24__DCU0_B3        0x1902
+                       VF610_PAD_PTE25__DCU0_B4        0x1902
+                       VF610_PAD_PTE26__DCU0_B5        0x1902
+                       VF610_PAD_PTE27__DCU0_B6        0x1902
+                       VF610_PAD_PTE28__DCU0_B7        0x1902
+               >;
+       };
+
+       pinctrl_dspi1: dspi1grp {
+               fsl,pins = <
+                       VF610_PAD_PTD5__DSPI1_CS0               0x33e2
+                       VF610_PAD_PTD6__DSPI1_SIN               0x33e1
+                       VF610_PAD_PTD7__DSPI1_SOUT              0x33e2
+                       VF610_PAD_PTD8__DSPI1_SCK               0x33e2
+               >;
+       };
+
+       pinctrl_esdhc1: esdhc1grp {
+               fsl,pins = <
+                       VF610_PAD_PTA24__ESDHC1_CLK     0x31ef
+                       VF610_PAD_PTA25__ESDHC1_CMD     0x31ef
+                       VF610_PAD_PTA26__ESDHC1_DAT0    0x31ef
+                       VF610_PAD_PTA27__ESDHC1_DAT1    0x31ef
+                       VF610_PAD_PTA28__ESDHC1_DATA2   0x31ef
+                       VF610_PAD_PTA29__ESDHC1_DAT3    0x31ef
+                       VF610_PAD_PTB20__GPIO_42        0x219d
+               >;
+       };
+
+       pinctrl_fec1: fec1grp {
+               fsl,pins = <
+                       VF610_PAD_PTA6__RMII_CLKOUT             0x30d2
+                       VF610_PAD_PTC9__ENET_RMII1_MDC          0x30d2
+                       VF610_PAD_PTC10__ENET_RMII1_MDIO        0x30d3
+                       VF610_PAD_PTC11__ENET_RMII1_CRS         0x30d1
+                       VF610_PAD_PTC12__ENET_RMII1_RXD1        0x30d1
+                       VF610_PAD_PTC13__ENET_RMII1_RXD0        0x30d1
+                       VF610_PAD_PTC14__ENET_RMII1_RXER        0x30d1
+                       VF610_PAD_PTC15__ENET_RMII1_TXD1        0x30d2
+                       VF610_PAD_PTC16__ENET_RMII1_TXD0        0x30d2
+                       VF610_PAD_PTC17__ENET_RMII1_TXEN        0x30d2
+               >;
+       };
+
+       pinctrl_gpio_bl_on: gpio_bl_ongrp {
+               fsl,pins = <
+                       VF610_PAD_PTC0__GPIO_45         0x22ef
+               >;
+       };
+
+       pinctrl_i2c0: i2c0grp {
+               fsl,pins = <
+                       VF610_PAD_PTB14__I2C0_SCL               0x37ff
+                       VF610_PAD_PTB15__I2C0_SDA               0x37ff
+               >;
+       };
+
+       pinctrl_i2c0_gpio: i2c0gpiogrp {
+               fsl,pins = <
+                       VF610_PAD_PTB14__GPIO_36                0x37ff
+                       VF610_PAD_PTB15__GPIO_37                0x37ff
+               >;
+       };
+
+       pinctrl_nfc: nfcgrp {
+               fsl,pins = <
+                       VF610_PAD_PTD23__NF_IO7         0x28df
+                       VF610_PAD_PTD22__NF_IO6         0x28df
+                       VF610_PAD_PTD21__NF_IO5         0x28df
+                       VF610_PAD_PTD20__NF_IO4         0x28df
+                       VF610_PAD_PTD19__NF_IO3         0x28df
+                       VF610_PAD_PTD18__NF_IO2         0x28df
+                       VF610_PAD_PTD17__NF_IO1         0x28df
+                       VF610_PAD_PTD16__NF_IO0         0x28df
+                       VF610_PAD_PTB24__NF_WE_B        0x28c2
+                       VF610_PAD_PTB25__NF_CE0_B       0x28c2
+                       VF610_PAD_PTB27__NF_RE_B        0x28c2
+                       VF610_PAD_PTC26__NF_RB_B        0x283d
+                       VF610_PAD_PTC27__NF_ALE         0x28c2
+                       VF610_PAD_PTC28__NF_CLE         0x28c2
+               >;
+       };
+
+       pinctrl_pwm0: pwm0grp {
+               fsl,pins = <
+                       VF610_PAD_PTB0__FTM0_CH0                0x1182
+                       VF610_PAD_PTB1__FTM0_CH1                0x1182
+               >;
+       };
+
+       pinctrl_pwm1: pwm1grp {
+               fsl,pins = <
+                       VF610_PAD_PTB8__FTM1_CH0                0x1182
+                       VF610_PAD_PTB9__FTM1_CH1                0x1182
+               >;
+       };
+
+       pinctrl_uart0: uart0grp {
+               fsl,pins = <
+                       VF610_PAD_PTB10__UART0_TX               0x21a2
+                       VF610_PAD_PTB11__UART0_RX               0x21a1
+                       VF610_PAD_PTB12__UART0_RTS              0x21a2
+                       VF610_PAD_PTB13__UART0_CTS              0x21a1
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       VF610_PAD_PTB4__UART1_TX                0x21a2
+                       VF610_PAD_PTB5__UART1_RX                0x21a1
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       VF610_PAD_PTD0__UART2_TX                0x21a2
+                       VF610_PAD_PTD1__UART2_RX                0x21a1
+                       VF610_PAD_PTD2__UART2_RTS               0x21a2
+                       VF610_PAD_PTD3__UART2_CTS               0x21a1
+               >;
+       };
+
+       pinctrl_usbh1_reg: gpio_usb_vbusgrp {
+               fsl,pins = <
+                       VF610_PAD_PTD4__GPIO_83                 0x22ed
+               >;
        };
 };
index 8af7ed56e6539b470e2f4328f6a0f136c938e449..ae3403c766d69c1663b720bf33f8090a66039efd 100644 (file)
 };
 
 &iomuxc {
-       vf610-colibri {
-               pinctrl_touchctrl_idle: touchctrl_idle {
-                       fsl,pins = <
-                               VF610_PAD_PTA18__GPIO_8         0x006d
-                               VF610_PAD_PTA19__GPIO_9         0x006c
-                               >;
-               };
+       pinctrl_touchctrl_idle: touchctrl_idlegrp {
+               fsl,pins = <
+                       VF610_PAD_PTA18__GPIO_8         0x006d
+                       VF610_PAD_PTA19__GPIO_9         0x006c
+                       >;
+       };
 
-               pinctrl_touchctrl_default: touchctrl_default {
-                       fsl,pins = <
-                               VF610_PAD_PTA18__ADC0_SE0       0x0040
-                               VF610_PAD_PTA19__ADC0_SE1       0x0040
-                               VF610_PAD_PTA16__ADC1_SE0       0x0040
-                               VF610_PAD_PTB2__ADC1_SE2        0x0040
-                               >;
-               };
+       pinctrl_touchctrl_default: touchctrl_defaultgrp {
+               fsl,pins = <
+                       VF610_PAD_PTA18__ADC0_SE0       0x0040
+                       VF610_PAD_PTA19__ADC0_SE1       0x0040
+                       VF610_PAD_PTA16__ADC1_SE0       0x0040
+                       VF610_PAD_PTB2__ADC1_SE2        0x0040
+                       >;
+       };
 
-               pinctrl_touchctrl_gpios: touchctrl_gpios {
-                       fsl,pins = <
-                               VF610_PAD_PTA23__GPIO_13        0x22e9
-                               VF610_PAD_PTB23__GPIO_93        0x22e9
-                               VF610_PAD_PTA22__GPIO_12        0x22e9
-                               VF610_PAD_PTA11__GPIO_4         0x22e9
-                               >;
-               };
+       pinctrl_touchctrl_gpios: touchctrl_gpiosgrp {
+               fsl,pins = <
+                       VF610_PAD_PTA23__GPIO_13        0x22e9
+                       VF610_PAD_PTB23__GPIO_93        0x22e9
+                       VF610_PAD_PTA22__GPIO_12        0x22e9
+                       VF610_PAD_PTA11__GPIO_4         0x22e9
+                       >;
        };
 };
index 0c0dd442300a38509abca960a4534f26f0e5f200..71ccdaa6f269a9cd49cd8370f28f81fe333dd0cc 100644 (file)
                        };
                };
 
-               bus@40080000 {
-                       pmu@40089000 {
-                               compatible = "arm,cortex-a5-pmu";
-                               interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-affinity = <&a5_cpu>;
-                               reg = <0x40089000 0x1000>;
-                       };
-               };
+       };
 
+       pmu {
+               compatible = "arm,cortex-a5-pmu";
+               interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&a5_cpu>;
+               interrupt-parent = <&mscm_ir>;
        };
 };
 
index 2492fb99956ce39ec7a763bbbe9c15663fa5024e..e36c854dc297423091f230c5a569303ab1b63001 100644 (file)
                >;
        };
 
-       pinctrl_gpio_spi: pinctrl-gpio-spi {
+       pinctrl_gpio_spi: pinctrl-gpio-spigrp {
                fsl,pins = <
                        VF610_PAD_PTB18__GPIO_40        0x1183
                        VF610_PAD_PTD10__GPIO_89        0x1183
index 703f375d7e240c5722bb14e379a86f09e511df3d..f1e6344b0c6978fbeb39bc9468e5a2dab5601c8f 100644 (file)
 };
 
 &iomuxc {
-       vf610-cosmic {
-               pinctrl_esdhc1: esdhc1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTA24__ESDHC1_CLK     0x31ef
-                               VF610_PAD_PTA25__ESDHC1_CMD     0x31ef
-                               VF610_PAD_PTA26__ESDHC1_DAT0    0x31ef
-                               VF610_PAD_PTA27__ESDHC1_DAT1    0x31ef
-                               VF610_PAD_PTA28__ESDHC1_DATA2   0x31ef
-                               VF610_PAD_PTA29__ESDHC1_DAT3    0x31ef
-                               VF610_PAD_PTB28__GPIO_98        0x219d
-                       >;
-               };
+       pinctrl_esdhc1: esdhc1grp {
+               fsl,pins = <
+                       VF610_PAD_PTA24__ESDHC1_CLK     0x31ef
+                       VF610_PAD_PTA25__ESDHC1_CMD     0x31ef
+                       VF610_PAD_PTA26__ESDHC1_DAT0    0x31ef
+                       VF610_PAD_PTA27__ESDHC1_DAT1    0x31ef
+                       VF610_PAD_PTA28__ESDHC1_DATA2   0x31ef
+                       VF610_PAD_PTA29__ESDHC1_DAT3    0x31ef
+                       VF610_PAD_PTB28__GPIO_98        0x219d
+               >;
+       };
 
-               pinctrl_fec1: fec1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTC9__ENET_RMII1_MDC          0x30d2
-                               VF610_PAD_PTC10__ENET_RMII1_MDIO        0x30d3
-                               VF610_PAD_PTC11__ENET_RMII1_CRS         0x30d1
-                               VF610_PAD_PTC12__ENET_RMII1_RXD1        0x30d1
-                               VF610_PAD_PTC13__ENET_RMII1_RXD0        0x30d1
-                               VF610_PAD_PTC14__ENET_RMII1_RXER        0x30d1
-                               VF610_PAD_PTC15__ENET_RMII1_TXD1        0x30d2
-                               VF610_PAD_PTC16__ENET_RMII1_TXD0        0x30d2
-                               VF610_PAD_PTC17__ENET_RMII1_TXEN        0x30d2
-                       >;
-               };
+       pinctrl_fec1: fec1grp {
+               fsl,pins = <
+                       VF610_PAD_PTC9__ENET_RMII1_MDC          0x30d2
+                       VF610_PAD_PTC10__ENET_RMII1_MDIO        0x30d3
+                       VF610_PAD_PTC11__ENET_RMII1_CRS         0x30d1
+                       VF610_PAD_PTC12__ENET_RMII1_RXD1        0x30d1
+                       VF610_PAD_PTC13__ENET_RMII1_RXD0        0x30d1
+                       VF610_PAD_PTC14__ENET_RMII1_RXER        0x30d1
+                       VF610_PAD_PTC15__ENET_RMII1_TXD1        0x30d2
+                       VF610_PAD_PTC16__ENET_RMII1_TXD0        0x30d2
+                       VF610_PAD_PTC17__ENET_RMII1_TXEN        0x30d2
+               >;
+       };
 
-               pinctrl_uart1: uart1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB4__UART1_TX                0x21a2
-                               VF610_PAD_PTB5__UART1_RX                0x21a1
-                       >;
-               };
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       VF610_PAD_PTB4__UART1_TX                0x21a2
+                       VF610_PAD_PTB5__UART1_RX                0x21a1
+               >;
        };
 };
 
index 876c14ecceb69f99e98f3650447b874c661737e7..e7c2f6d46ab2387cca3497499e852d8dbaf1642c 100644 (file)
 };
 
 &iomuxc {
-       vf610-twr {
-               pinctrl_adc0_ad5: adc0ad5grp {
-                       fsl,pins = <
-                               VF610_PAD_PTC30__ADC0_SE5               0xa1
-                       >;
-               };
+       pinctrl_adc0_ad5: adc0ad5grp {
+               fsl,pins = <
+                       VF610_PAD_PTC30__ADC0_SE5               0xa1
+               >;
+       };
 
-               pinctrl_dspi0: dspi0grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB19__DSPI0_CS0              0x1182
-                               VF610_PAD_PTB20__DSPI0_SIN              0x1181
-                               VF610_PAD_PTB21__DSPI0_SOUT             0x1182
-                               VF610_PAD_PTB22__DSPI0_SCK              0x1182
-                       >;
-               };
+       pinctrl_dspi0: dspi0grp {
+               fsl,pins = <
+                       VF610_PAD_PTB19__DSPI0_CS0              0x1182
+                       VF610_PAD_PTB20__DSPI0_SIN              0x1181
+                       VF610_PAD_PTB21__DSPI0_SOUT             0x1182
+                       VF610_PAD_PTB22__DSPI0_SCK              0x1182
+               >;
+       };
 
-               pinctrl_esdhc1: esdhc1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTA24__ESDHC1_CLK     0x31ef
-                               VF610_PAD_PTA25__ESDHC1_CMD     0x31ef
-                               VF610_PAD_PTA26__ESDHC1_DAT0    0x31ef
-                               VF610_PAD_PTA27__ESDHC1_DAT1    0x31ef
-                               VF610_PAD_PTA28__ESDHC1_DATA2   0x31ef
-                               VF610_PAD_PTA29__ESDHC1_DAT3    0x31ef
-                               VF610_PAD_PTA7__GPIO_134        0x219d
-                       >;
-               };
+       pinctrl_esdhc1: esdhc1grp {
+               fsl,pins = <
+                       VF610_PAD_PTA24__ESDHC1_CLK     0x31ef
+                       VF610_PAD_PTA25__ESDHC1_CMD     0x31ef
+                       VF610_PAD_PTA26__ESDHC1_DAT0    0x31ef
+                       VF610_PAD_PTA27__ESDHC1_DAT1    0x31ef
+                       VF610_PAD_PTA28__ESDHC1_DATA2   0x31ef
+                       VF610_PAD_PTA29__ESDHC1_DAT3    0x31ef
+                       VF610_PAD_PTA7__GPIO_134        0x219d
+               >;
+       };
 
-               pinctrl_fec0: fec0grp {
-                       fsl,pins = <
-                               VF610_PAD_PTA6__RMII_CLKIN              0x30d1
-                               VF610_PAD_PTC0__ENET_RMII0_MDC          0x30d3
-                               VF610_PAD_PTC1__ENET_RMII0_MDIO         0x30d1
-                               VF610_PAD_PTC2__ENET_RMII0_CRS          0x30d1
-                               VF610_PAD_PTC3__ENET_RMII0_RXD1         0x30d1
-                               VF610_PAD_PTC4__ENET_RMII0_RXD0         0x30d1
-                               VF610_PAD_PTC5__ENET_RMII0_RXER         0x30d1
-                               VF610_PAD_PTC6__ENET_RMII0_TXD1         0x30d2
-                               VF610_PAD_PTC7__ENET_RMII0_TXD0         0x30d2
-                               VF610_PAD_PTC8__ENET_RMII0_TXEN         0x30d2
-                       >;
-               };
+       pinctrl_fec0: fec0grp {
+               fsl,pins = <
+                       VF610_PAD_PTA6__RMII_CLKIN              0x30d1
+                       VF610_PAD_PTC0__ENET_RMII0_MDC          0x30d3
+                       VF610_PAD_PTC1__ENET_RMII0_MDIO         0x30d1
+                       VF610_PAD_PTC2__ENET_RMII0_CRS          0x30d1
+                       VF610_PAD_PTC3__ENET_RMII0_RXD1         0x30d1
+                       VF610_PAD_PTC4__ENET_RMII0_RXD0         0x30d1
+                       VF610_PAD_PTC5__ENET_RMII0_RXER         0x30d1
+                       VF610_PAD_PTC6__ENET_RMII0_TXD1         0x30d2
+                       VF610_PAD_PTC7__ENET_RMII0_TXD0         0x30d2
+                       VF610_PAD_PTC8__ENET_RMII0_TXEN         0x30d2
+               >;
+       };
 
-               pinctrl_fec1: fec1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTC9__ENET_RMII1_MDC          0x30d2
-                               VF610_PAD_PTC10__ENET_RMII1_MDIO        0x30d3
-                               VF610_PAD_PTC11__ENET_RMII1_CRS         0x30d1
-                               VF610_PAD_PTC12__ENET_RMII1_RXD1        0x30d1
-                               VF610_PAD_PTC13__ENET_RMII1_RXD0        0x30d1
-                               VF610_PAD_PTC14__ENET_RMII1_RXER        0x30d1
-                               VF610_PAD_PTC15__ENET_RMII1_TXD1        0x30d2
-                               VF610_PAD_PTC16__ENET_RMII1_TXD0        0x30d2
-                               VF610_PAD_PTC17__ENET_RMII1_TXEN        0x30d2
-                       >;
-               };
+       pinctrl_fec1: fec1grp {
+               fsl,pins = <
+                       VF610_PAD_PTC9__ENET_RMII1_MDC          0x30d2
+                       VF610_PAD_PTC10__ENET_RMII1_MDIO        0x30d3
+                       VF610_PAD_PTC11__ENET_RMII1_CRS         0x30d1
+                       VF610_PAD_PTC12__ENET_RMII1_RXD1        0x30d1
+                       VF610_PAD_PTC13__ENET_RMII1_RXD0        0x30d1
+                       VF610_PAD_PTC14__ENET_RMII1_RXER        0x30d1
+                       VF610_PAD_PTC15__ENET_RMII1_TXD1        0x30d2
+                       VF610_PAD_PTC16__ENET_RMII1_TXD0        0x30d2
+                       VF610_PAD_PTC17__ENET_RMII1_TXEN        0x30d2
+               >;
+       };
 
-               pinctrl_i2c0: i2c0grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB14__I2C0_SCL               0x30d3
-                               VF610_PAD_PTB15__I2C0_SDA               0x30d3
-                       >;
-               };
+       pinctrl_i2c0: i2c0grp {
+               fsl,pins = <
+                       VF610_PAD_PTB14__I2C0_SCL               0x30d3
+                       VF610_PAD_PTB15__I2C0_SDA               0x30d3
+               >;
+       };
 
-               pinctrl_nfc: nfcgrp {
-                       fsl,pins = <
-                               VF610_PAD_PTD31__NF_IO15        0x28df
-                               VF610_PAD_PTD30__NF_IO14        0x28df
-                               VF610_PAD_PTD29__NF_IO13        0x28df
-                               VF610_PAD_PTD28__NF_IO12        0x28df
-                               VF610_PAD_PTD27__NF_IO11        0x28df
-                               VF610_PAD_PTD26__NF_IO10        0x28df
-                               VF610_PAD_PTD25__NF_IO9         0x28df
-                               VF610_PAD_PTD24__NF_IO8         0x28df
-                               VF610_PAD_PTD23__NF_IO7         0x28df
-                               VF610_PAD_PTD22__NF_IO6         0x28df
-                               VF610_PAD_PTD21__NF_IO5         0x28df
-                               VF610_PAD_PTD20__NF_IO4         0x28df
-                               VF610_PAD_PTD19__NF_IO3         0x28df
-                               VF610_PAD_PTD18__NF_IO2         0x28df
-                               VF610_PAD_PTD17__NF_IO1         0x28df
-                               VF610_PAD_PTD16__NF_IO0         0x28df
-                               VF610_PAD_PTB24__NF_WE_B        0x28c2
-                               VF610_PAD_PTB25__NF_CE0_B       0x28c2
-                               VF610_PAD_PTB27__NF_RE_B        0x28c2
-                               VF610_PAD_PTC26__NF_RB_B        0x283d
-                               VF610_PAD_PTC27__NF_ALE         0x28c2
-                               VF610_PAD_PTC28__NF_CLE         0x28c2
-                       >;
-               };
+       pinctrl_nfc: nfcgrp {
+               fsl,pins = <
+                       VF610_PAD_PTD31__NF_IO15        0x28df
+                       VF610_PAD_PTD30__NF_IO14        0x28df
+                       VF610_PAD_PTD29__NF_IO13        0x28df
+                       VF610_PAD_PTD28__NF_IO12        0x28df
+                       VF610_PAD_PTD27__NF_IO11        0x28df
+                       VF610_PAD_PTD26__NF_IO10        0x28df
+                       VF610_PAD_PTD25__NF_IO9         0x28df
+                       VF610_PAD_PTD24__NF_IO8         0x28df
+                       VF610_PAD_PTD23__NF_IO7         0x28df
+                       VF610_PAD_PTD22__NF_IO6         0x28df
+                       VF610_PAD_PTD21__NF_IO5         0x28df
+                       VF610_PAD_PTD20__NF_IO4         0x28df
+                       VF610_PAD_PTD19__NF_IO3         0x28df
+                       VF610_PAD_PTD18__NF_IO2         0x28df
+                       VF610_PAD_PTD17__NF_IO1         0x28df
+                       VF610_PAD_PTD16__NF_IO0         0x28df
+                       VF610_PAD_PTB24__NF_WE_B        0x28c2
+                       VF610_PAD_PTB25__NF_CE0_B       0x28c2
+                       VF610_PAD_PTB27__NF_RE_B        0x28c2
+                       VF610_PAD_PTC26__NF_RB_B        0x283d
+                       VF610_PAD_PTC27__NF_ALE         0x28c2
+                       VF610_PAD_PTC28__NF_CLE         0x28c2
+               >;
+       };
 
-               pinctrl_pwm0: pwm0grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB0__FTM0_CH0                0x1582
-                               VF610_PAD_PTB1__FTM0_CH1                0x1582
-                               VF610_PAD_PTB2__FTM0_CH2                0x1582
-                               VF610_PAD_PTB3__FTM0_CH3                0x1582
-                       >;
-               };
+       pinctrl_pwm0: pwm0grp {
+               fsl,pins = <
+                       VF610_PAD_PTB0__FTM0_CH0                0x1582
+                       VF610_PAD_PTB1__FTM0_CH1                0x1582
+                       VF610_PAD_PTB2__FTM0_CH2                0x1582
+                       VF610_PAD_PTB3__FTM0_CH3                0x1582
+               >;
+       };
 
-               pinctrl_sai2: sai2grp {
-                       fsl,pins = <
-                               VF610_PAD_PTA16__SAI2_TX_BCLK           0x02ed
-                               VF610_PAD_PTA18__SAI2_TX_DATA           0x02ee
-                               VF610_PAD_PTA19__SAI2_TX_SYNC           0x02ed
-                               VF610_PAD_PTA21__SAI2_RX_BCLK           0x02ed
-                               VF610_PAD_PTA22__SAI2_RX_DATA           0x02ed
-                               VF610_PAD_PTA23__SAI2_RX_SYNC           0x02ed
-                               VF610_PAD_PTB18__EXT_AUDIO_MCLK         0x02ed
-                       >;
-               };
+       pinctrl_sai2: sai2grp {
+               fsl,pins = <
+                       VF610_PAD_PTA16__SAI2_TX_BCLK           0x02ed
+                       VF610_PAD_PTA18__SAI2_TX_DATA           0x02ee
+                       VF610_PAD_PTA19__SAI2_TX_SYNC           0x02ed
+                       VF610_PAD_PTA21__SAI2_RX_BCLK           0x02ed
+                       VF610_PAD_PTA22__SAI2_RX_DATA           0x02ed
+                       VF610_PAD_PTA23__SAI2_RX_SYNC           0x02ed
+                       VF610_PAD_PTB18__EXT_AUDIO_MCLK         0x02ed
+               >;
+       };
 
-               pinctrl_uart1: uart1grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB4__UART1_TX                0x21a2
-                               VF610_PAD_PTB5__UART1_RX                0x21a1
-                       >;
-               };
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       VF610_PAD_PTB4__UART1_TX                0x21a2
+                       VF610_PAD_PTB5__UART1_RX                0x21a1
+               >;
+       };
 
-               pinctrl_uart2: uart2grp {
-                       fsl,pins = <
-                               VF610_PAD_PTB6__UART2_TX                0x21a2
-                               VF610_PAD_PTB7__UART2_RX                0x21a1
-                       >;
-               };
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       VF610_PAD_PTB6__UART2_TX                0x21a2
+                       VF610_PAD_PTB7__UART2_RX                0x21a1
+               >;
        };
 };
 
index 7e72f860c3c5165d7d18f1f891f08d14f8c482d1..929426c1299cc900aafb036ce8cb79a3bbd59234 100644 (file)
@@ -68,8 +68,8 @@
                pinctrl-0 = <&pinctrl_optical>;
                pinctrl-names = "default";
                i2c-bus = <&i2c0>;
-               los-gpio = <&gpio4 4 GPIO_ACTIVE_HIGH>;
-               tx-disable-gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
+               los-gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>;
+               tx-disable-gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
        };
 
        supply-voltage-monitor {
                >;
        };
 
-       pinctrl_leds_debug: pinctrl-leds-debug {
+       pinctrl_leds_debug: pinctrl-leds-debuggrp {
                fsl,pins = <
                        VF610_PAD_PTD3__GPIO_82                 0x31c2
                        VF610_PAD_PTE3__GPIO_108                0x31c2
index 4f99044837f8d6ad8aebc4acbdd5ed041c9a2385..79ea7cf57a4dc4fc002731726eac7c24a1d8d39e 100644 (file)
         *    I/O14 - OPT1_TX_DIS
         *    I/O15 - OPT2_TX_DIS
         */
-       gpio6: sx1503@20 {
+       gpio6: pinctrl@20 {
                compatible = "semtech,sx1503q";
 
                pinctrl-names = "default";
 };
 
 &iomuxc {
-       pinctr_atzb_rf_233: pinctrl-atzb-rf-233 {
+       pinctr_atzb_rf_233: pinctrl-atzb-rf-233grp {
                fsl,pins = <
                        VF610_PAD_PTB2__GPIO_24         0x31c2
                        VF610_PAD_PTE27__GPIO_132       0x33e2
        };
 
 
-       pinctrl_sx1503_20: pinctrl-sx1503-20 {
+       pinctrl_sx1503_20: pinctrl-sx1503-20grp {
                fsl,pins = <
                        VF610_PAD_PTB1__GPIO_23         0x219d
                >;
                >;
        };
 
-       pinctrl_mdio_mux: pinctrl-mdio-mux {
+       pinctrl_mdio_mux: pinctrl-mdio-muxgrp {
                fsl,pins = <
                        VF610_PAD_PTA18__GPIO_8         0x31c2
                        VF610_PAD_PTA19__GPIO_9         0x31c2
                >;
        };
 
-       pinctrl_fec0_phy_int: pinctrl-fec0-phy-int {
+       pinctrl_fec0_phy_int: pinctrl-fec0-phy-intgrp {
                fsl,pins = <
                        VF610_PAD_PTB28__GPIO_98        0x219d
                >;
index 77492eeea4509bf2bc05ac48a57836076e604cbd..8020a644dd9d1e235cc6578677d5121da26102ef 100644 (file)
        pinctrl-0 = <&pinctrl_i2c2>;
        status = "okay";
 
-       gpio9: io-expander@20 {
+       gpio9: pinctrl@20 {
                compatible = "semtech,sx1503q";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_sx1503_20>;
 
        i2c-mux@70 {
                compatible = "nxp,pca9548";
-               pinctrl-names = "default";
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0x70>;
 
        i2c-mux@71 {
                compatible = "nxp,pca9548";
-               pinctrl-names = "default";
                reg = <0x71>;
                #address-cells = <1>;
                #size-cells = <0>;
                >;
        };
 
-       pinctrl_dspi2: dspi2gpio {
+       pinctrl_dspi2: dspi2gpiogrp {
                fsl,pins = <
                        VF610_PAD_PTD30__GPIO_64                0x33e2
                        VF610_PAD_PTD29__GPIO_65                0x33e1
                >;
        };
 
-       pinctrl_leds_debug: pinctrl-leds-debug {
+       pinctrl_leds_debug: pinctrl-leds-debuggrp {
                fsl,pins = <
                         VF610_PAD_PTB26__GPIO_96               0x31c2
                   >;
        };
 
-       pinctrl_mdio_mux: pinctrl-mdio-mux {
+       pinctrl_mdio_mux: pinctrl-mdio-muxgrp {
                fsl,pins = <
                        VF610_PAD_PTE27__GPIO_132               0x31c2
                        VF610_PAD_PTE28__GPIO_133               0x31c2
                >;
        };
 
-       pinctrl_sx1503_20: pinctrl-sx1503-20 {
+       pinctrl_sx1503_20: pinctrl-sx1503-20grp {
                fsl,pins = <
                        VF610_PAD_PTD31__GPIO_63                0x219d
                        >;
index 2a490464660c08d2d998c280c96e6ddd1245972c..423d185c971f65048a3e4119b68d0e5d50c205ab 100644 (file)
                >;
        };
 
-       pinctrl_gpio_switch0: pinctrl-gpio-switch0 {
+       pinctrl_gpio_switch0: pinctrl-gpio-switch0grp {
                fsl,pins = <
                        VF610_PAD_PTB28__GPIO_98                0x219d
                >;
                >;
        };
 
-       pinctrl_leds_debug: pinctrl-leds-debug {
+       pinctrl_leds_debug: pinctrl-leds-debuggrp {
                fsl,pins = <
                        VF610_PAD_PTD3__GPIO_82                 0x31c2
                >;
index 078d8699e16d70121e9763502759ba250ac02104..d5c7f710c3146348f899f104346afc5fc6aab45b 100644 (file)
                >;
        };
 
-       pinctrl_gpio_phy9: pinctrl-gpio-phy9 {
+       pinctrl_gpio_phy9: pinctrl-gpio-phy9grp {
                fsl,pins = <
                        VF610_PAD_PTB24__GPIO_94                0x219d
                >;
        };
 
-       pinctrl_gpio_switch0: pinctrl-gpio-switch0 {
+       pinctrl_gpio_switch0: pinctrl-gpio-switch0grp {
                fsl,pins = <
                        VF610_PAD_PTB28__GPIO_98                0x219d
                >;
                >;
        };
 
-       pinctrl_leds_debug: pinctrl-leds-debug {
+       pinctrl_leds_debug: pinctrl-leds-debuggrp {
                fsl,pins = <
                        VF610_PAD_PTD3__GPIO_82                 0x31c2
                >;
index 22c8f44390a96d3b2c3abd9905ec229323c9529f..344cc2b4d0ad5ec5349176060ed773a100917cc8 100644 (file)
                >;
        };
 
-       pinctrl_gpio_switch0: pinctrl-gpio-switch0 {
+       pinctrl_gpio_switch0: pinctrl-gpio-switch0grp {
                fsl,pins = <
                        VF610_PAD_PTB28__GPIO_98                0x219d
                >;
                >;
        };
 
-       pinctrl_leds_debug: pinctrl-leds-debug {
+       pinctrl_leds_debug: pinctrl-leds-debuggrp {
                fsl,pins = <
                        VF610_PAD_PTD3__GPIO_82                 0x31c2
                >;
index 2c2db47af441655949646bde752c596ee3c2710f..86d32f54c250f3c05bf7512a4e3b115c87d96ad9 100644 (file)
 };
 
 &iomuxc {
-       vf610-colibri {
-               pinctrl_uart2: uart2grp {
-                       fsl,pins = <
-                               VF610_PAD_PTD0__UART2_TX                0x21a2
-                               VF610_PAD_PTD1__UART2_RX                0x21a1
-                               VF610_PAD_PTD2__UART2_RTS               0x21a2
-                               VF610_PAD_PTD3__UART2_CTS               0x21a1
-                       >;
-               };
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       VF610_PAD_PTD0__UART2_TX                0x21a2
+                       VF610_PAD_PTD1__UART2_RX                0x21a1
+                       VF610_PAD_PTD2__UART2_RTS               0x21a2
+                       VF610_PAD_PTD3__UART2_CTS               0x21a1
+               >;
        };
 };
index f7474c11aabd010fdef8158b9fa60b5a8eb79212..454b484368cb7c19b856c915e9962042ec68a342 100644 (file)
 };
 
 &iomuxc {
-       vf610-cosmic {
-               pinctrl_uart3: uart3grp {
-                       fsl,pins = <
-                               VF610_PAD_PTA20__UART3_TX               0x21a2
-                               VF610_PAD_PTA21__UART3_RX               0x21a1
-                       >;
-               };
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       VF610_PAD_PTA20__UART3_TX               0x21a2
+                       VF610_PAD_PTA21__UART3_RX               0x21a1
+               >;
        };
 };
index 597f20be82f1ee044e14bfaf3bd05cff37a8ad39..124003c0be26a0cc3b3036b30411f50363117887 100644 (file)
                                interrupt-controller;
                                #interrupt-cells = <2>;
                                gpio-ranges = <&iomuxc 0 0 32>;
+                               ngpios = <32>;
                        };
 
                        gpio1: gpio@4004a000 {
                                interrupt-controller;
                                #interrupt-cells = <2>;
                                gpio-ranges = <&iomuxc 0 32 32>;
+                               ngpios = <32>;
                        };
 
                        gpio2: gpio@4004b000 {
                                interrupt-controller;
                                #interrupt-cells = <2>;
                                gpio-ranges = <&iomuxc 0 64 32>;
+                               ngpios = <32>;
                        };
 
                        gpio3: gpio@4004c000 {
                                interrupt-controller;
                                #interrupt-cells = <2>;
                                gpio-ranges = <&iomuxc 0 96 32>;
+                               ngpios = <32>;
                        };
 
                        gpio4: gpio@4004d000 {
                                interrupt-controller;
                                #interrupt-cells = <2>;
                                gpio-ranges = <&iomuxc 0 128 7>;
+                               ngpios = <7>;
                        };
 
                        anatop: anatop@40050000 {
 
                        ftm: ftm@400b8000 {
                                compatible = "fsl,ftm-timer";
-                               reg = <0x400b8000 0x1000 0x400b9000 0x1000>;
+                               reg = <0x400b8000 0x1000>, <0x400b9000 0x1000>;
                                interrupts = <44 IRQ_TYPE_LEVEL_HIGH>;
                                clock-names = "ftm-evt", "ftm-src",
                                        "ftm-evt-counter-en", "ftm-src-counter-en";
index 4babd0bbe5d638b228e05cdfe6b068b4ea16335f..203f0b69b353aedff812f5fc54e6f495fab68682 100644 (file)
@@ -18,7 +18,7 @@
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
-               interrupts = <GIC_PPI 14 0x304>;
+               interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
 
                cpu@0 {
                        compatible = "qcom,krait";
@@ -96,7 +96,7 @@
 
        cpu-pmu {
                compatible = "qcom,krait-pmu";
-               interrupts = <GIC_PPI 10 0x304>;
+               interrupts = <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
                qcom,no-pc-write;
        };
 
                timer@200a000 {
                        compatible = "qcom,kpss-wdt-msm8960", "qcom,kpss-timer",
                                     "qcom,msm-timer";
-                       interrupts = <GIC_PPI 1 0x301>,
-                                    <GIC_PPI 2 0x301>,
-                                    <GIC_PPI 3 0x301>;
+                       interrupts = <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>,
+                                    <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>,
+                                    <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
                        reg = <0x0200a000 0x100>;
                        clock-frequency = <27000000>;
                        clocks = <&sleep_clk>;
index 261044fdfee866449e9d9d62cef5aea10d88e874..b3127f0383cf1eba2addc567fc5c0081e9931845 100644 (file)
@@ -12,6 +12,7 @@
        chassis-type = "handset";
 
        aliases {
+               mmc0 = &sdhc_1;
                serial0 = &blsp1_uart1;
                serial1 = &blsp2_uart4;
        };
        pinctrl-0 = <&sdc2_on>;
        pinctrl-1 = <&sdc2_off>;
 
-       bcrmf@1 {
+       wifi@1 {
                compatible = "brcm,bcm4339-fmac", "brcm,bcm4329-fmac";
                reg = <1>;
 
index 9f2ab5c122d0b89e0ce343bec4d47ce238ade4f4..472a45408add20ccb685c4f3255e1b895e722ab1 100644 (file)
@@ -5,6 +5,22 @@
        model = "Sony Xperia Z1 Compact";
        compatible = "sony,xperia-amami", "qcom,msm8974";
        chassis-type = "handset";
+
+       gpio-keys {
+               key-camera-snapshot {
+                       label = "camera_snapshot";
+                       gpios = <&pm8941_gpios 3 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <1>;
+                       linux,code = <KEY_CAMERA>;
+               };
+
+               key-camera-focus {
+                       label = "camera_focus";
+                       gpios = <&pm8941_gpios 4 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <1>;
+                       linux,code = <KEY_CAMERA_FOCUS>;
+               };
+       };
 };
 
 &smbb {
index 9028f17e5c4a76e3d381eec0356591ab245b4569..c3d69641fc1da971dc34885e66c6cb05bc727ddd 100644 (file)
@@ -5,4 +5,20 @@
        model = "Sony Xperia Z1";
        compatible = "sony,xperia-honami", "qcom,msm8974";
        chassis-type = "handset";
+
+       gpio-keys {
+               key-camera-snapshot {
+                       label = "camera_snapshot";
+                       gpios = <&pm8941_gpios 3 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <1>;
+                       linux,code = <KEY_CAMERA>;
+               };
+
+               key-camera-focus {
+                       label = "camera_focus";
+                       gpios = <&pm8941_gpios 4 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <1>;
+                       linux,code = <KEY_CAMERA_FOCUS>;
+               };
+       };
 };
diff --git a/src/arm/qcom/qcom-msm8974-sony-xperia-rhine-togari.dts b/src/arm/qcom/qcom-msm8974-sony-xperia-rhine-togari.dts
new file mode 100644 (file)
index 0000000..f60f730
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "qcom-msm8974-sony-xperia-rhine.dtsi"
+
+/* Togari uses a different touchscreen compared to other rhine devices */
+/delete-node/ &touchscreen;
+
+/ {
+       model = "Sony Xperia Z Ultra";
+       compatible = "sony,xperia-togari", "qcom,msm8974";
+       chassis-type = "handset";
+};
+
+&pm8941_l23 {
+       regulator-min-microvolt = <2600000>;
+       regulator-max-microvolt = <2600000>;
+};
index d34659ebac22e65a511994ef201fe04f12089781..d7322fc6a09559fdbed1684388ac46024cfe63f3 100644 (file)
@@ -8,6 +8,8 @@
 
 / {
        aliases {
+               mmc0 = &sdhc_1;
+               mmc1 = &sdhc_2;
                serial0 = &blsp1_uart2;
        };
 
                        linux,code = <KEY_VOLUMEDOWN>;
                };
 
-               key-camera-snapshot {
-                       label = "camera_snapshot";
-                       gpios = <&pm8941_gpios 3 GPIO_ACTIVE_LOW>;
-                       linux,input-type = <1>;
-                       linux,code = <KEY_CAMERA>;
-               };
-
-               key-camera-focus {
-                       label = "camera_focus";
-                       gpios = <&pm8941_gpios 4 GPIO_ACTIVE_LOW>;
-                       linux,input-type = <1>;
-                       linux,code = <KEY_CAMERA_FOCUS>;
-               };
-
                key-volume-up {
                        label = "volume_up";
                        gpios = <&pm8941_gpios 5 GPIO_ACTIVE_LOW>;
@@ -98,7 +86,7 @@
        status = "okay";
        clock-frequency = <355000>;
 
-       synaptics@2c {
+       touchscreen: synaptics@2c {
                compatible = "syna,rmi4-i2c";
                reg = <0x2c>;
 
 };
 
 &smbb {
+       usb-charge-current-limit = <1800000>;
+
        qcom,fast-charge-safe-current = <1500000>;
        qcom,fast-charge-current-limit = <1500000>;
        qcom,dc-current-limit = <1800000>;
index 4c8edadea0ac63db668dbd666fbb8d92e23232b7..88ff6535477bffefe475cc5fe927b3cc5d223084 100644 (file)
@@ -13,6 +13,7 @@
        qcom,board-id = <8 0>;
 
        aliases {
+               mmc0 = &sdhc_1;
                serial0 = &blsp1_uart2;
        };
 
index 2de047393652c7ccc7112d068aec74dc2065dda2..3258b2e274346d5c5d419ba3b3e8c4350c9af0c6 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
 #include <dt-bindings/net/pcs-rzn1-miic.h>
 #include <dt-bindings/pinctrl/rzn1-pinctrl.h>
 
                        debounce-interval = <20>;
                        gpios = <&pca9698 15 GPIO_ACTIVE_LOW>;
                };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-dbg0 {
+                       gpios = <&pca9698 0 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <0>;
+               };
+
+               led-dbg1 {
+                       gpios = <&pca9698 1 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <1>;
+               };
+
+               led-dbg2 {
+                       gpios = <&pca9698 2 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <2>;
+               };
+
+               led-dbg3 {
+                       gpios = <&pca9698 3 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <3>;
+               };
 
+               led-dbg4 {
+                       gpios = <&pca9698 4 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <4>;
+               };
+
+               led-dbg5 {
+                       gpios = <&pca9698 5 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <5>;
+               };
+
+               led-dbg6 {
+                       gpios = <&pca9698 6 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <6>;
+               };
+
+               led-dbg7 {
+                       gpios = <&pca9698 7 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <7>;
+               };
        };
 };
 
        renesas,miic-switch-portin = <MIIC_GMAC2_PORT>;
 };
 
+&ext_rtc_clk {
+       clock-frequency = <32768>;
+};
+
 &gmac2 {
        status = "okay";
        phy-mode = "gmii";
index 80ad1fdc77a068ef343aeee8d7abeab565ef8e30..13a60656b0447084812fb2821b25f101e12ad8be 100644 (file)
@@ -73,8 +73,8 @@
                                     <GIC_SPI 67 IRQ_TYPE_EDGE_RISING>,
                                     <GIC_SPI 68 IRQ_TYPE_EDGE_RISING>;
                        interrupt-names = "alarm", "timer", "pps";
-                       clocks = <&sysctrl R9A06G032_HCLK_RTC>;
-                       clock-names = "hclk";
+                       clocks = <&sysctrl R9A06G032_HCLK_RTC>, <&ext_rtc_clk>;
+                       clock-names = "hclk", "xtal";
                        power-domains = <&sysctrl>;
                        status = "disabled";
                };
index 21f824b0919163f0060637ac123ae94992fc0cc6..decbf2726ec430db913b0f84942d11ad37e887a4 100644 (file)
        phy-mode = "rmii";
        phy-handle = <&phy0>;
        assigned-clocks = <&cru SCLK_MAC_SRC>;
-       assigned-clock-rates= <50000000>;
+       assigned-clock-rates = <50000000>;
        pinctrl-names = "default";
        pinctrl-0 = <&rmii_pins>;
        status = "okay";
index c13829d32c3253e7a09684e01c9e8876453c66f7..8a92700349b4e41d59439eb27a34bca15aa76aa7 100644 (file)
 &i2s0 {
        /delete-property/ pinctrl-0;
        rockchip,trcm-sync-rx-only;
-       pinctrl-0 =  <&i2s0m0_sclk_rx>,
-                    <&i2s0m0_lrck_rx>,
-                    <&i2s0m0_sdi0>;
+       pinctrl-0 = <&i2s0m0_sclk_rx>,
+                   <&i2s0m0_lrck_rx>,
+                   <&i2s0m0_sdi0>;
        pinctrl-names = "default";
        status = "okay";
 };
index 2de877d4ccc5c8029035e76195977d2e1e7d0553..68236c7297d7cf36a553067b930283e9eee1ede5 100644 (file)
@@ -56,7 +56,7 @@
                enable-active-high;
        };
 
-       i2c_max77836: i2c-gpio-0 {
+       i2c_max77836: i2c-8 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpd0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpd0 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
index 88fb3e68ff029197b3eaeb18a69f63b174da617f..36d2171c1ce86a5b912b6e5b7fac7cd214a658e7 100644 (file)
@@ -58,7 +58,7 @@
                reset-gpios = <&gpe0 4 GPIO_ACTIVE_LOW>;
        };
 
-       i2c_max77836: i2c-gpio-0 {
+       i2c_max77836: i2c-8 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpd0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpd0 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
index 0d8495792a70215631a2c1de0e8517b0396ee560..df229fb8a16bebb3dbae026d18a98a4e2ca50875 100644 (file)
                reset-gpios = <&gpl1 2 GPIO_ACTIVE_LOW>;
        };
 
-       i2c_max17042_fuel: i2c-gpio-0 {
+       i2c_max17042_fuel: i2c-9 {
                compatible = "i2c-gpio";
                #address-cells = <1>;
                #size-cells = <0>;
                };
        };
 
-       i2c_s5k5baf: i2c-gpio-1 {
+       i2c_s5k5baf: i2c-10 {
                compatible = "i2c-gpio";
                #address-cells = <1>;
                #size-cells = <0>;
                };
        };
 
-       i2c-gpio-2 {
+       i2c-11 {
                compatible = "i2c-gpio";
                #address-cells = <1>;
                #size-cells = <0>;
index 70e3091062f940b3fee58aa8a5aaa4a0dbbe1cc7..12b7f252b24da213c2682d8d3f55eac92af73d2b 100644 (file)
                color = <LED_COLOR_ID_WHITE>;
        };
 
-       i2c_max77693: i2c-gpio-1 {
+       i2c_max77693: i2c-9 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpm2 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpm2 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_max77693_fuel: i2c-gpio-2 {
+       i2c_max77693_fuel: i2c-10 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpy0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpy0 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_magnetometer: i2c-gpio-3 {
+       i2c_magnetometer: i2c-11 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpy2 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpy2 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_lightsensor: i2c-gpio-4 {
+       i2c_lightsensor: i2c-12 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpl0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpl0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                /* WiFi model uses CM3323, 3G/LTE use CM36653 */
        };
 
-       i2c_bl: i2c-gpio-5 {
+       i2c_bl: i2c-13 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpm4 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpm4 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
index 54e1a57ae886b4c02ce3e9fdce96012b5f57c3ab..3248be990059b0b60ff7ef12c4544022d5c488bc 100644 (file)
@@ -53,7 +53,7 @@
                enable-active-high;
        };
 
-       i2c_ak8975: i2c-gpio-0 {
+       i2c_ak8975: i2c-13 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpy2 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpy2 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
@@ -68,7 +68,7 @@
                };
        };
 
-       i2c_cm36651: i2c-gpio-2 {
+       i2c_cm36651: i2c-14 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpf0 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpf0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
index 3d5aace668dc5a84f6be42ad87d9a3b244c21b00..05ddddb565ee365049445a4f745e468ec8cc3fe5 100644 (file)
                };
        };
 
-       i2c_max77693: i2c-gpio-1 {
+       i2c_max77693: i2c-9 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpm2 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpm2 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_max77693_fuel: i2c-gpio-3 {
+       i2c_max77693_fuel: i2c-10 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpf1 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpf1 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c-gpio-4 {
+       i2c-11 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpl0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpl0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c-mhl {
+       i2c-12 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpf0 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpf0 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
index 28a6058027335e6af91e55bda8292e83a87a33aa..8d52aa13b862f18cb8db5a535bb270cfd65aa0dd 100644 (file)
                constant-charge-voltage-max-microvolt = <4200000>;
        };
 
-       i2c-gpio-1 {
+       i2c-9 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpy2 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpy2 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c-gpio-2 {
+       i2c-10 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpy0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpy0 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c-gpio-3 {
+       i2c-11 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpm4 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpm4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c-gpio-4 {
+       i2c-12 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpm2 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpm2 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
index 0f5c6cd0f3a11478b6ecefdd0ab6fe15b8c8faa1..e9ec2cc718e04dd9e3261c69d6bc81a5adb7bdd5 100644 (file)
@@ -62,7 +62,7 @@
                regulator-max-microvolt = <3700000>;
        };
 
-       i2c_pmic: i2c-pmic {
+       i2c_pmic: i2c-3 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpj4 0 GPIO_ACTIVE_HIGH>;
                scl-gpios = <&gpj4 3 GPIO_ACTIVE_HIGH>;
index 153514e80c9a14ab1fdc69fb11fc09b8a6c333b4..0a1a35f4f7cc49950469bfbe8f1b2d01c42686f1 100644 (file)
                power-off-delay-us = <500>;
        };
 
-       i2c_sound: i2c-gpio-0 {
+       i2c_sound: i2c-3 {
                compatible = "i2c-gpio";
                sda-gpios = <&mp05 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&mp05 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_accel: i2c-gpio-1 {
+       i2c_accel: i2c-4 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpj3 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpj3 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_pmic: i2c-gpio-2 {
+       i2c_pmic: i2c-5 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpj4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpj4 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_musb: i2c-gpio-3 {
+       i2c_musb: i2c-6 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpj3 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpj3 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_fuel: i2c-gpio-4 {
+       i2c_fuel: i2c-7 {
                compatible = "i2c-gpio";
                sda-gpios = <&mp05 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&mp05 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_touchkey: i2c-gpio-5 {
+       i2c_touchkey: i2c-8 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpj3 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpj3 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_prox: i2c-gpio-6 {
+       i2c_prox: i2c-9 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpg2 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpg0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                };
        };
 
-       i2c_magnetometer: i2c-gpio-7 {
+       i2c_magnetometer: i2c-10 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpj0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpj0 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
index 8792944123815ea42c9cdd47feb2490b5081eb08..5863a1300cc1dba05b006b78b80f471517bd4f5d 100644 (file)
@@ -51,7 +51,7 @@
                };
        };
 
-       i2c_fmradio: i2c-gpio-8 {
+       i2c_fmradio: i2c-11 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpd1 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                scl-gpios = <&gpd1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
index d32f42dd1bf56efc9d24d3ca7f1e41219472ae34..079581f4dfec3e832a2c4875eec13fb73cbf9123 100644 (file)
@@ -74,7 +74,7 @@
                enable-active-high;
        };
 
-       i2c_pmic: i2c-pmic {
+       i2c_pmic: i2c-3 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpj4 0 GPIO_ACTIVE_HIGH>;
                scl-gpios = <&gpj4 3 GPIO_ACTIVE_HIGH>;
index 089bd7db55c739d6332f02d8a1863d11aa647b5b..417a064db11eee9c85f40c5b842222f55bcc4fd9 100644 (file)
                        };
                };
 
-               gmac0: eth@e2000000 {
+               gmac0: ethernet@e2000000 {
                        phy-mode = "gmii";
                        status = "okay";
                };
index ba827d60bf075367862eab0b21471e72a0f1b558..1498996be14e09bd2ddc204d224bb20d826dea00 100644 (file)
                        status = "disabled";
                };
 
-               gmac1: eth@5c400000 {
+               gmac1: ethernet@5c400000 {
                        compatible = "st,spear600-gmac";
                        reg = <0x5c400000 0x8000>;
                        interrupts = <0 95 0x4>;
                        status = "disabled";
                };
 
-               gmac2: eth@5c500000 {
+               gmac2: ethernet@5c500000 {
                        compatible = "st,spear600-gmac";
                        reg = <0x5c500000 0x8000>;
                        interrupts = <0 96 0x4>;
                        status = "disabled";
                };
 
-               gmac3: eth@5c600000 {
+               gmac3: ethernet@5c600000 {
                        compatible = "st,spear600-gmac";
                        reg = <0x5c600000 0x8000>;
                        interrupts = <0 97 0x4>;
                        status = "disabled";
                };
 
-               gmac4: eth@5c700000 {
+               gmac4: ethernet@5c700000 {
                        compatible = "st,spear600-gmac";
                        reg = <0x5c700000 0x8000>;
                        interrupts = <0 98 0x4>;
index d24146c3c9e8a04d9e66037d7396e4ffe7c45d18..9e7c356b1d9e17ceb2a5b837657be8799c021e12 100644 (file)
                        };
                };
 
-               gmac0: eth@e2000000 {
+               gmac0: ethernet@e2000000 {
                        phy-mode = "rgmii";
                        status = "okay";
                };
index 76749992394d674a1dc796811d9aad9860c5c37b..159e941708ca6a598e222710613e72f4130277d1 100644 (file)
                        status = "disabled";
                };
 
-               gmac0: eth@e2000000 {
+               gmac0: ethernet@e2000000 {
                        compatible = "st,spear600-gmac";
                        reg = <0xe2000000 0x8000>;
                        interrupts = <0 33 0x4>,
index 7d4e6412d5582e43eec8f694ff078530ff395d59..80fae76d46107e33437c493619ac509a04fed13a 100644 (file)
@@ -69,7 +69,7 @@
                        status = "okay";
                };
 
-               gmac: eth@e0800000 {
+               gmac: ethernet@e0800000 {
                        status = "okay";
                };
 
index 459182210825d43ad8598166465d757362862f0b..a3449eb7e59b1b0c93b2fef8625242b2880a51d2 100644 (file)
@@ -88,7 +88,7 @@
                        status = "okay";
                };
 
-               gmac: eth@e0800000 {
+               gmac: ethernet@e0800000 {
                        status = "okay";
                };
 
index 6ac53d993cf315b0381b1a2e23ae5cc663c569b2..984075e60634b77a1fde6f92ede02351e8237bc1 100644 (file)
@@ -84,7 +84,7 @@
                        status = "okay";
                };
 
-               gmac: eth@e0800000 {
+               gmac: ethernet@e0800000 {
                        status = "okay";
                };
 
index f54bb80ba28a6e8005a3b25da5f16bad58a1246b..54e87ac981640f48c440e410563121eeed776a1f 100644 (file)
@@ -46,7 +46,7 @@
                        status = "disabled";
                };
 
-               gmac: eth@e0800000 {
+               gmac: ethernet@e0800000 {
                        compatible = "snps,dwmac-3.40a";
                        reg = <0xe0800000 0x8000>;
                        interrupts = <23 22>;
index 492bcf586361c487208439ed71a93c2bf83d5eb2..ace9495b9b062e9f96437681cc526fed7f9eac5e 100644 (file)
                                snps,axi-config = <&stmmac_axi_config_1>;
                                snps,tso;
                                access-controllers = <&etzpc 48>;
+                               nvmem-cells = <&ethernet_mac1_address>;
+                               nvmem-cell-names = "mac-address";
                                status = "disabled";
 
                                stmmac_axi_config_1: stmmac-axi-config {
index e48838374f0df4e003aee5046e45b49986c1daea..49583137b5972572d1feaa699c0c3a822a1b6f6d 100644 (file)
@@ -93,6 +93,8 @@
                snps,axi-config = <&stmmac_axi_config_2>;
                snps,tso;
                access-controllers = <&etzpc 49>;
+               nvmem-cells = <&ethernet_mac2_address>;
+               nvmem-cell-names = "mac-address";
                status = "disabled";
 
                stmmac_axi_config_2: stmmac-axi-config {
index dc3b09f2f2af21e991cac60dc8b5a09e7fc0d8be..98552fe45d4e088f749275cf35278de7b45b6c86 100644 (file)
@@ -4,11 +4,15 @@
  * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
  */
 
+#include <dt-bindings/regulator/st,stm32mp15-regulator.h>
+
 / {
        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: scmi {
                                        #size-cells = <0>;
 
                                        scmi_reg11: regulator@0 {
-                                               reg = <0>;
+                                               reg = <VOLTD_SCMI_REG11>;
                                                regulator-name = "reg11";
                                                regulator-min-microvolt = <1100000>;
                                                regulator-max-microvolt = <1100000>;
                                        };
 
                                        scmi_reg18: regulator@1 {
-                                               reg = <1>;
+                                               reg = <VOLTD_SCMI_REG18>;
                                                regulator-name = "reg18";
                                                regulator-min-microvolt = <1800000>;
                                                regulator-max-microvolt = <1800000>;
                                        };
 
                                        scmi_usb33: regulator@2 {
-                                               reg = <2>;
+                                               reg = <VOLTD_SCMI_USB33>;
                                                regulator-name = "usb33";
                                                regulator-min-microvolt = <3300000>;
                                                regulator-max-microvolt = <3300000>;
diff --git a/src/arm/st/stm32mp157f-dk2-scmi.dtsi b/src/arm/st/stm32mp157f-dk2-scmi.dtsi
new file mode 100644 (file)
index 0000000..89de85a
--- /dev/null
@@ -0,0 +1,196 @@
+// 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.
+ */
+
+#include "stm32mp15-scmi.dtsi"
+
+/ {
+       reserved-memory {
+               optee@de000000 {
+                       reg = <0xde000000 0x2000000>;
+                       no-map;
+               };
+       };
+
+       arm_wdt: watchdog {
+               compatible = "arm,smc-wdt";
+               arm,smc-id = <0xbc000000>;
+               status = "disabled";
+       };
+
+};
+
+&adc {
+       vdd-supply = <&scmi_vdd>;
+       vdda-supply = <&scmi_vdd>;
+};
+
+&cpu0 {
+       clocks = <&scmi_clk CK_SCMI_MPU>;
+};
+
+&cpu1 {
+       clocks = <&scmi_clk CK_SCMI_MPU>;
+};
+
+&cryp1 {
+       clocks = <&scmi_clk CK_SCMI_CRYP1>;
+       resets = <&scmi_reset RST_SCMI_CRYP1>;
+};
+
+&cs42l51 {
+       VL-supply = <&scmi_v3v3>;
+       VD-supply = <&scmi_v1v8_audio>;
+       VA-supply = <&scmi_v1v8_audio>;
+       VAHP-supply = <&scmi_v1v8_audio>;
+};
+
+&dsi {
+       phy-dsi-supply = <&scmi_reg18>;
+       clocks = <&rcc DSI>, <&scmi_clk CK_SCMI_HSE>, <&rcc DSI_PX>;
+};
+
+&gpioz {
+       clocks = <&scmi_clk CK_SCMI_GPIOZ>;
+};
+
+&hash1 {
+       clocks = <&scmi_clk CK_SCMI_HASH1>;
+       resets = <&scmi_reset RST_SCMI_HASH1>;
+};
+
+&i2c1 {
+       hdmi-transmitter@39 {
+               iovcc-supply = <&scmi_v3v3_hdmi>;
+               cvcc12-supply = <&scmi_v1v2_hdmi>;
+       };
+};
+
+&iwdg2 {
+       clocks = <&rcc IWDG2>, <&scmi_clk CK_SCMI_LSI>;
+       status = "disabled";
+};
+
+&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>;
+};
+
+&optee {
+       interrupt-parent = <&intc>;
+       interrupts = <GIC_PPI 15 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
+};
+
+&pwr_regulators {
+       vdd-supply = <&scmi_vdd>;
+       vdd_3v3_usbfs-supply = <&scmi_vdd_usb>;
+       status = "disabled";
+};
+
+&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>;
+};
+
+&rtc {
+       clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>;
+};
+
+&scmi_reguls {
+       scmi_vddcore: regulator@3 {
+               reg = <VOLTD_SCMI_STPMIC1_BUCK1>;
+               regulator-name = "vddcore";
+       };
+
+       scmi_vdd: regulator@5 {
+               reg = <VOLTD_SCMI_STPMIC1_BUCK3>;
+               regulator-name = "vdd";
+       };
+
+       scmi_v3v3: regulator@6 {
+               reg = <VOLTD_SCMI_STPMIC1_BUCK4>;
+               regulator-name = "v3v3";
+       };
+
+       scmi_v1v8_audio: regulator@7 {
+               reg = <VOLTD_SCMI_STPMIC1_LDO1>;
+               regulator-name = "v1v8_audio";
+       };
+
+       scmi_v3v3_hdmi: regulator@8 {
+               reg = <VOLTD_SCMI_STPMIC1_LDO2>;
+               regulator-name = "v3v3_hdmi";
+       };
+
+       scmi_vdd_usb: regulator@a {
+               reg = <VOLTD_SCMI_STPMIC1_LDO4>;
+               regulator-name = "vdd_usb";
+       };
+
+       scmi_vdda: regulator@b {
+               reg = <VOLTD_SCMI_STPMIC1_LDO5>;
+               regulator-name = "vdda";
+       };
+
+       scmi_v1v2_hdmi: regulator@c {
+               reg = <VOLTD_SCMI_STPMIC1_LDO6>;
+               regulator-name = "v1v2_hdmi";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               regulator-always-on;
+       };
+
+       scmi_vbus_otg: regulator@f {
+               reg = <VOLTD_SCMI_STPMIC1_PWR_SW1>;
+               regulator-name = "vbus_otg";
+        };
+
+        scmi_vbus_sw: regulator@10 {
+               reg = <VOLTD_SCMI_STPMIC1_PWR_SW2>;
+               regulator-name = "vbus_sw";
+        };
+};
+
+&sdmmc1 {
+       vmmc-supply = <&scmi_v3v3>;
+};
+
+&sdmmc3 {
+       vmmc-supply = <&scmi_v3v3>;
+};
+
+&usbh_ehci {
+       hub@1 {
+               vdd-supply = <&scmi_v3v3>;
+       };
+};
+
+&usbphyc_port0 {
+       phy-supply = <&scmi_vdd_usb>;
+};
+
+&usbphyc_port1 {
+       phy-supply = <&scmi_vdd_usb>;
+};
+
+&vrefbuf {
+       vdda-supply = <&scmi_vdd>;
+};
diff --git a/src/arm/st/stm32mp157f-dk2.dts b/src/arm/st/stm32mp157f-dk2.dts
new file mode 100644 (file)
index 0000000..43375c4
--- /dev/null
@@ -0,0 +1,179 @@
+// 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 "stm32mp157.dtsi"
+#include "stm32mp15xf.dtsi"
+#include "stm32mp15-pinctrl.dtsi"
+#include "stm32mp15xxac-pinctrl.dtsi"
+#include "stm32mp15xx-dkx.dtsi"
+#include "stm32mp157f-dk2-scmi.dtsi"
+
+/ {
+       model = "STMicroelectronics STM32MP157F-DK2 Discovery Board";
+       compatible = "st,stm32mp157f-dk2", "st,stm32mp157";
+
+       aliases {
+               ethernet0 = &ethernet0;
+               serial3 = &usart2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       wifi_pwrseq: wifi-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpioh 4 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&arm_wdt {
+       timeout-sec = <32>;
+       status = "okay";
+};
+
+&cryp1 {
+       status = "okay";
+};
+
+&dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "orisetech,otm8009a";
+               reg = <0>;
+               reset-gpios = <&gpioe 4 GPIO_ACTIVE_LOW>;
+               power-supply = <&scmi_v3v3>;
+               status = "okay";
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&dsi_out>;
+                       };
+               };
+       };
+};
+
+&dsi_in {
+       remote-endpoint = <&ltdc_ep1_out>;
+};
+
+&dsi_out {
+       remote-endpoint = <&panel_in>;
+};
+
+&i2c1 {
+       touchscreen@38 {
+               compatible = "focaltech,ft6236";
+               reg = <0x38>;
+               interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
+               interrupt-parent = <&gpiof>;
+               touchscreen-size-x = <480>;
+               touchscreen-size-y = <800>;
+               status = "okay";
+       };
+};
+
+/* I2C4 is managed by OP-TEE */
+&i2c4 {
+       status = "disabled";
+
+       /* i2c4 subnodes, which won't be managed by Linux */
+       typec@28 {
+               status = "disabled";
+               connector {
+                       status = "disabled";
+               };
+       };
+
+       stpmic@33 {
+               status = "disabled";
+       };
+};
+
+&ltdc {
+       status = "okay";
+
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ltdc_ep1_out: endpoint@1 {
+                       reg = <1>;
+                       remote-endpoint = <&dsi_in>;
+               };
+       };
+};
+
+&rtc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&rtc_rsvd_pins_a>;
+
+       rtc_lsco_pins_a: rtc-lsco-0 {
+               pins = "out2_rmp";
+               function = "lsco";
+       };
+};
+
+/* Wifi */
+&sdmmc2 {
+       pinctrl-names = "default", "opendrain", "sleep";
+       pinctrl-0 = <&sdmmc2_b4_pins_a>;
+       pinctrl-1 = <&sdmmc2_b4_od_pins_a>;
+       pinctrl-2 = <&sdmmc2_b4_sleep_pins_a>;
+       non-removable;
+       cap-sdio-irq;
+       st,neg-edge;
+       bus-width = <4>;
+       vmmc-supply = <&scmi_v3v3>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       brcmf: wifi@1 {
+               reg = <1>;
+               compatible = "brcm,bcm4329-fmac";
+               pinctrl-names = "default";
+               pinctrl-0 = <&rtc_lsco_pins_a>;
+       };
+};
+
+/* Bluetooth */
+&usart2 {
+       pinctrl-names = "default", "sleep", "idle";
+       pinctrl-0 = <&usart2_pins_c>;
+       pinctrl-1 = <&usart2_sleep_pins_c>;
+       pinctrl-2 = <&usart2_idle_pins_c>;
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               shutdown-gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>;
+               compatible = "brcm,bcm43438-bt";
+               max-speed = <3000000>;
+               vbat-supply = <&scmi_v3v3>;
+               vddio-supply = <&scmi_v3v3>;
+       };
+};
+
+/* Since I2C4 is disabled, STUSB1600 is also disabled so there is no Type-C support */
+&usbotg_hs {
+       dr_mode = "peripheral";
+       role-switch-default-mode = "peripheral";
+       /*
+        * Forcing dr_mode = "peripheral"/"role-switch-default-mode = "peripheral";
+        * will cause the pull-up on D+/D- to be raised as soon as the OTG is configured at runtime,
+        * regardless of the presence of VBUS. Notice that on self-powered devices like
+        * stm32mp157f-dk2, this isn't compliant with the USB standard. That's why usbotg_hs is kept
+        * disabled here.
+        */
+       status = "disabled";
+};
diff --git a/src/arm/st/stm32mp15xf.dtsi b/src/arm/st/stm32mp15xf.dtsi
new file mode 100644 (file)
index 0000000..ffa55d6
--- /dev/null
@@ -0,0 +1,17 @@
+// 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.
+ */
+
+&etzpc {
+       cryp1: cryp@54001000 {
+               compatible = "st,stm32mp1-cryp";
+               reg = <0x54001000 0x400>;
+               interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&rcc CRYP1>;
+               resets = <&rcc CRYP1_R>;
+               access-controllers = <&etzpc 9>;
+               status = "disabled";
+       };
+};
index a5511b1f0ce306feea5d8657721b078161d01a36..46692d8f566ad6a18c25d6b98dc7fa04e553854e 100644 (file)
        /delete-property/dmas;
        /delete-property/dma-names;
 
-       stusb1600@28 {
+       stusb1600: typec@28 {
                compatible = "st,stusb1600";
                reg = <0x28>;
                interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
                                remote-endpoint = <&cs42l51_tx_endpoint>;
                                dai-format = "i2s";
                                mclk-fs = <256>;
+                               system-clock-direction-out;
                                dai-tdm-slot-num = <2>;
                                dai-tdm-slot-width = <32>;
                        };
index c400b7b70d0d20040bfd47ff0779e40ed1c72bc2..ad1e60a9b6fde8f92cae2283c609b393c4ce3811 100644 (file)
        status = "okay";
        clock-frequency = <400000>;
 
-       tps: tps@24 {
+       tps: pmic@24 {
                reg = <0x24>;
        };
 
index 16b567e3cb4722c45131462a206ea686f73cc556..b4fdcf9c02b500aec6d7ad36e6bb854ff658eadc 100644 (file)
@@ -35,7 +35,7 @@
                "P9_18 [spi0_d1]",
                "P9_17 [spi0_cs0]",
                "[mmc0_cd]",
-               "P8_42A [ecappwm0]",
+               "P9_42A [ecappwm0]",
                "P8_35 [lcd d12]",
                "P8_33 [lcd d13]",
                "P8_31 [lcd d14]",
diff --git a/src/arm/ti/omap/am335x-bonegreen-eco.dts b/src/arm/ti/omap/am335x-bonegreen-eco.dts
new file mode 100644 (file)
index 0000000..d21118c
--- /dev/null
@@ -0,0 +1,169 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2025 Bootlin
+ */
+/dts-v1/;
+
+#include "am33xx.dtsi"
+#include "am335x-bone-common.dtsi"
+#include "am335x-bonegreen-common.dtsi"
+#include <dt-bindings/net/ti-dp83867.h>
+
+/ {
+       model = "Seeed Studio BeagleBone Green Eco";
+       compatible = "seeed,am335x-bone-green-eco", "ti,am33xx";
+
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&buck1>;
+               };
+       };
+
+       sys_5v: regulator-sys-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "sys_5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       v3v3: regulator-v3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "v3v3";
+               regulator-always-on;
+       };
+};
+
+&usb0 {
+       interrupts-extended = <&intc 18>;
+       interrupt-names = "mc";
+};
+
+&baseboard_eeprom {
+       vcc-supply = <&v3v3>;
+};
+
+&i2c0 {
+       /delete-node/ pmic@24;
+
+       tps65214: pmic@30 {
+               compatible = "ti,tps65214";
+               reg = <0x30>;
+               buck1-supply = <&sys_5v>;
+               buck2-supply = <&sys_5v>;
+               buck3-supply = <&sys_5v>;
+               ldo1-supply = <&sys_5v>;
+               ldo2-supply = <&sys_5v>;
+
+               interrupt-parent = <&intc>;
+               interrupts = <7>;
+               pinctrl-0 = <&pmic_irq_pins_default>;
+
+               regulators {
+                       buck1: buck1 {
+                               regulator-name = "vdd_mpu";
+                               regulator-min-microvolt = <925000>;
+                               regulator-max-microvolt = <1298500>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck2: buck2 {
+                               regulator-name = "vdd_core";
+                               regulator-min-microvolt = <925000>;
+                               regulator-max-microvolt = <1150000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck3: buck3 {
+                               regulator-name = "vdds_ddr";
+                               regulator-min-microvolt = <1350000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-always-on;
+                       };
+
+                       ldo1_reg: ldo1 {
+                               regulator-name = "vdd_1v8_1";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo2_reg: ldo2 {
+                               regulator-name = "vdd_1v8_2";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+};
+
+&cpsw_port1 {
+       phy-mode = "rgmii-id";
+       phy-handle = <&dp83867_0>;
+       ti,dual-emac-pvid = <1>;
+};
+
+&mac_sw {
+       pinctrl-0 = <&cpsw_b_default>;
+       pinctrl-1 = <&cpsw_b_sleep>;
+};
+
+&davinci_mdio_sw {
+       /delete-node/ ethernet-phy@0;
+
+       dp83867_0: ethernet-phy@0 {
+               reg = <0>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
+               ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_8_B_NIB>;
+               ti,min-output-impedance;
+               ti,dp83867-rxctrl-strap-quirk;
+       };
+};
+
+&am33xx_pinmux {
+       cpsw_b_default: cpsw-b-default-pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_INPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_CLK, PIN_OUTPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_OUTPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_OUTPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_OUTPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_OUTPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_INPUT_PULLDOWN, MUX_MODE2)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLDOWN, MUX_MODE2)
+               >;
+       };
+
+       cpsw_b_sleep: cpsw-b-sleep-pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       pmic_irq_pins_default: pmic-irq-default-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(AM335X_PIN_NNMI, PIN_INPUT_PULLUP | MUX_MODE0)
+               >;
+       };
+};
index 56929059f5af093ee86442cc5c06ae51b332c9e6..d51cdd6e1ab40d3413d4cfdd85720bcf9f1d42c7 100644 (file)
        pinctrl-names = "default";
        pinctrl-0 = <&uart1_pins>;
        status = "okay";
-       rts-gpio = <&gpio0 13 GPIO_ACTIVE_HIGH>;
+       rts-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
        rs485-rts-active-high;
        rs485-rx-during-tx;
        rs485-rts-delay = <1 1>;
        pinctrl-names = "default";
        pinctrl-0 = <&uart2_pins>;
        status = "okay";
-       rts-gpio = <&gpio2 15 GPIO_ACTIVE_HIGH>;
+       rts-gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>;
        rs485-rts-active-high;
        rs485-rts-delay = <1 1>;
        linux,rs485-enabled-at-boot-time;
 &uart3 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart3_pins>;
-       rts-gpio = <&gpio2 17 GPIO_ACTIVE_HIGH>;
+       rts-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;
        rs485-rts-active-high;
        rs485-rx-during-tx;
        rs485-rts-delay = <1 1>;
 &uart4 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart4_pins>;
-       rts-gpio = <&gpio0 9 GPIO_ACTIVE_HIGH>;
+       rts-gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
        rs485-rts-active-high;
        rs485-rx-during-tx;
        rs485-rts-delay = <1 1>;
index ded19e24e66655b43277ea5cd8f654232b547f4b..c9ccb9de21ad7b104522b0f8393a3a572ce90230 100644 (file)
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_pins>;
 
-       rts-gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
+       rts-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
        rs485-rts-active-high;
+       rs485-rx-during-tx;
        rs485-rts-delay = <0 0>;
        linux,rs485-enabled-at-boot-time;
 
index b709703f6c0d42a9a76d3a4fcf84ad9f11247382..711ce4c31bb1f994b98174d22e1676922df2d4a5 100644 (file)
                        clock-names = "fck", "phy-clk", "phy-clk-div";
                        #size-cells = <1>;
                        #address-cells = <1>;
-                       ranges = <0x51000000 0x51000000 0x3000>,
-                                <0x20000000 0x20000000 0x10000000>;
+                       ranges = <0x51000000 0x51000000 0x3000
+                                 0x0        0x20000000 0x10000000>;
                        dma-ranges;
                        /**
                         * To enable PCI endpoint mode, disable the pcie1_rc
                         * node and enable pcie1_ep mode.
                         */
                        pcie1_rc: pcie@51000000 {
-                               reg = <0x51000000 0x2000>,
-                                     <0x51002000 0x14c>,
-                                     <0x20001000 0x2000>;
+                               reg = <0x51000000 0x2000>, <0x51002000 0x14c>, <0x1000 0x2000>;
                                reg-names = "rc_dbics", "ti_conf", "config";
                                interrupts = <0 232 0x4>, <0 233 0x4>;
                                #address-cells = <3>;
                                #size-cells = <2>;
                                device_type = "pci";
-                               ranges = <0x81000000 0 0x00000000 0x20003000 0 0x00010000>,
-                                        <0x82000000 0 0x20013000 0x20013000 0 0x0ffed000>;
+                               ranges = <0x81000000 0 0          0x03000 0 0x00010000
+                                         0x82000000 0 0x20013000 0x13000 0 0xffed000>;
                                bus-range = <0x00 0xff>;
                                #interrupt-cells = <1>;
                                num-lanes = <1>;
                        };
 
                        pcie1_ep: pcie_ep@51000000 {
-                               reg = <0x51000000 0x28>,
-                                     <0x51002000 0x14c>,
-                                     <0x51001000 0x28>,
-                                     <0x20001000 0x10000000>;
+                               reg = <0x51000000 0x28>, <0x51002000 0x14c>, <0x51001000 0x28>, <0x1000 0x10000000>;
                                reg-names = "ep_dbics", "ti_conf", "ep_dbics2", "addr_space";
                                interrupts = <0 232 0x4>;
                                num-lanes = <1>;
                        reset-names = "rstctrl";
                        #size-cells = <1>;
                        #address-cells = <1>;
-                       ranges = <0x51800000 0x51800000 0x3000>,
-                                <0x30000000 0x30000000 0x10000000>;
+                       ranges = <0x51800000 0x51800000 0x3000
+                                 0x0        0x30000000 0x10000000>;
                        dma-ranges;
                        status = "disabled";
                        pcie2_rc: pcie@51800000 {
-                               reg = <0x51800000 0x2000>,
-                                     <0x51802000 0x14c>,
-                                     <0x30001000 0x2000>;
+                               reg = <0x51800000 0x2000>, <0x51802000 0x14c>, <0x1000 0x2000>;
                                reg-names = "rc_dbics", "ti_conf", "config";
                                interrupts = <0 355 0x4>, <0 356 0x4>;
                                #address-cells = <3>;
                                #size-cells = <2>;
                                device_type = "pci";
-                               ranges = <0x81000000 0 0x00000000 0x30003000 0 0x00010000>,
-                                        <0x82000000 0 0x30013000 0x30013000 0 0x0ffed000>;
+                               ranges = <0x81000000 0 0          0x03000 0 0x00010000
+                                         0x82000000 0 0x30013000 0x13000 0 0xffed000>;
                                bus-range = <0x00 0xff>;
                                #interrupt-cells = <1>;
                                num-lanes = <1>;
index 38a2da5e2c5d64477f04e1da9d98cb97be0d95e4..c8c07c2b4acf92e977704437de88550391c8679f 100644 (file)
 
 / {
        model = "Benign BV07 Netbook";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x8000000>;
+       };
 };
 
 &fb {
index d1dd37220d41becece5d24fbb19aa71b01723e35..9b87b12897922b20be83d7df686dda713bb4f098 100644 (file)
        compatible = "via,vt8500";
 
        cpus {
-               #address-cells = <0>;
+               #address-cells = <1>;
                #size-cells = <0>;
 
-               cpu {
+               cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,arm926ej-s";
+                       reg = <0x0>;
                };
        };
 
-       memory {
-               device_type = "memory";
-               reg = <0x0 0x0>;
-       };
-
        aliases {
                serial0 = &uart0;
                serial1 = &uart1;
                        interrupts = <43>;
                };
 
-               fb: fb@d8050800 {
+               fb: lcd-controller@d800e400 {
                        compatible = "via,vt8500-fb";
                        reg = <0xd800e400 0x400>;
                        interrupts = <12>;
index 8ce9e2ef0a81097e7143a5392ee5b42bf8028ec1..d4ff99c700120fbf3401335168ed88b190335005 100644 (file)
 
 / {
        model = "Wondermedia WM8505 Netbook";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x8000000>;
+       };
 };
 
 &fb {
index 2b1819f0c5412648a83cd3eeb495f68d2e4100ef..915adbf6e1e0ba69643eaf51b71222316c06ecf5 100644 (file)
        compatible = "wm,wm8505";
 
        cpus {
-               #address-cells = <0>;
+               #address-cells = <1>;
                #size-cells = <0>;
 
-               cpu {
+               cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,arm926ej-s";
+                       reg = <0x0>;
                };
        };
 
-       memory {
-               device_type = "memory";
-               reg = <0x0 0x0>;
-       };
-
        aliases {
                serial0 = &uart0;
                serial1 = &uart1;
                        interrupts = <48>;
                };
 
-               sdhc@d800a000 {
+               mmc@d800a000 {
                        compatible = "wm,wm8505-sdhc";
                        reg = <0xd800a000 0x400>;
                        interrupts = <20>, <21>;
index 7977b6c1e8ebf215df210dee703e470b9159d329..bfc570e80073d5e6907978dfc5d2413e1ceb2983 100644 (file)
 
 / {
        model = "Wondermedia WM8650-MID Tablet";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x10000000>;
+       };
 };
 
 &fb {
index 042eec78c085d19fc97d7f0f9721399c0716ff74..82eef7504364484dc88e3b439bdde905085b89e1 100644 (file)
        compatible = "wm,wm8650";
 
        cpus {
-               #address-cells = <0>;
+               #address-cells = <1>;
                #size-cells = <0>;
 
-               cpu {
+               cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,arm926ej-s";
+                       reg = <0x0>;
                };
        };
 
-       memory {
-               device_type = "memory";
-               reg = <0x0 0x0>;
-       };
-
        aliases {
                serial0 = &uart0;
                serial1 = &uart1;
                        interrupts = <43>;
                };
 
-               sdhc@d800a000 {
+               mmc@d800a000 {
                        compatible = "wm,wm8505-sdhc";
                        reg = <0xd800a000 0x400>;
                        interrupts = <20>, <21>;
index 136e812bc1e498d48c7fc61154bc66a48888b117..72d633bedff04401c40f4d3772fbcfe45e1c0e31 100644 (file)
 
 / {
        model = "VIA APC8750";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x20000000>;
+       };
 };
 
 &pinctrl {
index 56342aa1d993a43e7ee766f93151c6d456496262..5342b7fe4ef89a50f0a95a8515dc1b70461dd7c4 100644 (file)
        compatible = "wm,wm8750";
 
        cpus {
-               #address-cells = <0>;
+               #address-cells = <1>;
                #size-cells = <0>;
 
-               cpu {
+               cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,arm1176jzf";
+                       reg = <0x0>;
                };
        };
 
-       memory {
-               device_type = "memory";
-               reg = <0x0 0x0>;
-       };
-
        aliases {
                serial0 = &uart0;
                serial1 = &uart1;
                        interrupts = <48>;
                };
 
-               sdhc@d800a000 {
+               mmc@d800a000 {
                        compatible = "wm,wm8505-sdhc";
                        reg = <0xd800a000 0x1000>;
                        interrupts = <20 21>;
index 5d409323b10cb94a5694722de1e31cff5be390ce..eb16991a2cccf35da23c4a0a8ac2ad02665b2109 100644 (file)
                brightness-levels = <0 40 60 80 100 130 190 255>;
                default-brightness-level = <5>;
        };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x20000000>;
+       };
 };
 
 &fb {
index 03e72f28d31b1cfdcfa71ede93b8943971bae4e3..58109aa05f74b67cda82b5ebd0127662e475ded6 100644 (file)
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0x0>;
+                       next-level-cache = <&l2_cache>;
                };
        };
 
-       memory {
-               device_type = "memory";
-               reg = <0x0 0x0>;
-       };
-
        aliases {
                serial0 = &uart0;
                serial1 = &uart1;
                        interrupts = <48>;
                };
 
-               sdhc@d800a000 {
+               mmc@d800a000 {
                        compatible = "wm,wm8505-sdhc";
                        reg = <0xd800a000 0x1000>;
                        interrupts = <20 21>;
                        reg = <0xd8004000 0x100>;
                        interrupts = <10>;
                 };
+
+               l2_cache: cache-controller@d9000000 {
+                       compatible = "arm,pl310-cache";
+                       reg = <0xd9000000 0x1000>;
+                       arm,double-linefill = <1>;
+                       arm,dynamic-clock-gating = <1>;
+                       arm,shared-override;
+                       arm,standby-mode = <1>;
+                       cache-level = <2>;
+                       cache-unified;
+                       prefetch-data = <1>;
+                       prefetch-instr = <1>;
+               };
        };
 };
index 99d2c4f1fc5a9638f551c6d725eeea568943cc68..dae9968a4ff68e8b34d02b237a168a80d184bcb0 100644 (file)
 &i2c0 {
        status = "okay";
 };
+
+&eth {
+       status = "okay";
+};
+
+&gdm1 {
+       status = "okay";
+};
index 536ece69b935add88fb73ca6bd3f1ecd842cad7a..ff6908a76e8eb6cf91343495d1fe531a868e41fb 100644 (file)
 
                        status = "disabled";
                };
+
+               eth: ethernet@1fb50000 {
+                       compatible = "airoha,en7581-eth";
+                       reg = <0 0x1fb50000 0 0x2600>,
+                             <0 0x1fb54000 0 0x2000>,
+                             <0 0x1fb56000 0 0x2000>;
+                       reg-names = "fe", "qdma0", "qdma1";
+
+                       resets = <&scuclk EN7581_FE_RST>,
+                                <&scuclk EN7581_FE_PDMA_RST>,
+                                <&scuclk EN7581_FE_QDMA_RST>,
+                                <&scuclk EN7581_XSI_MAC_RST>,
+                                <&scuclk EN7581_DUAL_HSI0_MAC_RST>,
+                                <&scuclk EN7581_DUAL_HSI1_MAC_RST>,
+                                <&scuclk EN7581_HSI_MAC_RST>,
+                                <&scuclk EN7581_XFP_MAC_RST>;
+                       reset-names = "fe", "pdma", "qdma",
+                                     "xsi-mac", "hsi0-mac", "hsi1-mac",
+                                     "hsi-mac", "xfp-mac";
+
+                       interrupts = <GIC_SPI 37 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 38 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 49 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+
+                       status = "disabled";
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       gdm1: ethernet@1 {
+                               compatible = "airoha,eth-mac";
+                               reg = <1>;
+                               phy-mode = "internal";
+                               status = "disabled";
+
+                               fixed-link {
+                                       speed = <10000>;
+                                       full-duplex;
+                                       pause;
+                               };
+                       };
+               };
        };
 };
index bd366389b2389d6909db64628cbfd53eaa1c0b6c..bb5f9e4f3d4213b5365c06c94dbf175db38eafcc 100644 (file)
                                bias-pull-up;
                        };
 
+                       rgmii0_pins: rgmii0-pins {
+                               pins = "PH0", "PH1", "PH2", "PH3", "PH4",
+                                      "PH5", "PH6", "PH7", "PH9", "PH10",
+                                      "PH14", "PH15", "PH16", "PH17", "PH18";
+                               function = "emac0";
+                               drive-strength = <40>;
+                       };
+
+                       rmii0_pins: rmii0-pins {
+                               pins = "PH0", "PH1", "PH2", "PH3", "PH4",
+                                      "PH5", "PH6", "PH7", "PH9", "PH10";
+                               function = "emac0";
+                               drive-strength = <40>;
+                       };
+
                        uart0_pb_pins: uart0-pb-pins {
                                pins = "PB9", "PB10";
                                function = "uart0";
                        #size-cells = <0>;
                };
 
+               emac0: ethernet@5020000 {
+                       compatible = "allwinner,sun50i-a100-emac",
+                                    "allwinner,sun50i-a64-emac";
+                       reg = <0x5020000 0x10000>;
+                       interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq";
+                       clocks = <&ccu CLK_BUS_EMAC>;
+                       clock-names = "stmmaceth";
+                       resets = <&ccu RST_BUS_EMAC>;
+                       reset-names = "stmmaceth";
+                       syscon = <&syscon>;
+                       status = "disabled";
+
+                       mdio0: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+
                ths: thermal-sensor@5070400 {
                        compatible = "allwinner,sun50i-a100-ths";
                        reg = <0x05070400 0x100>;
index fe77178d3e33e3074d6831f0060730f5f5a9406c..90a50910f07b7c44775991debcc40691602077fd 100644 (file)
        status = "okay";
 };
 
+&emac0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&rmii0_pins>;
+       phy-handle = <&rmii_phy>;
+       phy-mode = "rmii";
+       status = "okay";
+};
+
+&mdio0 {
+       reset-gpios = <&pio 7 12 GPIO_ACTIVE_LOW>; /* PH12 */
+       reset-delay-us = <2000>;
+       reset-post-delay-us = <2000>;
+
+       rmii_phy: ethernet-phy@1 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <1>;
+       };
+};
+
 &mmc0 {
        vmmc-supply = <&reg_dcdc1>;
        cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
index 51cd148f4227b422dde080aa34645c320e60058a..6b6f2296bdff64e641b5e1e1a6c65408db74b9a5 100644 (file)
@@ -7,6 +7,8 @@
 #include <dt-bindings/clock/sun55i-a523-r-ccu.h>
 #include <dt-bindings/reset/sun55i-a523-ccu.h>
 #include <dt-bindings/reset/sun55i-a523-r-ccu.h>
+#include <dt-bindings/power/allwinner,sun55i-a523-ppu.h>
+#include <dt-bindings/power/allwinner,sun55i-a523-pck-600.h>
 
 / {
        interrupt-parent = <&gic>;
                #size-cells = <1>;
                ranges = <0x0 0x0 0x0 0x40000000>;
 
+               gpu: gpu@1800000 {
+                       compatible = "allwinner,sun55i-a523-mali",
+                                    "arm,mali-valhall-jm";
+                       reg = <0x1800000 0x10000>;
+                       interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "job", "mmu", "gpu";
+                       clocks = <&ccu CLK_GPU>, <&ccu CLK_BUS_GPU>;
+                       clock-names = "core", "bus";
+                       power-domains = <&pck600 PD_GPU>;
+                       resets = <&ccu RST_BUS_GPU>;
+                       status = "disabled";
+               };
+
                pio: pinctrl@2000000 {
                        compatible = "allwinner,sun55i-a523-pinctrl";
                        reg = <0x2000000 0x800>;
                        interrupt-controller;
                        #interrupt-cells = <3>;
 
-                       rgmii0_pins: rgmii0-pins {
-                               pins = "PH0", "PH1", "PH2", "PH3", "PH4",
-                                      "PH5", "PH6", "PH7", "PH9", "PH10",
-                                      "PH14", "PH15", "PH16", "PH17", "PH18";
-                               allwinner,pinmux = <5>;
-                               function = "gmac0";
-                               drive-strength = <40>;
-                               bias-disable;
-                       };
-
                        mmc0_pins: mmc0-pins {
                                pins = "PF0" ,"PF1", "PF2", "PF3", "PF4", "PF5";
                                allwinner,pinmux = <2>;
                                bias-pull-up;
                        };
 
+                       rgmii0_pins: rgmii0-pins {
+                               pins = "PH0", "PH1", "PH2", "PH3", "PH4",
+                                      "PH5", "PH6", "PH7", "PH9", "PH10",
+                                      "PH14", "PH15", "PH16", "PH17", "PH18";
+                               allwinner,pinmux = <5>;
+                               function = "gmac0";
+                               drive-strength = <40>;
+                               bias-disable;
+                       };
+
                        uart0_pb_pins: uart0-pb-pins {
                                pins = "PB9", "PB10";
                                allwinner,pinmux = <2>;
                                function = "uart0";
                        };
+
+                       /omit-if-no-ref/
+                       uart1_pins: uart1-pins {
+                               pins = "PG6", "PG7";
+                               function = "uart1";
+                               allwinner,pinmux = <2>;
+                       };
+
+                       /omit-if-no-ref/
+                       uart1_rts_cts_pins: uart1-rts-cts-pins {
+                               pins = "PG8", "PG9";
+                               function = "uart1";
+                               allwinner,pinmux = <2>;
+                       };
                };
 
                ccu: clock-controller@2001000 {
                        #reset-cells = <1>;
                };
 
-               mmc0: mmc@4020000 {
-                       compatible = "allwinner,sun55i-a523-mmc",
-                                    "allwinner,sun20i-d1-mmc";
-                       reg = <0x04020000 0x1000>;
-                       clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
-                       clock-names = "ahb", "mmc";
-                       resets = <&ccu RST_BUS_MMC0>;
-                       reset-names = "ahb";
-                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&mmc0_pins>;
-                       status = "disabled";
-
-                       max-frequency = <150000000>;
-                       cap-sd-highspeed;
-                       cap-mmc-highspeed;
-                       cap-sdio-irq;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-               };
-
-               mmc1: mmc@4021000 {
-                       compatible = "allwinner,sun55i-a523-mmc",
-                                    "allwinner,sun20i-d1-mmc";
-                       reg = <0x04021000 0x1000>;
-                       clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
-                       clock-names = "ahb", "mmc";
-                       resets = <&ccu RST_BUS_MMC1>;
-                       reset-names = "ahb";
-                       interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&mmc1_pins>;
-                       status = "disabled";
-
-                       max-frequency = <150000000>;
-                       cap-sd-highspeed;
-                       cap-mmc-highspeed;
-                       cap-sdio-irq;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-               };
-
-               mmc2: mmc@4022000 {
-                       compatible = "allwinner,sun55i-a523-mmc",
-                                    "allwinner,sun20i-d1-mmc";
-                       reg = <0x04022000 0x1000>;
-                       clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
-                       clock-names = "ahb", "mmc";
-                       resets = <&ccu RST_BUS_MMC2>;
-                       reset-names = "ahb";
-                       interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&mmc2_pins>;
-                       status = "disabled";
-
-                       max-frequency = <150000000>;
-                       cap-sd-highspeed;
-                       cap-mmc-highspeed;
-                       cap-sdio-irq;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-               };
-
                wdt: watchdog@2050000 {
                        compatible = "allwinner,sun55i-a523-wdt";
                        reg = <0x2050000 0x20>;
                        ranges;
                };
 
+               sid: efuse@3006000 {
+                       compatible = "allwinner,sun55i-a523-sid",
+                                    "allwinner,sun50i-a64-sid";
+                       reg = <0x03006000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+               };
+
                gic: interrupt-controller@3400000 {
                        compatible = "arm,gic-v3";
                        #address-cells = <1>;
                        };
                };
 
+               mmc0: mmc@4020000 {
+                       compatible = "allwinner,sun55i-a523-mmc",
+                                    "allwinner,sun20i-d1-mmc";
+                       reg = <0x04020000 0x1000>;
+                       clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
+                       clock-names = "ahb", "mmc";
+                       resets = <&ccu RST_BUS_MMC0>;
+                       reset-names = "ahb";
+                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mmc0_pins>;
+                       status = "disabled";
+
+                       max-frequency = <150000000>;
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       cap-sdio-irq;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               mmc1: mmc@4021000 {
+                       compatible = "allwinner,sun55i-a523-mmc",
+                                    "allwinner,sun20i-d1-mmc";
+                       reg = <0x04021000 0x1000>;
+                       clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
+                       clock-names = "ahb", "mmc";
+                       resets = <&ccu RST_BUS_MMC1>;
+                       reset-names = "ahb";
+                       interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mmc1_pins>;
+                       status = "disabled";
+
+                       max-frequency = <150000000>;
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       cap-sdio-irq;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               mmc2: mmc@4022000 {
+                       compatible = "allwinner,sun55i-a523-mmc",
+                                    "allwinner,sun20i-d1-mmc";
+                       reg = <0x04022000 0x1000>;
+                       clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
+                       clock-names = "ahb", "mmc";
+                       resets = <&ccu RST_BUS_MMC2>;
+                       reset-names = "ahb";
+                       interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mmc2_pins>;
+                       status = "disabled";
+
+                       max-frequency = <150000000>;
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       cap-sdio-irq;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
                usb_otg: usb@4100000 {
                        compatible = "allwinner,sun55i-a523-musb",
                                     "allwinner,sun8i-a33-musb";
                        };
                };
 
+               ppu: power-controller@7001400 {
+                       compatible = "allwinner,sun55i-a523-ppu";
+                       reg = <0x07001400 0x400>;
+                       clocks = <&r_ccu CLK_BUS_R_PPU1>;
+                       resets = <&r_ccu RST_BUS_R_PPU1>;
+                       #power-domain-cells = <1>;
+               };
+
                r_ccu: clock-controller@7010000 {
                        compatible = "allwinner,sun55i-a523-r-ccu";
                        reg = <0x7010000 0x250>;
                        };
                };
 
+               pck600: power-controller@7060000 {
+                       compatible = "allwinner,sun55i-a523-pck-600";
+                       reg = <0x07060000 0x8000>;
+                       clocks = <&r_ccu CLK_BUS_R_PPU0>;
+                       resets = <&r_ccu RST_BUS_R_PPU0>;
+                       #power-domain-cells = <1>;
+               };
+
                r_i2c0: i2c@7081400 {
                        compatible = "allwinner,sun55i-a523-i2c",
                                     "allwinner,sun8i-v536-i2c",
index 8bc0f2c72a247ca3435a02cfc316bcc28b77356d..553ad774ed13d6093951ca95231e20d86437519a 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdc2>;
+       status = "okay";
+};
+
 &mdio0 {
        ext_rgmii_phy: ethernet-phy@1 {
                compatible = "ethernet-phy-ieee802.3-c22";
index 59db103546f655c29bcb0d93f35a62d2a6898c7a..a96927fbdadd5f9612009e4e29df9d187927117c 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdc2>;
+       status = "okay";
+};
+
 &mmc0 {
        vmmc-supply = <&reg_vcc3v3>;
        cd-gpios = <&pio 5 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PF6 */
index 142177c1f737f55b5c0d776d48ddc29cd2fbf04a..b9eeb6753e9e3749a4b480671d0d90114b24ed1f 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdc2>;
+       status = "okay";
+};
+
 &mdio0 {
        ext_rgmii_phy: ethernet-phy@1 {
                compatible = "ethernet-phy-ieee802.3-c22";
diff --git a/src/arm64/allwinner/sun55i-t527-orangepi-4a.dts b/src/arm64/allwinner/sun55i-t527-orangepi-4a.dts
new file mode 100644 (file)
index 0000000..d07bb91
--- /dev/null
@@ -0,0 +1,390 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
+/*
+ * Copyright (C) 2025 Chen-Yu Tsai <wens@csie.org>
+ */
+
+/dts-v1/;
+
+#include "sun55i-a523.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       model = "OrangePi 4A";
+       compatible = "xunlong,orangepi-4a", "allwinner,sun55i-t527";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       ext_osc32k: ext-osc32k-clk {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <32768>;
+               clock-output-names = "ext_osc32k";
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               /* PWM capable pin, but PWM isn't supported yet. */
+               led {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */
+               };
+       };
+
+       wifi_pwrseq: pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&r_pio 1 1 GPIO_ACTIVE_LOW>; /* PM1 */
+               clocks = <&rtc CLK_OSC32K_FANOUT>;
+               clock-names = "ext_clock";
+       };
+
+       reg_otg_vbus: regulator-otg-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "otg-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&reg_vcc5v>;
+               gpio = <&r_pio 0 4 GPIO_ACTIVE_HIGH>;   /* PL4 */
+               enable-active-high;
+       };
+
+       reg_pcie_vcc3v3: regulator-pcie-vcc3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-pcie-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&reg_vcc5v>;
+               gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>;   /* PL8 */
+               enable-active-high;
+       };
+
+       reg_usb_vbus: regulator-usb-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&reg_vcc5v>;
+               gpio = <&r_pio 0 12 GPIO_ACTIVE_HIGH>;  /* PL12 */
+               enable-active-high;
+       };
+
+       reg_vcc5v: regulator-vcc5v {
+               /* board wide 5V supply from USB type-C port */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&gpu {
+       mali-supply = <&reg_dcdc2>;
+       status = "okay";
+};
+
+&mmc0 {
+       vmmc-supply = <&reg_cldo3>;
+       cd-gpios = <&pio 5 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PF6 */
+       bus-width = <4>;
+       status = "okay";
+};
+
+&mmc1 {
+       bus-width = <4>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       non-removable;
+       vmmc-supply = <&reg_dldo1_323>;
+       vqmmc-supply = <&reg_bldo1>;
+       status = "okay";
+
+       brcmf: wifi@1 {
+               compatible = "brcm,bcm4329-fmac";
+               reg = <1>;
+               interrupt-parent = <&r_pio>;
+               interrupts = <1 0 IRQ_TYPE_LEVEL_LOW>; /* PM0 */
+               interrupt-names = "host-wake";
+       };
+};
+
+&mmc2 {
+       bus-width = <8>;
+       cap-mmc-hw-reset;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+       non-removable;
+       vmmc-supply = <&reg_cldo3>;
+       vqmmc-supply = <&reg_cldo1>;
+       status = "okay";
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&pio {
+       vcc-pb-supply = <&reg_cldo3>;   /* via VCC-IO */
+       vcc-pc-supply = <&reg_cldo1>;
+       vcc-pd-supply = <&reg_cldo3>;
+       vcc-pe-supply = <&reg_aldo2>;
+       vcc-pf-supply = <&reg_cldo3>;   /* VCC-IO for 3.3v; VCC-MCSI for 1.8v */
+       vcc-pg-supply = <&reg_bldo1>;
+       vcc-ph-supply = <&reg_cldo3>;   /* via VCC-IO */
+       vcc-pi-supply = <&reg_cldo3>;
+       vcc-pj-supply = <&reg_cldo1>;
+       vcc-pk-supply = <&reg_cldo1>;
+};
+
+&r_i2c0 {
+       status = "okay";
+
+       axp717: pmic@35 {
+               compatible = "x-powers,axp717";
+               reg = <0x35>;
+               interrupt-controller;
+               #interrupt-cells = <1>;
+               interrupts-extended = <&nmi_intc 0 IRQ_TYPE_LEVEL_LOW>;
+
+               vin1-supply = <&reg_vcc5v>;
+               vin2-supply = <&reg_vcc5v>;
+               vin3-supply = <&reg_vcc5v>;
+               vin4-supply = <&reg_vcc5v>;
+               aldoin-supply = <&reg_vcc5v>;
+               bldoin-supply = <&reg_vcc5v>;
+               cldoin-supply = <&reg_vcc5v>;
+
+               regulators {
+                       /* Supplies the "little" cluster (1.4 GHz cores) */
+                       reg_dcdc1: dcdc1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1160000>;
+                               regulator-name = "vdd-cpul";
+                       };
+
+                       reg_dcdc2: dcdc2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <920000>;
+                               regulator-max-microvolt = <920000>;
+                               regulator-name = "vdd-gpu-sys";
+                       };
+
+                       reg_dcdc3: dcdc3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1160000>;
+                               regulator-max-microvolt = <1160000>;
+                               regulator-name = "vcc-dram";
+                       };
+
+                       reg_dcdc4: dcdc4 {
+                               /* feeds 3.3V pin on GPIO header */
+                               regulator-always-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vdd-io";
+                       };
+
+                       aldo1 {
+                               /* not actually connected */
+                               regulator-name = "avdd-csi";
+                       };
+
+                       reg_aldo2: aldo2 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pe";
+                       };
+
+                       reg_aldo3: aldo3 {
+                               /* supplies the I2C pins for this PMIC */
+                               regulator-always-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-pl-usb";
+                       };
+
+                       reg_aldo4: aldo4 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pll-dxco-avcc";
+                       };
+
+                       reg_bldo1: bldo1 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pg-wifi";
+                       };
+
+                       reg_bldo2: bldo2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pm-lpddr";
+                       };
+
+                       bldo3 {
+                               /* not actually connected */
+                               regulator-name = "afvcc-csi";
+                       };
+
+                       bldo4 {
+                               /* not actually connected */
+                               regulator-name = "dvdd-csi";
+                       };
+
+                       reg_cldo1: cldo1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-cvp-pc-lvds-mcsi-pk-efuse-pcie-edp-1v8";
+                       };
+
+                       reg_cldo2: cldo2 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc3v3-csi";
+                       };
+
+                       reg_cldo3: cldo3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-io-mmc-nand-pd-pi-usb";
+                       };
+
+                       reg_cldo4: cldo4 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-3v3-phy1-lcd";
+                       };
+
+                       reg_cpusldo: cpusldo {
+                               /* supplies the management core */
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdd-cpus-usb-0v9";
+                       };
+               };
+       };
+
+       axp323: pmic@36 {
+               compatible = "x-powers,axp323";
+               reg = <0x36>;
+               #interrupt-cells = <1>;
+               interrupt-controller;
+               status = "okay";
+
+               vin1-supply = <&reg_vcc5v>;
+               vin2-supply = <&reg_vcc5v>;
+               vin3-supply = <&reg_vcc5v>;
+
+               regulators {
+                       reg_aldo1_323: aldo1 {
+                               /* less capable and shares load with dldo1 */
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-wifi";
+                       };
+
+                       reg_dldo1_323: dldo1 {
+                               /* more capable and shares load with aldo1 */
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-wifi2";
+                       };
+
+                       /* Supplies the "big" cluster (1.8 GHz cores) */
+                       reg_dcdc1_323: dcdc1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1150000>;
+                               regulator-name = "vdd-cpub";
+                       };
+
+                       /* DCDC2 is polyphased with DCDC1 */
+
+                       /* Some RISC-V management core related voltage */
+                       reg_dcdc3_323: dcdc3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdd-dnr";
+                       };
+               };
+       };
+};
+
+&r_pio {
+/*
+ * Specifying the supply would create a circular dependency.
+ *
+ *     vcc-pl-supply = <&reg_aldo3>;
+ */
+       vcc-pm-supply = <&reg_bldo2>;
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pb_pins>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm4345c5";
+               clocks = <&rtc CLK_OSC32K_FANOUT>;
+               clock-names = "lpo";
+               vbat-supply = <&reg_aldo1_323>;
+               vddio-supply = <&reg_bldo1>;
+               device-wakeup-gpios = <&r_pio 1 3 GPIO_ACTIVE_HIGH>; /* PM3 */
+               host-wakeup-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */
+               shutdown-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */
+       };
+};
+
+&usb_otg {
+       /*
+        * The OTG controller is connected to one of the type-A ports.
+        * There is a regulator, controlled by a GPIO, to provide VBUS power
+        * to the port, and a VBUSDET GPIO, to detect externally provided
+        * power. But without ID or CC pins there is no real way to do a
+        * runtime role detection.
+        */
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usbphy {
+       usb0_vbus-supply = <&reg_otg_vbus>;
+       usb0_vbus_det-gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
+       usb1_vbus-supply = <&reg_usb_vbus>;
+       status = "okay";
+};
index 0def0b0daaf73101362eb13e0db5901c6ade06e1..effd242f6bf709a53659b4de2a2da728052d086f 100644 (file)
                cb_intosc_hs_div2_clk: cb-intosc-hs-div2-clk {
                        #clock-cells = <0>;
                        compatible = "fixed-clock";
+                       clock-frequency = <150000000>;
                };
 
                cb_intosc_ls_clk: cb-intosc-ls-clk {
                        #clock-cells = <0>;
                        compatible = "fixed-clock";
+                       clock-frequency = <300000000>;
                };
 
                f2s_free_clk: f2s-free-clk {
                        #clock-cells = <0>;
                        compatible = "fixed-clock";
+                       status = "disabled";
                };
 
                osc1: osc1 {
 
                rst: rstmgr@ffd11000 {
                        #reset-cells = <1>;
-                       compatible = "altr,stratix10-rst-mgr";
+                       compatible = "altr,stratix10-rst-mgr", "altr,rst-mgr";
                        reg = <0xffd11000 0x1000>;
                };
 
index 34ccf8138f7b63df89f89a5b7f66a31d5d993579..ad52e8a0b9ba42de31e7c2070cd9e8085ccb5572 100644 (file)
@@ -68,7 +68,6 @@
 &gmac1 {
        status = "okay";
        phy-mode = "rgmii";
-       phy-addr = <0xffffffff>;
 };
 
 &gmac2 {
        status = "okay";
 };
 
-&rst {
-       altr,modrst-offset = <0x20>;
-};
-
 &sysmgr {
        reg = <0xffd12000 0x1000>;
        interrupts = <0x0 0x10 0x4>;
-       cpu1-start-addr = <0xffd06230>;
 };
index a8c90245c42a07f5fc929d9aa99eee4d8821c2cf..5f602f1170c001f6cb5dea7bd941f89f09bb1d4e 100644 (file)
@@ -6,6 +6,7 @@
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/amlogic,pinctrl.h>
 / {
        cpus {
                #address-cells = <2>;
                                clock-names = "xtal", "pclk", "baud";
                                status = "disabled";
                        };
+
+                       periphs_pinctrl: pinctrl@4000 {
+                               compatible = "amlogic,pinctrl-s6";
+                               #address-cells = <2>;
+                               #size-cells = <2>;
+                               ranges = <0x0 0x0 0x0 0x4000 0x0 0x340>;
+
+                               gpioz: gpio@c0 {
+                                       reg = <0 0xc0 0 0x20>, <0 0x18 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_Z<<8) 16>;
+                               };
+
+                               gpiox: gpio@100 {
+                                       reg = <0 0x100 0 0x30>, <0 0xc 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_X<<8) 20>;
+                               };
+
+                               gpioh: gpio@140 {
+                                       reg = <0 0x140 0 0x20>, <0 0x2c 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_H<<8) 9>;
+                               };
+
+                               gpiod: gpio@180 {
+                                       reg = <0 0x180 0 0x20>, <0 0x8 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_D<<8) 7>;
+                               };
+
+                               gpiof: gpio@1a0 {
+                                       reg = <0 0x1a0 0 0x20>, <0 0x20 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_F<<8) 5>;
+                               };
+
+                               gpioe: gpio@1c0 {
+                                       reg = <0 0x1c0 0 0x20>, <0 0x48 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_E<<8) 3>;
+                               };
+
+                               gpioc: gpio@200 {
+                                       reg = <0 0x200 0 0x20>, <0 0x24 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_C<<8) 8>;
+                               };
+
+                               gpiob: gpio@240 {
+                                       reg = <0 0x240 0 0x20>, <0 0x0 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_B<<8) 14>;
+                               };
+
+                               gpioa: gpio@280 {
+                                       reg = <0 0x280 0 0x20>, <0 0x40 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_A<<8) 16>;
+                               };
+
+                               test_n: gpio@2c0 {
+                                       reg = <0 0x2c0 0 0x20>;
+                                       reg-names = "gpio";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges =
+                                               <&periphs_pinctrl 0 (AMLOGIC_GPIO_TEST_N<<8) 1>;
+                               };
+
+                               gpiocc: gpio@300 {
+                                       reg = <0 0x300 0 0x20>, <0 0x14 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_CC<<8) 2>;
+                               };
+                       };
                };
        };
 };
index f0c172681bd1f4565792ecb646d5f8d1fcf9fcf7..260918b37b9ae283fb2e0f863997f507e0a7463a 100644 (file)
@@ -6,6 +6,7 @@
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/amlogic,pinctrl.h>
 
 / {
        cpus {
                                clock-names = "xtal", "pclk", "baud";
                                status = "disabled";
                        };
+
+                       periphs_pinctrl: pinctrl@4000 {
+                               compatible = "amlogic,pinctrl-s7";
+                               #address-cells = <2>;
+                               #size-cells = <2>;
+                               ranges = <0x0 0x0 0x0 0x4000 0x0 0x340>;
+
+                               gpioz: gpio@c0 {
+                                       reg = <0 0xc0 0 0x20>, <0 0x18 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_Z<<8) 13>;
+                               };
+
+                               gpiox: gpio@100 {
+                                       reg = <0 0x100 0 0x30>, <0 0xc 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_X<<8) 20>;
+                               };
+
+                               gpioh: gpio@140 {
+                                       reg = <0 0x140 0 0x20>, <0 0x2c 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_H<<8) 12>;
+                               };
+
+                               gpiod: gpio@180 {
+                                       reg = <0 0x180 0 0x20>, <0 0x40 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_D<<8) 12>;
+                               };
+
+                               gpioe: gpio@1c0 {
+                                       reg = <0 0x1c0 0 0x20>, <0 0x48 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_E<<8) 2>;
+                               };
+
+                               gpioc: gpio@200 {
+                                       reg = <0 0x200 0 0x20>, <0 0x24 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_C<<8) 8>;
+                               };
+
+                               gpiob: gpio@240 {
+                                       reg = <0 0x240 0 0x20>, <0 0x0 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_B<<8) 14>;
+                               };
+
+                               test_n: gpio@2c0 {
+                                       reg = <0 0x2c0 0 0x20>;
+                                       reg-names = "gpio";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges =
+                                               <&periphs_pinctrl 0 (AMLOGIC_GPIO_TEST_N<<8) 1>;
+                               };
+
+                               gpiocc: gpio@300 {
+                                       reg = <0 0x300 0 0x20>, <0 0x14 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_CC<<8) 2>;
+                               };
+                       };
                };
        };
 };
index e1099bc1535d174c56283deba6ecbbde7081e972..c4d260d5bb5865dc5635a7065335d870aea75700 100644 (file)
@@ -6,6 +6,7 @@
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/amlogic,pinctrl.h>
 
 / {
        cpus {
                                clock-names = "xtal", "pclk", "baud";
                                status = "disabled";
                        };
+
+                       periphs_pinctrl: pinctrl@4000 {
+                               compatible = "amlogic,pinctrl-s7d",
+                                            "amlogic,pinctrl-s7";
+                               #address-cells = <2>;
+                               #size-cells = <2>;
+                               ranges = <0x0 0x0 0x0 0x4000 0x0 0x340>;
+
+                               gpioz: gpio@c0 {
+                                       reg = <0 0xc0 0 0x20>, <0 0x18 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_Z<<8) 13>;
+                               };
+
+                               gpiox: gpio@100 {
+                                       reg = <0 0x100 0 0x30>, <0 0xc 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_X<<8) 20>;
+                               };
+
+                               gpioh: gpio@140 {
+                                       reg = <0 0x140 0 0x20>, <0 0x2c 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_H<<8) 12>;
+                               };
+
+                               gpiod: gpio@180 {
+                                       reg = <0 0x180 0 0x20>, <0 0x40 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_D<<8) 5>;
+                               };
+
+                               gpioe: gpio@1c0 {
+                                       reg = <0 0x1c0 0 0x20>, <0 0x48 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_E<<8) 2>;
+                               };
+
+                               gpioc: gpio@200 {
+                                       reg = <0 0x200 0 0x20>, <0 0x24 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_C<<8) 8>;
+                               };
+
+                               gpiob: gpio@240 {
+                                       reg = <0 0x240 0 0x20>, <0 0x0 0 0x8>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_B<<8) 14>;
+                               };
+
+                               gpiodv: gpio@280 {
+                                       reg = <0 0x280 0 0x20>, <0 0x8 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_DV<<8) 7>;
+                               };
+
+                               test_n: gpio@2c0 {
+                                       reg = <0 0x2c0 0 0x20>;
+                                       reg-names = "gpio";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges =
+                                               <&periphs_pinctrl 0 (AMLOGIC_GPIO_TEST_N<<8) 1>;
+                               };
+
+                               gpiocc: gpio@300 {
+                                       reg = <0 0x300 0 0x20>, <0 0x14 0 0x4>;
+                                       reg-names = "gpio", "mux";
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_CC<<8) 2>;
+                               };
+                       };
                };
        };
 };
index 124a809010840f31ff5b72dd92d9ceb82a105610..9fd68195be3f2c6df62c33a87f2d85e60c5d60e7 100644 (file)
@@ -39,3 +39,7 @@
        phy-names = "usb2-phy0", "usb2-phy1";
 };
  */
+
+&npu {
+       status = "okay";
+};
index 415248931ab17652ee01d17d30ae22cdf3f0fbb5..82546b73897716d4fe045207b710a76b3859aed2 100644 (file)
 &pwm_ab {
        pinctrl-0 = <&pwm_a_e_pins>, <&pwm_b_x7_pins>;
 };
+
+&npu {
+       status = "okay";
+};
index 6da1316d97c60c8445477375bddb161fc0c6a7f4..b4f88ed6273b8f0db956d163451ea6855c45fe48 100644 (file)
@@ -97,7 +97,7 @@
                clock-names = "ext_clock";
        };
 
-       cvbs-connector {
+       cvbs_connector: cvbs-connector {
                compatible = "composite-video-connector";
 
                port {
index ecaf678b23ddd6f0e1f27532059aa706c29fe046..9d5a481b309f7201e5a82b7a91b8ca265c7ef42a 100644 (file)
        vmmc-supply = <&vddao_3v3>;
        vqmmc-supply = <&vddio_boot>;
 
-       brcmf: brcmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
        };
diff --git a/src/arm64/amlogic/meson-gxm-ugoos-am3.dts b/src/arm64/amlogic/meson-gxm-ugoos-am3.dts
new file mode 100644 (file)
index 0000000..ba871f3
--- /dev/null
@@ -0,0 +1,91 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 J. Neuschäfer <j.ne@posteo.net>
+ *
+ * Debug UART (3.3V, 115200 baud) at the corner of the board:
+ *   (4) (3) (2) [1]
+ *   Vcc RXD TXD GND
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/amlogic,meson-g12a-gpio-intc.h>
+
+#include "meson-gxm.dtsi"
+#include "meson-gx-p23x-q20x.dtsi"
+
+/ {
+       compatible = "ugoos,am3", "amlogic,s912", "amlogic,meson-gxm";
+       model = "Ugoos AM3";
+
+       adc-keys {
+               compatible = "adc-keys";
+               io-channels = <&saradc 0>;
+               io-channel-names = "buttons";
+               keyup-threshold-microvolt = <1710000>;
+
+               button-function {
+                       label = "Update";
+                       linux,code = <KEY_VENDOR>;
+                       press-threshold-microvolt = <10000>;
+               };
+       };
+};
+
+&cvbs_connector {
+       /* Not used on this board */
+       status = "disabled";
+};
+
+&ethmac {
+       pinctrl-0 = <&eth_pins>;
+       pinctrl-names = "default";
+
+       /* Select external PHY by default */
+       phy-handle = <&external_phy>;
+
+       amlogic,tx-delay-ns = <2>;
+
+       /* External PHY is in RGMII */
+       phy-mode = "rgmii";
+
+       status = "okay";
+};
+
+&external_mdio {
+       external_phy: ethernet-phy@0 {
+               /* Realtek RTL8211F (0x001cc916) */
+               reg = <0>;
+
+               reset-assert-us = <10000>;
+               reset-deassert-us = <80000>;
+               reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
+
+               interrupt-parent = <&gpio_intc>;
+               /* MAC_INTR on GPIOZ_15 */
+               interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+&i2c_B {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c_b_pins>;
+
+       rtc: rtc@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+       };
+};
+
+/* WLAN: Atheros 10k (QCA9377) */
+&sd_emmc_a {
+       max-frequency = <200000000>;
+};
+
+/* eMMC */
+&sd_emmc_c {
+       max-frequency = <100000000>;
+};
index 89c3b211b116e96ee0a5ea0c923c3ab824008307..0ad77c98073fe65ddde7736acaece9acd5f3111e 100644 (file)
@@ -16,3 +16,7 @@
 };
 
 /delete-node/ &pmgr_south;
+
+&gpu {
+       compatible = "apple,agx-g13s";
+};
index d2cf81926f284ccf7627701cc82edff31d4d72d6..ffbe823b71bc8d9c0975524aa04efa9bf520a89e 100644 (file)
@@ -62,3 +62,7 @@
                };
        };
 };
+
+&gpu {
+       compatible = "apple,agx-g13c", "apple,agx-g13s";
+};
index e36f422d257d8fe3a62bfa6e0f0e0dc6c34608a4..8fb648836b538bbd9efdccd6cec5d08d868a0d39 100644 (file)
        // On t6002, the die0 GPU power domain needs both AFR power domains
        power-domains = <&ps_afr>, <&ps_afr_die1>;
 };
+
+&gpu {
+       compatible = "apple,agx-g13d", "apple,agx-g13s";
+};
index 87dfc13d74171f62bf3087401918d9d41eaac560..e20234ef213538f851d9da0dbd11b318831668b1 100644 (file)
        #address-cells = <2>;
        #size-cells = <2>;
 
+       aliases {
+               gpu = &gpu;
+       };
+
        cpus {
                #address-cells = <2>;
                #size-cells = <0>;
                #clock-cells = <0>;
                clock-output-names = "nco_ref";
        };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gpu_globals: globals {
+                       status = "disabled";
+               };
+
+               gpu_hw_cal_a: hw-cal-a {
+                       status = "disabled";
+               };
+
+               gpu_hw_cal_b: hw-cal-b {
+                       status = "disabled";
+               };
+
+               uat_handoff: uat-handoff {
+                       status = "disabled";
+               };
+
+               uat_pagetables: uat-pagetables {
+                       status = "disabled";
+               };
+
+               uat_ttbs: uat-ttbs {
+                       status = "disabled";
+               };
+       };
 };
index 110bc6719512e334e04b496fb157cb4368679957..1563b3ce1ff67b51ab576d79246b0bf5668b85bd 100644 (file)
                                        reg = <0x6001 0x1>;
                                };
 
-                               boot_error_count: boot-error-count@6002 {
+                               boot_error_count: boot-error-count@6002,0 {
                                        reg = <0x6002 0x1>;
                                        bits = <0 4>;
                                };
 
-                               panic_count: panic-count@6002 {
+                               panic_count: panic-count@6002,4 {
                                        reg = <0x6002 0x1>;
                                        bits = <4 4>;
                                };
@@ -86,7 +86,7 @@
                                        reg = <0x6003 0x1>;
                                };
 
-                               shutdown_flag: shutdown-flag@600f {
+                               shutdown_flag: shutdown-flag@600f,3 {
                                        reg = <0x600f 0x1>;
                                        bits = <3 1>;
                                };
                #sound-dai-cells = <1>;
        };
 
+       gpu: gpu@406400000 {
+               compatible = "apple,agx-g13s";
+               reg = <0x4 0x6400000 0 0x40000>,
+                       <0x4 0x4000000 0 0x1000000>;
+               reg-names = "asc", "sgx";
+               mboxes = <&agx_mbox>;
+               power-domains = <&ps_gfx>;
+               memory-region = <&uat_ttbs>, <&uat_pagetables>, <&uat_handoff>,
+                               <&gpu_hw_cal_a>, <&gpu_hw_cal_b>, <&gpu_globals>;
+               memory-region-names = "ttbs", "pagetables", "handoff",
+                                     "hw-cal-a", "hw-cal-b", "globals";
+
+               apple,firmware-abi = <0 0 0>;
+       };
+
+       agx_mbox: mbox@406408000 {
+               compatible = "apple,t6000-asc-mailbox", "apple,asc-mailbox-v4";
+               reg = <0x4 0x6408000 0x0 0x4000>;
+               interrupt-parent = <&aic>;
+               interrupts = <AIC_IRQ 0 1059 IRQ_TYPE_LEVEL_HIGH>,
+                       <AIC_IRQ 0 1060 IRQ_TYPE_LEVEL_HIGH>,
+                       <AIC_IRQ 0 1061 IRQ_TYPE_LEVEL_HIGH>,
+                       <AIC_IRQ 0 1062 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "send-empty", "send-not-empty",
+                       "recv-empty", "recv-not-empty";
+               #mbox-cells = <0>;
+       };
+
        pcie0_dart_0: iommu@581008000 {
                compatible = "apple,t6000-dart";
                reg = <0x5 0x81008000 0x0 0x4000>;
index 778a69be18dd81ab49076fb39ca4bc82f551e40f..7dcac51703ff60e0a6ef0929572a70adb65b580f 100644 (file)
@@ -7,6 +7,7 @@
 /dts-v1/;
 
 #include "t8012-jxxx.dtsi"
+#include "t8012-touchbar.dtsi"
 
 / {
        model = "Apple T2 MacBookPro15,2 (j132)";
index 3a204845b85befb093dd470b4280e778c2894b09..589ddc0397995ecf6fc11b135164229ab1ee7cf8 100644 (file)
        #address-cells = <2>;
        #size-cells = <2>;
 
+       aliases {
+               gpu = &gpu;
+       };
+
        cpus {
                #address-cells = <2>;
                #size-cells = <0>;
                clock-output-names = "nco_ref";
        };
 
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gpu_globals: globals {
+                       status = "disabled";
+               };
+
+               gpu_hw_cal_a: hw-cal-a {
+                       status = "disabled";
+               };
+
+               gpu_hw_cal_b: hw-cal-b {
+                       status = "disabled";
+               };
+
+               uat_handoff: uat-handoff {
+                       status = "disabled";
+               };
+
+               uat_pagetables: uat-pagetables {
+                       status = "disabled";
+               };
+
+               uat_ttbs: uat-ttbs {
+                       status = "disabled";
+               };
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                ranges;
                nonposted-mmio;
 
+               gpu: gpu@206400000 {
+                       compatible = "apple,agx-g13g";
+                       reg = <0x2 0x6400000 0 0x40000>,
+                               <0x2 0x4000000 0 0x1000000>;
+                       reg-names = "asc", "sgx";
+                       mboxes = <&agx_mbox>;
+                       power-domains = <&ps_gfx>;
+                       memory-region = <&uat_ttbs>, <&uat_pagetables>, <&uat_handoff>,
+                                       <&gpu_hw_cal_a>, <&gpu_hw_cal_b>, <&gpu_globals>;
+                       memory-region-names = "ttbs", "pagetables", "handoff",
+                                             "hw-cal-a", "hw-cal-b", "globals";
+
+                       apple,firmware-abi = <0 0 0>;
+               };
+
+               agx_mbox: mbox@206408000 {
+                       compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
+                       reg = <0x2 0x6408000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 575 IRQ_TYPE_LEVEL_HIGH>,
+                               <AIC_IRQ 576 IRQ_TYPE_LEVEL_HIGH>,
+                               <AIC_IRQ 577 IRQ_TYPE_LEVEL_HIGH>,
+                               <AIC_IRQ 578 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "send-empty", "send-not-empty",
+                               "recv-empty", "recv-not-empty";
+                       #mbox-cells = <0>;
+               };
+
                cpufreq_e: performance-controller@210e20000 {
                        compatible = "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
                        reg = <0x2 0x10e20000 0 0x1000>;
                                                reg = <0x9f01 0x1>;
                                        };
 
-                                       boot_error_count: boot-error-count@9f02 {
+                                       boot_error_count: boot-error-count@9f02,0 {
                                                reg = <0x9f02 0x1>;
                                                bits = <0 4>;
                                        };
 
-                                       panic_count: panic-count@9f02 {
+                                       panic_count: panic-count@9f02,4 {
                                                reg = <0x9f02 0x1>;
                                                bits = <4 4>;
                                        };
                                                reg = <0x9f03 0x1>;
                                        };
 
-                                       shutdown_flag: shutdown-flag@9f0f {
+                                       shutdown_flag: shutdown-flag@9f0f,3 {
                                                reg = <0x9f0f 0x1>;
                                                bits = <3 1>;
                                        };
index f68354194355807dae9b5922bb8aff74da3c29e6..b36b345861b6efa7104e525d6d0de9a7ba604ca9 100644 (file)
        #address-cells = <2>;
        #size-cells = <2>;
 
+       aliases {
+               gpu = &gpu;
+       };
+
        cpus {
                #address-cells = <2>;
                #size-cells = <0>;
                clock-output-names = "nco_ref";
        };
 
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gpu_globals: globals {
+                       status = "disabled";
+               };
+
+               gpu_hw_cal_a: hw-cal-a {
+                       status = "disabled";
+               };
+
+               gpu_hw_cal_b: hw-cal-b {
+                       status = "disabled";
+               };
+
+               uat_handoff: uat-handoff {
+                       status = "disabled";
+               };
+
+               uat_pagetables: uat-pagetables {
+                       status = "disabled";
+               };
+
+               uat_ttbs: uat-ttbs {
+                       status = "disabled";
+               };
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                ranges;
                nonposted-mmio;
 
+               gpu: gpu@206400000 {
+                       compatible = "apple,agx-g14g";
+                       reg = <0x2 0x6400000 0 0x40000>,
+                               <0x2 0x4000000 0 0x1000000>;
+                       reg-names = "asc", "sgx";
+                       mboxes = <&agx_mbox>;
+                       power-domains = <&ps_gfx>;
+                       memory-region = <&uat_ttbs>, <&uat_pagetables>, <&uat_handoff>,
+                                       <&gpu_hw_cal_a>, <&gpu_hw_cal_b>, <&gpu_globals>;
+                       memory-region-names = "ttbs", "pagetables", "handoff",
+                                             "hw-cal-a", "hw-cal-b", "globals";
+
+                       apple,firmware-abi = <0 0 0>;
+               };
+
+               agx_mbox: mbox@206408000 {
+                       compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
+                       reg = <0x2 0x6408000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 709 IRQ_TYPE_LEVEL_HIGH>,
+                               <AIC_IRQ 710 IRQ_TYPE_LEVEL_HIGH>,
+                               <AIC_IRQ 711 IRQ_TYPE_LEVEL_HIGH>,
+                               <AIC_IRQ 712 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "send-empty", "send-not-empty",
+                               "recv-empty", "recv-not-empty";
+                       #mbox-cells = <0>;
+               };
+
                cpufreq_e: cpufreq@210e20000 {
                        compatible = "apple,t8112-cluster-cpufreq", "apple,cluster-cpufreq";
                        reg = <0x2 0x10e20000 0 0x1000>;
                                                reg = <0xf701 0x1>;
                                        };
 
-                                       boot_error_count: boot-error-count@f702 {
+                                       boot_error_count: boot-error-count@f702,0 {
                                                reg = <0xf702 0x1>;
                                                bits = <0 4>;
                                        };
 
-                                       panic_count: panic-count@f702 {
+                                       panic_count: panic-count@f702,4 {
                                                reg = <0xf702 0x1>;
                                                bits = <4 4>;
                                        };
                                                reg = <0xf703 0x1>;
                                        };
 
-                                       shutdown_flag: shutdown-flag@f70f {
+                                       shutdown_flag: shutdown-flag@f70f,3 {
                                                reg = <0xf70f 0x1>;
                                                bits = <3 1>;
                                        };
diff --git a/src/arm64/axiado/ax3000-evk.dts b/src/arm64/axiado/ax3000-evk.dts
new file mode 100644 (file)
index 0000000..b86e969
--- /dev/null
@@ -0,0 +1,82 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (c) 2021-25 Axiado Corporation (or its affiliates). All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "ax3000.dtsi"
+
+/ {
+       model = "Axiado AX3000 EVK";
+       compatible = "axiado,ax3000-evk", "axiado,ax3000";
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+       };
+
+       chosen {
+               stdout-path = "serial3:115200";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               /* Cortex-A53 will use following memory map */
+               reg = <0x00000000 0x3d000000 0x00000000 0x23000000>,
+                     <0x00000004 0x00000000 0x00000000 0x80000000>;
+       };
+};
+
+/* GPIO bank 0 - 7 */
+&gpio0 {
+       status = "okay";
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&gpio2 {
+       status = "okay";
+};
+
+&gpio3 {
+       status = "okay";
+};
+
+&gpio4 {
+       status = "okay";
+};
+
+&gpio5 {
+       status = "okay";
+};
+
+&gpio6 {
+       status = "okay";
+};
+
+&gpio7 {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
diff --git a/src/arm64/axiado/ax3000.dtsi b/src/arm64/axiado/ax3000.dtsi
new file mode 100644 (file)
index 0000000..792f52e
--- /dev/null
@@ -0,0 +1,520 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (c) 2021-25 Axiado Corporation (or its affiliates). All rights reserved.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/memreserve/ 0x3c0013a0 0x00000008;    /* cpu-release-addr */
+/ {
+       model = "Axiado AX3000";
+       interrupt-parent = <&gic500>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x0>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x3c0013a0>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       i-cache-size = <0x8000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       next-level-cache = <&l2>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x1>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x3c0013a0>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       i-cache-size = <0x8000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       next-level-cache = <&l2>;
+               };
+
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x2>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x3c0013a0>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       i-cache-size = <0x8000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       next-level-cache = <&l2>;
+               };
+
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x3>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x3c0013a0>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       i-cache-size = <0x8000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       next-level-cache = <&l2>;
+               };
+
+               l2: l2-cache0 {
+                       compatible = "cache";
+                       cache-size = <0x100000>;
+                       cache-unified;
+                       cache-line-size = <64>;
+                       cache-sets = <1024>;
+                       cache-level = <2>;
+               };
+       };
+
+       clocks {
+               clk_xin: clock-200000000 {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <200000000>;
+                       clock-output-names = "clk_xin";
+               };
+
+               refclk: clock-125000000 {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <125000000>;
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               ranges;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               interrupt-parent = <&gic500>;
+
+               gic500: interrupt-controller@80300000 {
+                       compatible = "arm,gic-v3";
+                       reg = <0x00 0x80300000 0x00 0x10000>,
+                             <0x00 0x80380000 0x00 0x80000>;
+                       ranges;
+                       #interrupt-cells = <3>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       interrupt-controller;
+                       #redistributor-regions = <1>;
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               /* GPIO Controller banks 0 - 7 */
+               gpio0: gpio-controller@80500000 {
+                       compatible = "axiado,ax3000-gpio", "cdns,gpio-r1p02";
+                       reg = <0x00 0x80500000 0x00 0x400>;
+                       clocks = <&refclk>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       status = "disabled";
+               };
+
+               gpio1: gpio-controller@80580000 {
+                       compatible = "axiado,ax3000-gpio", "cdns,gpio-r1p02";
+                       reg = <0x00 0x80580000 0x00 0x400>;
+                       clocks = <&refclk>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       status = "disabled";
+               };
+
+               gpio2: gpio-controller@80600000 {
+                       compatible = "axiado,ax3000-gpio", "cdns,gpio-r1p02";
+                       reg = <0x00 0x80600000 0x00 0x400>;
+                       clocks = <&refclk>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       status = "disabled";
+               };
+
+               gpio3: gpio-controller@80680000 {
+                       compatible = "axiado,ax3000-gpio", "cdns,gpio-r1p02";
+                       reg = <0x00 0x80680000 0x00 0x400>;
+                       clocks = <&refclk>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       status = "disabled";
+               };
+
+               gpio4: gpio-controller@80700000 {
+                       compatible = "axiado,ax3000-gpio", "cdns,gpio-r1p02";
+                       reg = <0x00 0x80700000 0x00 0x400>;
+                       clocks = <&refclk>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       status = "disabled";
+               };
+
+               gpio5: gpio-controller@80780000 {
+                       compatible = "axiado,ax3000-gpio", "cdns,gpio-r1p02";
+                       reg = <0x00 0x80780000 0x00 0x400>;
+                       clocks = <&refclk>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       status = "disabled";
+               };
+
+               gpio6: gpio-controller@80800000 {
+                       compatible = "axiado,ax3000-gpio", "cdns,gpio-r1p02";
+                       reg = <0x00 0x80800000 0x00 0x400>;
+                       clocks = <&refclk>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       status = "disabled";
+               };
+
+               gpio7: gpio-controller@80880000 {
+                       compatible = "axiado,ax3000-gpio", "cdns,gpio-r1p02";
+                       reg = <0x00 0x80880000 0x00 0x400>;
+                       clocks = <&refclk>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* I3C Controller 0 - 16 */
+               i3c0: i3c@80500400 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80500400 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c1: i3c@80500800 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80500800 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c2: i3c@80580400 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80580400 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c3: i3c@80580800 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80580800 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c4: i3c@80600400 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80600400 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c5: i3c@80600800 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80600800 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c6: i3c@80680400 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80680400 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c7: i3c@80680800 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80680800 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c8: i3c@80700400 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80700400 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c9: i3c@80700800 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80700800 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c10: i3c@80780400 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80780400 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c11: i3c@80780800 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80780800 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c12: i3c@80800400 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80800400 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c13: i3c@80800800 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80800800 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c14: i3c@80880400 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80880400 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c15: i3c@80880800 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80880800 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i3c16: i3c@80620400 {
+                       compatible = "axiado,ax3000-i3c", "cdns,i3c-master";
+                       reg = <0x00 0x80620400 0x00 0x400>;
+                       clocks = <&refclk &clk_xin>;
+                       clock-names = "pclk", "sysclk";
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
+                       i2c-scl-hz = <100000>;
+                       i3c-scl-hz = <400000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               uart0: serial@80520000 {
+                       compatible = "axiado,ax3000-uart", "cdns,uart-r1p12";
+                       reg = <0x00 0x80520000 0x00 0x100>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "uart_clk", "pclk";
+                       clocks = <&refclk &refclk>;
+                       status = "disabled";
+               };
+
+               uart1: serial@805a0000 {
+                       compatible = "axiado,ax3000-uart", "cdns,uart-r1p12";
+                       reg = <0x00 0x805A0000 0x00 0x100>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "uart_clk", "pclk";
+                       clocks = <&refclk &refclk>;
+                       status = "disabled";
+               };
+
+               uart2: serial@80620000 {
+                       compatible = "axiado,ax3000-uart", "cdns,uart-r1p12";
+                       reg = <0x00 0x80620000 0x00 0x100>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "uart_clk", "pclk";
+                       clocks = <&refclk &refclk>;
+                       status = "disabled";
+               };
+
+               uart3: serial@80520800 {
+                       compatible = "axiado,ax3000-uart", "cdns,uart-r1p12";
+                       reg = <0x00 0x80520800 0x00 0x100>;
+                       interrupt-parent = <&gic500>;
+                       interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "uart_clk", "pclk";
+                       clocks = <&refclk &refclk>;
+                       status = "disabled";
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupt-parent = <&gic500>;
+               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>,
+                          <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>,
+                          <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>,
+                          <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>;
+       };
+};
diff --git a/src/arm64/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts b/src/arm64/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts
new file mode 100644 (file)
index 0000000..6ea3c10
--- /dev/null
@@ -0,0 +1,121 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "bcm2712.dtsi"
+
+/ {
+       compatible = "raspberrypi,5-model-b", "brcm,bcm2712";
+       model = "Raspberry Pi 5";
+
+       aliases {
+               serial10 = &uart10;
+       };
+
+       chosen: chosen {
+               stdout-path = "serial10:115200n8";
+       };
+
+       clk_rp1_xosc: clock-50000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-output-names = "rp1-xosc";
+               clock-frequency = <50000000>;
+       };
+
+       /* Will be filled by the bootloader */
+       memory@0 {
+               device_type = "memory";
+               reg = <0 0 0 0x28000000>;
+       };
+
+       sd_io_1v8_reg: sd-io-1v8-reg {
+               compatible = "regulator-gpio";
+               regulator-name = "vdd-sd-io";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-settling-time-us = <5000>;
+               gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>;
+               states = <1800000 1>,
+                        <3300000 0>;
+       };
+
+       sd_vcc_reg: sd-vcc-reg {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-sd";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               enable-active-high;
+               gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+/* The Debug UART, on Rpi5 it's on JST-SH 1.0mm 3-pin connector
+ * labeled "UART", i.e. the interface with the system console.
+ */
+&uart10 {
+       status = "okay";
+};
+
+/* SDIO1 is used to drive the SD card */
+&sdio1 {
+       vqmmc-supply = <&sd_io_1v8_reg>;
+       vmmc-supply = <&sd_vcc_reg>;
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-ddr50;
+       sd-uhs-sdr104;
+};
+
+&soc {
+       firmware: firmware {
+               compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               mboxes = <&mailbox>;
+               dma-ranges;
+
+               firmware_clocks: clocks {
+                       compatible = "raspberrypi,firmware-clocks";
+                       #clock-cells = <1>;
+               };
+
+               reset: reset {
+                       compatible = "raspberrypi,firmware-reset";
+                       #reset-cells = <1>;
+               };
+       };
+
+       power: power {
+               compatible = "raspberrypi,bcm2835-power";
+               firmware = <&firmware>;
+               #power-domain-cells = <1>;
+       };
+};
+
+&hvs {
+       clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
+       clock-names = "core", "disp";
+};
+
+&hdmi0 {
+       clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
+       clock-names = "hdmi", "bvb", "audio", "cec";
+};
+
+&hdmi1 {
+       clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
+       clock-names = "hdmi", "bvb", "audio", "cec";
+};
+
+&pcie1 {
+       status = "okay";
+};
+
+&pcie2 {
+       status = "okay";
+};
index 34470e3d7171c11a8b18d5c5fcd8c6ad3cffa923..a70a9b158df30dbfd20ac29bdaa0c9e9e241848d 100644 (file)
 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
-/dts-v1/;
-
-#include <dt-bindings/gpio/gpio.h>
-#include "bcm2712.dtsi"
-
-/ {
-       compatible = "raspberrypi,5-model-b", "brcm,bcm2712";
-       model = "Raspberry Pi 5";
-
-       aliases {
-               serial10 = &uart10;
-       };
-
-       chosen: chosen {
-               stdout-path = "serial10:115200n8";
-       };
-
-       /* Will be filled by the bootloader */
-       memory@0 {
-               device_type = "memory";
-               reg = <0 0 0 0x28000000>;
-       };
-
-       sd_io_1v8_reg: sd-io-1v8-reg {
-               compatible = "regulator-gpio";
-               regulator-name = "vdd-sd-io";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-boot-on;
-               regulator-always-on;
-               regulator-settling-time-us = <5000>;
-               gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>;
-               states = <1800000 1>,
-                        <3300000 0>;
-       };
-
-       sd_vcc_reg: sd-vcc-reg {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc-sd";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-boot-on;
-               enable-active-high;
-               gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>;
-       };
-};
-
-/* The Debug UART, on Rpi5 it's on JST-SH 1.0mm 3-pin connector
- * labeled "UART", i.e. the interface with the system console.
+/*
+ * bcm2712-rpi-5-b-ovl-rp1.dts is the overlay-ready DT which will make
+ * the RP1 driver to load the RP1 dtb overlay at runtime, while
+ * bcm2712-rpi-5-b.dts (this file) is the fully defined one (i.e. it
+ * already contains RP1 node, so no overlay is loaded nor needed).
+ * This file is not intended to be modified, nodes should be added
+ * to the included bcm2712-rpi-5-b-ovl-rp1.dts.
  */
-&uart10 {
-       status = "okay";
-};
 
-/* SDIO1 is used to drive the SD card */
-&sdio1 {
-       vqmmc-supply = <&sd_io_1v8_reg>;
-       vmmc-supply = <&sd_vcc_reg>;
-       bus-width = <4>;
-       sd-uhs-sdr50;
-       sd-uhs-ddr50;
-       sd-uhs-sdr104;
-};
-
-&soc {
-       firmware: firmware {
-               compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
-               #address-cells = <1>;
-               #size-cells = <1>;
-
-               mboxes = <&mailbox>;
-               dma-ranges;
-
-               firmware_clocks: clocks {
-                       compatible = "raspberrypi,firmware-clocks";
-                       #clock-cells = <1>;
-               };
-
-               reset: reset {
-                       compatible = "raspberrypi,firmware-reset";
-                       #reset-cells = <1>;
-               };
-       };
-
-       power: power {
-               compatible = "raspberrypi,bcm2835-power";
-               firmware = <&firmware>;
-               #power-domain-cells = <1>;
-       };
-};
-
-&hvs {
-       clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
-       clock-names = "core", "disp";
-};
+/dts-v1/;
 
-&hdmi0 {
-       clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
-       clock-names = "hdmi", "bvb", "audio", "cec";
-};
+#include "bcm2712-rpi-5-b-ovl-rp1.dts"
 
-&hdmi1 {
-       clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
-       clock-names = "hdmi", "bvb", "audio", "cec";
+&pcie2 {
+       #include "rp1-nexus.dtsi"
 };
 
 &pcie1 {
index 613ba7ee43d6489ea0f1490d2fccaf90961b2694..3b7595fd4e81d150278816bbe27e08286cde2ff8 100644 (file)
                };
        };
 
+       /* PERF Peripherals */
        bus@ff800000 {
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
-               ranges = <0x00 0x00 0xff800000 0x3000>;
+               ranges = <0x00 0x00 0xff800000 0x400000>;
 
                twd: timer-mfd@400 {
                        compatible = "brcm,bcm4908-twd", "simple-mfd", "syscon";
                        };
                };
 
-               gpio0: gpio-controller@500 {
+               /* GPIOs 0 .. 31 */
+               gpio0: gpio@500 {
                        compatible = "brcm,bcm6345-gpio";
+                       reg = <0x500 0x04>, <0x528 0x04>;
                        reg-names = "dirout", "dat";
-                       reg = <0x500 0x28>, <0x528 0x28>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+               };
+
+               /* GPIOs 32 .. 63 */
+               gpio1: gpio@504 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x504 0x04>, <0x52c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 64 .. 95 */
+               gpio2: gpio@508 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x508 0x04>, <0x530 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
 
+               /* GPIOs 96 .. 127 */
+               gpio3: gpio@50c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x50c 0x04>, <0x534 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
                        #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 128 .. 159 */
+               gpio4: gpio@510 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x510 0x04>, <0x538 0x04>;
+                       reg-names = "dirout", "dat";
                        gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 160 .. 191 */
+               gpio5: gpio@514 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x514 0x04>, <0x53c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 192 .. 223 */
+               gpio6: gpio@518 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x518 0x04>, <0x540 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 224 .. 255 */
+               gpio7: gpio@51c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x51c 0x04>, <0x544 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 256 .. 287 */
+               gpio8: gpio@520 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x520 0x04>, <0x548 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 288 .. 319 */
+               gpio9: gpio@524 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x524 0x04>, <0x54c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
                };
 
                pinctrl@560 {
                        #size-cells = <0>;
                };
 
+               rng@b80 {
+                       compatible = "brcm,iproc-rng200";
+                       reg = <0xb80 0x28>;
+                       interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                hsspi: spi@1000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                                #reset-cells = <1>;
                        };
                };
+
+               pl081_dma: dma-controller@59000 {
+                       compatible = "arm,pl081", "arm,primecell";
+                       // The magic B105F00D info is missing
+                       arm,primecell-periphid = <0x00041081>;
+                       reg = <0x59000 0x1000>;
+                       interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
+                       memcpy-burst-size = <256>;
+                       memcpy-bus-width = <32>;
+                       clocks = <&periph_clk>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <2>;
+               };
        };
 
        reboot {
index 48d618e75866452a64adfdc781ac0ea3c2eff3e8..a441388c0cd251d7dd5381f7b559633a89693232 100644 (file)
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 /*
  * Copyright 2022 Broadcom Ltd.
+ * This DTSI is for the B0 and later revision of the SoC
  */
 
 #include <dt-bindings/interrupt-controller/irq.h>
                #size-cells = <1>;
                ranges = <0x0 0x0 0xff800000 0x800000>;
 
+               /* GPIOs 0 .. 31 */
+               gpio0: gpio@500 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x500 0x04>, <0x520 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 32 .. 63 */
+               gpio1: gpio@504 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x504 0x04>, <0x524 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 64 .. 95 */
+               gpio2: gpio@508 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x508 0x04>, <0x528 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 96 .. 127 */
+               gpio3: gpio@50c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x50c 0x04>, <0x52c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 128 .. 159 */
+               gpio4: gpio@510 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x510 0x04>, <0x530 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 160 .. 191 */
+               gpio5: gpio@514 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x514 0x04>, <0x534 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 192 .. 223 */
+               gpio6: gpio@518 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x518 0x04>, <0x538 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 224 .. 255 */
+               gpio7: gpio@51c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x51c 0x04>, <0x53c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+
+               leds: led-controller@800 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "brcm,bcm63138-leds";
+                       reg = <0x800 0xdc>;
+                       status = "disabled";
+               };
+
+               rng@b80 {
+                       compatible = "brcm,iproc-rng200";
+                       reg = <0xb80 0x28>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                hsspi: spi@1000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        };
                };
 
+               /* B0 AHB Peripherals */
+               pl081_dma: dma-controller@11000 {
+                       compatible = "arm,pl081", "arm,primecell";
+                       // The magic B105F00D info is missing
+                       arm,primecell-periphid = <0x00041081>;
+                       reg = <0x11000 0x1000>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       memcpy-burst-size = <256>;
+                       memcpy-bus-width = <32>;
+                       clocks = <&periph_clk>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <2>;
+               };
+
+               /* B0 ARM UART Peripheral block */
                uart0: serial@12000 {
                        compatible = "arm,pl011", "arm,primecell";
                        reg = <0x12000 0x1000>;
                        clock-names = "uartclk", "apb_pclk";
                        status = "disabled";
                };
+
+               uart1: serial@13000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x13000 0x1000>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&uart_clk>, <&uart_clk>;
+                       clock-names = "uartclk", "apb_pclk";
+                       status = "disabled";
+               };
+
+               uart2: serial@14000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x14000 0x1000>;
+                       interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&uart_clk>, <&uart_clk>;
+                       clock-names = "uartclk", "apb_pclk";
+                       status = "disabled";
+               };
        };
 };
index 00c62c1e5df00c722884a7adfcb7be08a43c0dc3..dcbd0fdd33d25fa340c417e8284826801ebc00bb 100644 (file)
                };
        };
 
+       /* PERF Peripherals */
        bus@ff800000 {
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
-               ranges = <0x0 0x0 0xff800000 0x800000>;
+               ranges = <0x0 0x0 0xff800000 0x400000>;
+
+               watchdog@480 {
+                       compatible = "brcm,bcm6345-wdt";
+                       reg = <0x480 0x10>;
+               };
+
+               watchdog@4c0 {
+                       compatible = "brcm,bcm6345-wdt";
+                       reg = <0x4c0 0x10>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 0 .. 31 */
+               gpio0: gpio@500 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x500 0x04>, <0x520 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 32 .. 63 */
+               gpio1: gpio@504 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x504 0x04>, <0x524 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 64 .. 95 */
+               gpio2: gpio@508 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x508 0x04>, <0x528 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 96 .. 127 */
+               gpio3: gpio@50c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x50c 0x04>, <0x52c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 128 .. 159 */
+               gpio4: gpio@510 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x510 0x04>, <0x530 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 160 .. 191 */
+               gpio5: gpio@514 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x514 0x04>, <0x534 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 192 .. 223 */
+               gpio6: gpio@518 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x518 0x04>, <0x538 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 224 .. 255 */
+               gpio7: gpio@51c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x51c 0x04>, <0x53c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
 
                uart0: serial@640 {
                        compatible = "brcm,bcm6345-uart";
                        status = "disabled";
                };
 
+               uart1: serial@660 {
+                       compatible = "brcm,bcm6345-uart";
+                       reg = <0x660 0x18>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&periph_clk>;
+                       clock-names = "refclk";
+                       status = "disabled";
+               };
+
+               leds: led-controller@800 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "brcm,bcm63138-leds";
+                       reg = <0x800 0xdc>;
+                       status = "disabled";
+               };
+
+               rng@b80 {
+                       compatible = "brcm,iproc-rng200";
+                       reg = <0xb80 0x28>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                hsspi: spi@1000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                                reg = <0>;
                        };
                };
+
+               pl081_dma: dma-controller@59000 {
+                       compatible = "arm,pl081", "arm,primecell";
+                       // The magic B105F00D info is missing
+                       arm,primecell-periphid = <0x00041081>;
+                       reg = <0x59000 0x1000>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       memcpy-burst-size = <256>;
+                       memcpy-bus-width = <32>;
+                       clocks = <&periph_clk>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <2>;
+               };
        };
 };
index caeaf428dc15db3089bf4dc62c4a272782c22c3f..c105a734a64897e714ed107e0ddccc5eebd415da 100644 (file)
                };
        };
 
+       /* PERF Peripherals */
        bus@ff800000 {
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
-               ranges = <0x0 0x0 0xff800000 0x62000>;
+               ranges = <0x0 0x0 0xff800000 0x400000>;
 
                twd: timer-mfd@400 {
                        compatible = "brcm,bcm4908-twd", "simple-mfd", "syscon";
                        };
                };
 
+               /* GPIOs 0 .. 31 */
+               gpio0: gpio@500 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x500 0x04>, <0x520 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 32 .. 63 */
+               gpio1: gpio@504 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x504 0x04>, <0x524 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 64 .. 95 */
+               gpio2: gpio@508 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x508 0x04>, <0x528 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 96 .. 127 */
+               gpio3: gpio@50c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x50c 0x04>, <0x52c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 128 .. 159 */
+               gpio4: gpio@510 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x510 0x04>, <0x530 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 160 .. 191 */
+               gpio5: gpio@514 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x514 0x04>, <0x534 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 192 .. 223 */
+               gpio6: gpio@518 {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x518 0x04>, <0x538 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
+               /* GPIOs 224 .. 255 */
+               gpio7: gpio@51c {
+                       compatible = "brcm,bcm6345-gpio";
+                       reg = <0x51c 0x04>, <0x53c 0x04>;
+                       reg-names = "dirout", "dat";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       status = "disabled";
+               };
+
                uart0: serial@640 {
                        compatible = "brcm,bcm6345-uart";
                        reg = <0x640 0x18>;
                        status = "disabled";
                };
 
+               uart1: serial@660 {
+                       compatible = "brcm,bcm6345-uart";
+                       reg = <0x660 0x18>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&periph_clk>;
+                       clock-names = "refclk";
+                       status = "disabled";
+               };
+
+               leds: led-controller@800 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "brcm,bcm63138-leds";
+                       reg = <0x800 0xdc>;
+                       status = "disabled";
+               };
+
+               rng@b80 {
+                       compatible = "brcm,iproc-rng200";
+                       reg = <0xb80 0x28>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                hsspi: spi@1000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                                reg = <0>;
                        };
                };
+
+               pl081_dma: dma-controller@59000 {
+                       compatible = "arm,pl081", "arm,primecell";
+                       // The magic B105F00D info is missing
+                       arm,primecell-periphid = <0x00041081>;
+                       reg = <0x59000 0x1000>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       memcpy-burst-size = <256>;
+                       memcpy-bus-width = <32>;
+                       clocks = <&periph_clk>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <2>;
+               };
        };
 };
index 5a4b81faff203ac8a6c379c30f82f456cb07e32e..9888a1fabd5c6dc73fa76dc5ec075db6b5c8bc22 100644 (file)
 
                        v2m0: v2m@0 {
                                compatible = "arm,gic-v2m-frame";
-                               interrupt-parent = <&gic>;
                                msi-controller;
                                reg = <0x00000 0x1000>;
                                arm,msi-base-spi = <72>;
 
                        v2m1: v2m@10000 {
                                compatible = "arm,gic-v2m-frame";
-                               interrupt-parent = <&gic>;
                                msi-controller;
                                reg = <0x10000 0x1000>;
                                arm,msi-base-spi = <88>;
 
                        v2m2: v2m@20000 {
                                compatible = "arm,gic-v2m-frame";
-                               interrupt-parent = <&gic>;
                                msi-controller;
                                reg = <0x20000 0x1000>;
                                arm,msi-base-spi = <104>;
 
                        v2m3: v2m@30000 {
                                compatible = "arm,gic-v2m-frame";
-                               interrupt-parent = <&gic>;
                                msi-controller;
                                reg = <0x30000 0x1000>;
                                arm,msi-base-spi = <120>;
 
                        v2m4: v2m@40000 {
                                compatible = "arm,gic-v2m-frame";
-                               interrupt-parent = <&gic>;
                                msi-controller;
                                reg = <0x40000 0x1000>;
                                arm,msi-base-spi = <136>;
 
                        v2m5: v2m@50000 {
                                compatible = "arm,gic-v2m-frame";
-                               interrupt-parent = <&gic>;
                                msi-controller;
                                reg = <0x50000 0x1000>;
                                arm,msi-base-spi = <152>;
 
                        v2m6: v2m@60000 {
                                compatible = "arm,gic-v2m-frame";
-                               interrupt-parent = <&gic>;
                                msi-controller;
                                reg = <0x60000 0x1000>;
                                arm,msi-base-spi = <168>;
 
                        v2m7: v2m@70000 {
                                compatible = "arm,gic-v2m-frame";
-                               interrupt-parent = <&gic>;
                                msi-controller;
                                reg = <0x70000 0x1000>;
                                arm,msi-base-spi = <184>;
diff --git a/src/arm64/broadcom/rp1-common.dtsi b/src/arm64/broadcom/rp1-common.dtsi
new file mode 100644 (file)
index 0000000..5002a37
--- /dev/null
@@ -0,0 +1,42 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/clock/raspberrypi,rp1-clocks.h>
+
+pci_ep_bus: pci-ep-bus@1 {
+       compatible = "simple-bus";
+       ranges = <0x00 0x40000000  0x01 0x00 0x00000000  0x00 0x00400000>;
+       dma-ranges = <0x10 0x00000000  0x43000000 0x10 0x00000000  0x10 0x00000000>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       rp1_clocks: clocks@40018000 {
+               compatible = "raspberrypi,rp1-clocks";
+               reg = <0x00 0x40018000 0x0 0x10038>;
+               #clock-cells = <1>;
+               clocks = <&clk_rp1_xosc>;
+               assigned-clocks = <&rp1_clocks RP1_PLL_SYS_CORE>,
+                                 <&rp1_clocks RP1_PLL_SYS>,
+                                 <&rp1_clocks RP1_PLL_SYS_SEC>,
+                                 <&rp1_clocks RP1_CLK_SYS>;
+               assigned-clock-rates = <1000000000>, // RP1_PLL_SYS_CORE
+                                      <200000000>,  // RP1_PLL_SYS
+                                      <125000000>,  // RP1_PLL_SYS_SEC
+                                      <200000000>;  // RP1_CLK_SYS
+       };
+
+       rp1_gpio: pinctrl@400d0000 {
+               compatible = "raspberrypi,rp1-gpio";
+               reg = <0x00 0x400d0000  0x0 0xc000>,
+                     <0x00 0x400e0000  0x0 0xc000>,
+                     <0x00 0x400f0000  0x0 0xc000>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
+                            <1 IRQ_TYPE_LEVEL_HIGH>,
+                            <2 IRQ_TYPE_LEVEL_HIGH>;
+       };
+};
diff --git a/src/arm64/broadcom/rp1-nexus.dtsi b/src/arm64/broadcom/rp1-nexus.dtsi
new file mode 100644 (file)
index 0000000..0ef30d7
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+rp1_nexus {
+       compatible = "pci1de4,1";
+       #address-cells = <3>;
+       #size-cells = <2>;
+       ranges = <0x01 0x00 0x00000000
+                 0x02000000 0x00 0x00000000
+                 0x0 0x400000>;
+       interrupt-controller;
+       #interrupt-cells = <2>;
+
+       #include "rp1-common.dtsi"
+};
diff --git a/src/arm64/broadcom/rp1.dtso b/src/arm64/broadcom/rp1.dtso
new file mode 100644 (file)
index 0000000..ab4f146
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+/plugin/;
+
+&pcie2 {
+       #address-cells = <3>;
+       #size-cells = <2>;
+
+       #include "rp1-nexus.dtsi"
+};
index 6dfe78a7d4ab3e38fd8235e5af0f828a4eb47678..966fb57280f31eb57ce2c7b69be0134e9b5753d0 100644 (file)
                        reg = <0x04 0x02020000 0x0 0x1000>;
                        interrupt-parent = <&gic>;
                        interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk125mhz>;
-                       clock-names = "apb_pclk";
+                       clocks = <&clk125mhz>, <&clk125mhz>;
+                       clock-names = "uartclk", "apb_pclk";
                };
        };
 
diff --git a/src/arm64/cix/sky1-orion-o6.dts b/src/arm64/cix/sky1-orion-o6.dts
new file mode 100644 (file)
index 0000000..d74964d
--- /dev/null
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright 2025 Cix Technology Group Co., Ltd.
+ *
+ */
+
+/dts-v1/;
+
+#include "sky1.dtsi"
+/ {
+       model = "Radxa Orion O6";
+       compatible = "radxa,orion-o6", "cix,sky1";
+
+       aliases {
+               serial2 = &uart2;
+       };
+
+       chosen {
+               stdout-path = &uart2;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0x0 0x28000000>;
+                       linux,cma-default;
+               };
+       };
+
+};
+
+&uart2 {
+       status = "okay";
+};
diff --git a/src/arm64/cix/sky1.dtsi b/src/arm64/cix/sky1.dtsi
new file mode 100644 (file)
index 0000000..7dfe767
--- /dev/null
@@ -0,0 +1,330 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright 2025 Cix Technology Group Co., Ltd.
+ *
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/cix,sky1.h>
+
+/ {
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "arm,cortex-a520";
+                       enable-method = "psci";
+                       reg = <0x0 0x0>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <403>;
+               };
+
+               cpu1: cpu@100 {
+                       compatible = "arm,cortex-a520";
+                       enable-method = "psci";
+                       reg = <0x0 0x100>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <403>;
+               };
+
+               cpu2: cpu@200 {
+                       compatible = "arm,cortex-a520";
+                       enable-method = "psci";
+                       reg = <0x0 0x200>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <403>;
+               };
+
+               cpu3: cpu@300 {
+                       compatible = "arm,cortex-a520";
+                       enable-method = "psci";
+                       reg = <0x0 0x300>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <403>;
+               };
+
+               cpu4: cpu@400 {
+                       compatible = "arm,cortex-a720";
+                       enable-method = "psci";
+                       reg = <0x0 0x400>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <1024>;
+               };
+
+               cpu5: cpu@500 {
+                       compatible = "arm,cortex-a720";
+                       enable-method = "psci";
+                       reg = <0x0 0x500>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <1024>;
+               };
+
+               cpu6: cpu@600 {
+                       compatible = "arm,cortex-a720";
+                       enable-method = "psci";
+                       reg = <0x0 0x600>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <1024>;
+               };
+
+               cpu7: cpu@700 {
+                       compatible = "arm,cortex-a720";
+                       enable-method = "psci";
+                       reg = <0x0 0x700>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <1024>;
+               };
+
+               cpu8: cpu@800 {
+                       compatible = "arm,cortex-a720";
+                       enable-method = "psci";
+                       reg = <0x0 0x800>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <1024>;
+               };
+
+               cpu9: cpu@900 {
+                       compatible = "arm,cortex-a720";
+                       enable-method = "psci";
+                       reg = <0x0 0x900>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <1024>;
+               };
+
+               cpu10: cpu@a00 {
+                       compatible = "arm,cortex-a720";
+                       enable-method = "psci";
+                       reg = <0x0 0xa00>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <1024>;
+               };
+
+               cpu11: cpu@b00 {
+                       compatible = "arm,cortex-a720";
+                       enable-method = "psci";
+                       reg = <0x0 0xb00>;
+                       device_type = "cpu";
+                       capacity-dmips-mhz = <1024>;
+               };
+
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                               core2 {
+                                       cpu = <&cpu2>;
+                               };
+                               core3 {
+                                       cpu = <&cpu3>;
+                               };
+                               core4 {
+                                       cpu = <&cpu4>;
+                               };
+                               core5 {
+                                       cpu = <&cpu5>;
+                               };
+                               core6 {
+                                       cpu = <&cpu6>;
+                               };
+                               core7 {
+                                       cpu = <&cpu7>;
+                               };
+                               core8 {
+                                       cpu = <&cpu8>;
+                               };
+                               core9 {
+                                       cpu = <&cpu9>;
+                               };
+                               core10 {
+                                       cpu = <&cpu10>;
+                               };
+                               core11 {
+                                       cpu = <&cpu11>;
+                               };
+                       };
+               };
+       };
+
+       firmware {
+               ap_to_pm_scmi: scmi {
+                       compatible = "arm,scmi";
+                       mbox-names = "tx", "rx";
+                       mboxes = <&mbox_ap2pm 8>, <&mbox_pm2ap 8>;
+                       shmem = <&ap2pm_scmi_mem>, <&pm2ap_scmi_mem>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       scmi_clk: protocol@14 {
+                               reg = <0x14>;
+                               #clock-cells = <1>;
+                       };
+               };
+       };
+
+       pmu-a520 {
+               compatible = "arm,cortex-a520-pmu";
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &ppi_partition0>;
+       };
+
+       pmu-a720 {
+               compatible = "arm,cortex-a720-pmu";
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &ppi_partition1>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       soc@0 {
+               compatible = "simple-bus";
+               ranges = <0 0 0 0 0x20 0>;
+               dma-ranges;
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               uart0: serial@40b0000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x0 0x040b0000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 296 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&scmi_clk CLK_TREE_FCH_UART0_FUNC>, <&scmi_clk CLK_TREE_FCH_UART0_APB>;
+                       clock-names = "uartclk", "apb_pclk";
+                       status = "disabled";
+               };
+
+               uart1: serial@40c0000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x0 0x040c0000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&scmi_clk CLK_TREE_FCH_UART1_FUNC>, <&scmi_clk CLK_TREE_FCH_UART1_APB>;
+                       clock-names = "uartclk", "apb_pclk";
+                       status = "disabled";
+               };
+
+               uart2: serial@40d0000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x0 0x040d0000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&scmi_clk CLK_TREE_FCH_UART2_FUNC>, <&scmi_clk CLK_TREE_FCH_UART2_APB>;
+                       clock-names = "uartclk", "apb_pclk";
+                       status = "disabled";
+               };
+
+               uart3: serial@40e0000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x0 0x040e0000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&scmi_clk CLK_TREE_FCH_UART3_FUNC>, <&scmi_clk CLK_TREE_FCH_UART3_APB>;
+                       clock-names = "uartclk", "apb_pclk";
+                       status = "disabled";
+               };
+
+               mbox_ap2se: mailbox@5060000 {
+                       compatible = "cix,sky1-mbox";
+                       reg = <0x0 0x05060000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH 0>;
+                       #mbox-cells = <1>;
+                       cix,mbox-dir = "tx";
+               };
+
+               mbox_se2ap: mailbox@5070000 {
+                       compatible = "cix,sky1-mbox";
+                       reg = <0x0 0x05070000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH 0>;
+                       #mbox-cells = <1>;
+                       cix,mbox-dir = "rx";
+               };
+
+               ap2pm_scmi_mem: shmem@6590000 {
+                       compatible = "arm,scmi-shmem";
+                       reg = <0x0 0x06590000 0x0 0x80>;
+                       reg-io-width = <4>;
+               };
+
+               mbox_ap2pm: mailbox@6590080 {
+                       compatible = "cix,sky1-mbox";
+                       reg = <0x0 0x06590080 0x0 0xff80>;
+                       interrupts = <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH 0>;
+                       #mbox-cells = <1>;
+                       cix,mbox-dir = "tx";
+               };
+
+               pm2ap_scmi_mem: shmem@65a0000 {
+                       compatible = "arm,scmi-shmem";
+                       reg = <0x0 0x065a0000 0x0 0x80>;
+                       reg-io-width = <4>;
+               };
+
+               mbox_pm2ap: mailbox@65a0080 {
+                       compatible = "cix,sky1-mbox";
+                       reg = <0x0 0x065a0080 0x0 0xff80>;
+                       interrupts = <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH 0>;
+                       #mbox-cells = <1>;
+                       cix,mbox-dir = "rx";
+               };
+
+               mbox_sfh2ap: mailbox@8090000 {
+                       compatible = "cix,sky1-mbox";
+                       reg = <0x0 0x08090000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 391 IRQ_TYPE_LEVEL_HIGH 0>;
+                       #mbox-cells = <1>;
+                       cix,mbox-dir = "rx";
+               };
+
+               mbox_ap2sfh: mailbox@80a0000 {
+                       compatible = "cix,sky1-mbox";
+                       reg = <0x0 0x080a0000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 392 IRQ_TYPE_LEVEL_HIGH 0>;
+                       #mbox-cells = <1>;
+                       cix,mbox-dir = "tx";
+               };
+
+               gic: interrupt-controller@e010000 {
+                       compatible = "arm,gic-v3";
+                       reg = <0x0 0x0e010000 0 0x10000>,       /* GICD */
+                             <0x0 0x0e090000 0 0x300000>;       /* GICR * 12 */
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW 0>;
+                       #interrupt-cells = <4>;
+                       interrupt-controller;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       gic_its: msi-controller@e050000 {
+                               compatible = "arm,gic-v3-its";
+                               reg = <0x0 0x0e050000 0x0 0x30000>;
+                               msi-controller;
+                               #msi-cells = <1>;
+                       };
+
+                       ppi-partitions {
+                               ppi_partition0: interrupt-partition-0 {
+                                       affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
+                               };
+
+                               ppi_partition1: interrupt-partition-1 {
+                                       affinity = <&cpu4 &cpu5 &cpu6 &cpu7 &cpu8 &cpu9 &cpu10 &cpu11>;
+                               };
+                       };
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupt-names = "sec-phys", "phys", "virt", "hyp-phys", "hyp-virt";
+               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>,
+                            <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>,
+                            <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>,
+                            <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>,
+                            <GIC_PPI 12 IRQ_TYPE_LEVEL_LOW 0>;
+       };
+};
diff --git a/src/arm64/exynos/exynos2200-g0s.dts b/src/arm64/exynos/exynos2200-g0s.dts
new file mode 100644 (file)
index 0000000..0e348c5
--- /dev/null
@@ -0,0 +1,169 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+/*
+ * Samsung Galaxy S22+ (g0s/SM-S906B) device tree source
+ *
+ * Copyright (c) 2025, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
+ */
+
+/dts-v1/;
+#include "exynos2200.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       model = "Samsung Galaxy S22+ (SM-S906B)";
+       compatible = "samsung,g0s", "samsung,exynos2200";
+       chassis-type = "handset";
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               framebuffer: framebuffer {
+                       compatible = "simple-framebuffer";
+                       memory-region = <&cont_splash_mem>;
+                       width = <1080>;
+                       height = <2340>;
+                       stride = <(1080 * 4)>;
+                       format = "a8r8g8b8";
+               };
+       };
+
+       /*
+        * RTC clock (XrtcXTI); external, must be 32.768 kHz.
+        *
+        * TODO: Remove this once RTC clock is implemented properly as part of
+        *       PMIC driver.
+        */
+       rtcclk: clock-rtcclk {
+               compatible = "fixed-clock";
+               clock-output-names = "rtcclk";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&key_volup>;
+               pinctrl-names = "default";
+
+               volup-key {
+                       label = "Volume Up";
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpios = <&gpa3 0 GPIO_ACTIVE_LOW>;
+                       wakeup-source;
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x0 0x80000000 0x0 0x80000000>,
+                     <0x8 0x80000000 0x1 0x7e000000>;
+       };
+
+       /* TODO: Remove this once PMIC is implemented  */
+       reg_dummy: regulator-0 {
+               compatible = "regulator-fixed";
+               regulator-name = "dummy_reg";
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               cont_splash_mem: framebuffer@f6200000 {
+                       reg = <0x0 0xf6200000 0x0 (1080 * 2340 * 4)>;
+                       no-map;
+               };
+
+               debug_kinfo_reserved: debug-kinfo-reserved@fcfff000 {
+                       reg = <0x0 0xfcfff000 0x0 0x1000>;
+                       no-map;
+               };
+
+               log_itmon: log-itmon@fffe0000 {
+                       reg = <0x0 0xfffe0000 0x0 0x20000>;
+                       no-map;
+               };
+       };
+};
+
+&cmu_hsi0 {
+       clocks = <&xtcxo>,
+                <&rtcclk>,
+                <&cmu_top CLK_DOUT_CMU_HSI0_NOC>,
+                <&cmu_top CLK_DOUT_CMU_HSI0_DPGTC>,
+                <&cmu_top CLK_DOUT_CMU_HSI0_DPOSC>,
+                <&cmu_top CLK_DOUT_CMU_HSI0_USB32DRD>;
+       clock-names = "oscclk", "rtcclk", "noc", "dpgtc", "dposc", "usb";
+};
+
+/*
+ * cpu2 and cpu3 fail to come up consistently, which leads to a hang later
+ * in the boot process. Disable them until the issue is figured out.
+ */
+&cpu2 {
+       status = "fail";
+};
+
+&cpu3 {
+       status = "fail";
+};
+
+&ext_26m {
+       clock-frequency = <26000000>;
+};
+
+&ext_200m {
+       clock-frequency = <200000000>;
+};
+
+&mct_peris {
+       status = "okay";
+};
+
+&pinctrl_alive {
+       key_volup: key-volup-pins {
+               samsung,pins = "gpa3-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV4>;
+       };
+};
+
+&ppi_cluster0 {
+       affinity = <&cpu0 &cpu1>;
+};
+
+&usb {
+       /* TODO: Replace these once PMIC is implemented  */
+       vdd10-supply = <&reg_dummy>;
+       vdd33-supply = <&reg_dummy>;
+       status = "okay";
+};
+
+&usb32drd {
+       status = "okay";
+};
+
+&usb_dwc3 {
+       dr_mode = "otg";
+       usb-role-switch;
+       role-switch-default-mode = "peripheral";
+       maximum-speed = "high-speed";
+};
+
+&usb_hsphy {
+       /* TODO: Replace these once PMIC is implemented  */
+       vdda12-supply = <&reg_dummy>;
+       vdd-supply = <&reg_dummy>;
+       status = "okay";
+};
+
+&xtcxo {
+       clock-frequency = <76800000>;
+};
diff --git a/src/arm64/exynos/exynos2200-pinctrl.dtsi b/src/arm64/exynos/exynos2200-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..f618ff2
--- /dev/null
@@ -0,0 +1,1765 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+/*
+ * Samsung's Exynos 2200 SoC pin-mux and pin-config device tree source
+ *
+ * Copyright (c) 2025, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include "exynos-pinctrl.h"
+
+&pinctrl_alive {
+       gpa0: gpa0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpa1: gpa1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpa2: gpa2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpa3: gpa3-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpa4: gpa4-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpq0: gpq0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpq1: gpq1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpq2: gpq2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       bt_hostwake: bt-hostwake-pins {
+               samsung,pins = "gpa0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       uart1_bus: uart1-bus-pins {
+               samsung,pins = "gpq0-3", "gpq0-2", "gpq0-1", "gpq0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       wlan_host_wake: wlan-host-wake-pins {
+               samsung,pins = "gpa0-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+};
+
+&pinctrl_cmgp {
+       gpm0: gpm0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm1: gpm1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm2: gpm2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm3: gpm3-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm4: gpm4-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm5: gpm5-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm6: gpm6-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm7: gpm7-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm8: gpm8-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm9: gpm9-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm10: gpm10-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm11: gpm11-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm12: gpm12-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm13: gpm13-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm14: gpm14-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm15: gpm15-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm16: gpm16-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm17: gpm17-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm20: gpm20-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm21: gpm21-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm22: gpm22-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm23: gpm23-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       gpm24: gpm24-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
+
+       hsi2c24_bus: hsi2c24-bus-pins {
+               samsung,pins = "gpm0-0", "gpm0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c25_bus: hsi2c25-bus-pins {
+               samsung,pins = "gpm1-0", "gpm1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c26_bus: hsi2c26-bus-pins {
+               samsung,pins = "gpm2-0", "gpm2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c27_bus: hsi2c27-bus-pins {
+               samsung,pins = "gpm3-0", "gpm3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c28_bus: hsi2c28-bus-pins {
+               samsung,pins = "gpm4-0", "gpm4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c29_bus: hsi2c29-bus-pins {
+               samsung,pins = "gpm5-0", "gpm5-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c30_bus: hsi2c30-bus-pins {
+               samsung,pins = "gpm6-0", "gpm6-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c31_bus: hsi2c31-bus-pins {
+               samsung,pins = "gpm7-0", "gpm7-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c32_bus: hsi2c32-bus-pins {
+               samsung,pins = "gpm8-0", "gpm8-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c33_bus: hsi2c33-bus-pins {
+               samsung,pins = "gpm9-0", "gpm9-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c34_bus: hsi2c34-bus-pins {
+               samsung,pins = "gpm10-0", "gpm10-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c35_bus: hsi2c35-bus-pins {
+               samsung,pins = "gpm11-0", "gpm11-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c36_bus: hsi2c36-bus-pins {
+               samsung,pins = "gpm12-0", "gpm12-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c37_bus: hsi2c37-bus-pins {
+               samsung,pins = "gpm13-0", "gpm13-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c38_bus: hsi2c38-bus-pins {
+               samsung,pins = "gpm23-0", "gpm24-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi12_bus: spi12-bus-pins {
+               samsung,pins = "gpm0-0", "gpm0-1", "gpm1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi12_cs: spi12-cs-pins {
+               samsung,pins = "gpm1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi12_cs_func: spi12-cs-func-pins {
+               samsung,pins = "gpm1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi13_bus: spi13-bus-pins {
+               samsung,pins = "gpm2-0", "gpm2-1", "gpm3-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi13_cs: spi13-cs-pins {
+               samsung,pins = "gpm3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi13_cs_func: spi13-cs-func-pins {
+               samsung,pins = "gpm3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi14_bus: spi14-bus-pins {
+               samsung,pins = "gpm4-0", "gpm4-1", "gpm5-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi14_cs: spi14-cs-pins {
+               samsung,pins = "gpm5-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi14_cs_func: spi14-cs-func-pins {
+               samsung,pins = "gpm5-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi15_bus: spi15-bus-pins {
+               samsung,pins = "gpm6-0", "gpm6-1", "gpm7-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi15_cs: spi15-cs-pins {
+               samsung,pins = "gpm7-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi15_cs_func: spi15-cs-func-pins {
+               samsung,pins = "gpm7-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi16_bus: spi16-bus-pins {
+               samsung,pins = "gpm8-0", "gpm8-1", "gpm9-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi16_cs: spi16-cs-pins {
+               samsung,pins = "gpm9-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi16_cs_func: spi16-cs-func-pins {
+               samsung,pins = "gpm9-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi17_bus: spi17-bus-pins {
+               samsung,pins = "gpm10-0", "gpm10-1", "gpm11-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi17_cs: spi17-cs-pins {
+               samsung,pins = "gpm11-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi17_cs_func: spi17-cs-func-pins {
+               samsung,pins = "gpm11-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi18_bus: spi18-bus-pins {
+               samsung,pins = "gpm12-0", "gpm12-1", "gpm13-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi18_cs: spi18-cs-pins {
+               samsung,pins = "gpm13-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi18_cs_func: spi18-cs-func-pins {
+               samsung,pins = "gpm13-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       uart14_bus_single: uart14-bus-single-pins {
+               samsung,pins = "gpm0-0", "gpm0-1", "gpm2-0", "gpm2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart14_bus_dual: uart14-bus-dual-pins {
+               samsung,pins = "gpm0-0", "gpm0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart15_bus_single: uart15-bus-single-pins {
+               samsung,pins = "gpm3-0", "gpm3-1", "gpm4-0", "gpm4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart15_bus_dual: uart15-bus-dual-pins {
+               samsung,pins = "gpm3-0", "gpm3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart16_bus_single: uart16-bus-single-pins {
+               samsung,pins = "gpm5-0", "gpm5-1", "gpm6-0", "gpm6-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart16_bus_dual: uart16-bus-dual-pins {
+               samsung,pins = "gpm5-0", "gpm5-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart17_bus_single: uart17-bus-single-pins {
+               samsung,pins = "gpm7-0", "gpm7-1", "gpm8-0", "gpm8-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart17_bus_dual: uart17-bus-dual-pins {
+               samsung,pins = "gpm7-0", "gpm7-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart18_bus_single: uart18-bus-single-pins {
+               samsung,pins = "gpm8-0", "gpm8-1", "gpm9-0", "gpm9-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart18_bus_dual: uart18-bus-dual-pins {
+               samsung,pins = "gpm8-0", "gpm8-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart19_bus_single: uart19-bus-single-pins {
+               samsung,pins = "gpm10-0", "gpm10-1", "gpm11-0", "gpm11-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart19_bus_dual: uart19-bus-dual-pins {
+               samsung,pins = "gpm12-0", "gpm12-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart20_bus_single: uart20-bus-single-pins {
+               samsung,pins = "gpm13-0", "gpm13-1", "gpm14-0", "gpm14-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart20_bus_dual: uart20-bus-dual-pins {
+               samsung,pins = "gpm13-0", "gpm13-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+};
+
+&pinctrl_hsi1 {
+       gpf0: gpf0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       pcie0_clkreq: pcie0-clkreq-pins {
+               samsung,pins = "gpf0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       pcie0_perst: pcie0-perst-pins {
+               samsung,pins = "gpf0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie1_clkreq: pcie1-clkreq-pins {
+               samsung,pins = "gpf0-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       pcie1_perst: pcie1-perst-pins {
+               samsung,pins = "gpf0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+};
+
+&pinctrl_hsi1ufs {
+       gpf2: gpf2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       ufs_rst_n: ufs-rst-n-pins {
+               samsung,pins = "gpf2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       ufs_refclk_out: ufs-refclk-out-pins {
+               samsung,pins = "gpf2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV3>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+       };
+};
+
+&pinctrl_peric0 {
+       gpb0: gpb0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb1: gpb1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb2: gpb2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb3: gpb3-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc0: gpc0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc1: gpc1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc2: gpc2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg1: gpg1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg2: gpg2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp4: gpp4-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       aud_i2s0_bus: aud-i2s0-bus-pins {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       aud_i2s1_bus: aud-i2s1-bus-pins {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       aud_i2s2_bus: aud-i2s2-bus-pins {
+               samsung,pins = "gpb2-0", "gpb2-1", "gpb2-2", "gpb2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       aud_i2s3_bus: aud-i2s3-bus-pins {
+               samsung,pins = "gpb3-0", "gpb3-1", "gpb3-2", "gpb3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       aud_i2s3_pci: aud-i2s3-pci-pins {
+               samsung,pins = "gpb3-0", "gpb3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       aud_dsd_bus: aud-dsd-bus-pins {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       decon_0_te: decon-0-te-pins {
+               samsung,pins = "gpg2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
+       };
+
+       hsi2c8_bus: hsi2c8-bus-pins {
+               samsung,pins = "gpp4-0", "gpp4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c9_bus: hsi2c9-bus-pins {
+               samsung,pins = "gpp4-2", "gpp4-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       i3c0_bus: i3c0-bus-pins {
+               samsung,pins = "gpc0-0", "gpc0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       i3c1_bus: i3c1-bus-pins {
+               samsung,pins = "gpc1-0", "gpc1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       i3c2_bus: i3c2-bus-pins {
+               samsung,pins = "gpc2-0", "gpc2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi4_bus: spi4-bus-pins {
+               samsung,pins = "gpp4-2", "gpp4-1", "gpp4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi4_cs: spi4-cs-pins {
+               samsung,pins = "gpp4-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi4_cs_func: spi4-cs-func-pins {
+               samsung,pins = "gpp4-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       uart6_bus_single: uart6-bus-single-pins {
+               samsung,pins = "gpp4-0", "gpp4-1", "gpp4-2", "gpp4-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart6_bus_dual: uart6-bus-dual-pins {
+               samsung,pins = "gpp4-0", "gpp4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+};
+
+&pinctrl_peric1 {
+       gpp7: gpp7-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp8: gpp8-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp9: gpp9-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp10: gpp10-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       hsi2c14_bus: hsi2c14-bus-pins {
+               samsung,pins = "gpp7-0", "gpp7-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c15_bus: hsi2c15-bus-pins {
+               samsung,pins = "gpp7-2", "gpp7-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c16_bus: hsi2c16-bus-pins {
+               samsung,pins = "gpp8-0", "gpp8-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c17_bus: hsi2c17-bus-pins {
+               samsung,pins = "gpp8-2", "gpp8-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c18_bus: hsi2c18-bus-pins {
+               samsung,pins = "gpp9-0", "gpp9-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c19_bus: hsi2c19-bus-pins {
+               samsung,pins = "gpp9-2", "gpp9-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c20_bus: hsi2c20-bus-pins {
+               samsung,pins = "gpp10-0", "gpp10-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c21_bus: hsi2c21-bus-pins {
+               samsung,pins = "gpp10-2", "gpp10-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi7_bus: spi7-bus-pins {
+               samsung,pins = "gpp7-2", "gpp7-1", "gpp7-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi7_cs: spi7-cs-pins {
+               samsung,pins = "gpp7-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi7_cs_func: spi7-cs-func-pins {
+               samsung,pins = "gpp7-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi8_bus: spi8-bus-pins {
+               samsung,pins = "gpp8-2", "gpp8-1", "gpp8-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi8_cs: spi8-cs-pins {
+               samsung,pins = "gpp8-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi8_cs_func: spi8-cs-func-pins {
+               samsung,pins = "gpp8-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi9_bus: spi9-bus-pins {
+               samsung,pins = "gpp9-2", "gpp9-1", "gpp9-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi9_cs: spi9-cs-pins {
+               samsung,pins = "gpp9-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi9_cs_func: spi9-cs-func-pins {
+               samsung,pins = "gpp9-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi10_bus: spi10-bus-pins {
+               samsung,pins = "gpp10-2", "gpp10-1", "gpp10-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi10_cs: spi10-cs-pins {
+               samsung,pins = "gpp10-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi10_cs_func: spi10-cs-func-pins {
+               samsung,pins = "gpp10-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       uart9_bus_single: uart9-bus-single-pins {
+               samsung,pins = "gpp7-3", "gpp7-2", "gpp7-1", "gpp7-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart9_bus_dual: uart9-bus-dual-pins {
+               samsung,pins = "gpp7-0", "gpp7-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart10_bus_single: uart10-bus-single-pins {
+               samsung,pins = "gpp8-3", "gpp8-2", "gpp8-1", "gpp8-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart10_bus_dual: uart10-bus-dual-pins {
+               samsung,pins = "gpp8-0", "gpp8-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart11_bus_single: uart11-bus-single-pins {
+               samsung,pins = "gpp9-3", "gpp9-2", "gpp9-1", "gpp9-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart11_bus_dual: uart11-bus-dual-pins {
+               samsung,pins = "gpp9-0", "gpp9-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart12_bus_single: uart12-bus-single-pins {
+               samsung,pins = "gpp10-3", "gpp10-2", "gpp10-1", "gpp10-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart12_bus_dual: uart12-bus-dual-pins {
+               samsung,pins = "gpp10-0", "gpp10-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+};
+
+&pinctrl_peric2 {
+       gpc3: gpc3-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc4: gpc4-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc5: gpc5-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc6: gpc6-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc7: gpc7-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc8: gpc8-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc9: gpc9-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg0: gpg0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp0: gpp0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp1: gpp1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp2: gpp2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp3: gpp3-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp5: gpp5-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp6: gpp6-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp11: gpp11-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       hsi2c0_bus: hsi2c0-bus-pins {
+               samsung,pins = "gpp0-0", "gpp0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c1_bus: hsi2c1-bus-pins {
+               samsung,pins = "gpp0-2", "gpp0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c2_bus: hsi2c2-bus-pins {
+               samsung,pins = "gpp1-0", "gpp1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c3_bus: hsi2c3-bus-pins {
+               samsung,pins = "gpp1-2", "gpp1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c4_bus: hsi2c4-bus-pins {
+               samsung,pins = "gpp2-0", "gpp2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c5_bus: hsi2c5-bus-pins {
+               samsung,pins = "gpp2-2", "gpp2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c6_bus: hsi2c6-bus-pins {
+               samsung,pins = "gpp3-0", "gpp3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c7_bus: hsi2c7-bus-pins {
+               samsung,pins = "gpp3-2", "gpp3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c10_bus: hsi2c10-bus-pins {
+               samsung,pins = "gpp5-0", "gpp5-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c11_bus: hsi2c11-bus-pins {
+               samsung,pins = "gpp5-2", "gpp5-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c12_bus: hsi2c12-bus-pins {
+               samsung,pins = "gpp6-0", "gpp6-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c13_bus: hsi2c13-bus-pins {
+               samsung,pins = "gpp6-2", "gpp6-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi2c22_bus: hsi2c22-bus-pins {
+               samsung,pins = "gpp11-0", "gpp11-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       i3c3_bus: i3c3-bus-pins {
+               samsung,pins = "gpc3-0", "gpc3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       i3c4_bus: i3c4-bus-pins {
+               samsung,pins = "gpc4-0", "gpc4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       i3c5_bus: i3c5-bus-pins {
+               samsung,pins = "gpc5-0", "gpc5-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       i3c6_bus: i3c6-bus-pins {
+               samsung,pins = "gpc6-0", "gpc6-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       i3c7_bus: i3c7-bus-pins {
+               samsung,pins = "gpc7-0", "gpc7-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       i3c8_bus: i3c8-bus-pins {
+               samsung,pins = "gpc8-0", "gpc8-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       i3c9_bus: i3c9-bus-pins {
+               samsung,pins = "gpc9-0", "gpc9-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       i3c10_bus: i3c10-bus-pins {
+               samsung,pins = "gpp2-2", "gpp2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       i3c11_bus: i3c11-bus-pins {
+               samsung,pins = "gpp3-2", "gpp3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       hsi223_bus: hsi2c23-bus-pins {
+               samsung,pins = "gpp11-2", "gpp11-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi0_bus: spi0-bus-pins {
+               samsung,pins = "gpp0-2", "gpp0-1", "gpp0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi0_cs: spi0-cs-pins {
+               samsung,pins = "gpp0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi0_cs_func: spi0-cs-func-pins {
+               samsung,pins = "gpp0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi1_bus: spi1-bus-pins {
+               samsung,pins = "gpp1-2", "gpp1-1", "gpp1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi1_cs: spi1-cs-pins {
+               samsung,pins = "gpp1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi1_cs_func: spi1-cs-func-pins {
+               samsung,pins = "gpp1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi2_bus: spi2-bus-pins {
+               samsung,pins = "gpp2-2", "gpp2-1", "gpp2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi2_cs: spi2-cs-pins {
+               samsung,pins = "gpp2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi2_cs_func: spi2-cs-func-pins {
+               samsung,pins = "gpp2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi3_bus: spi3-bus-pins {
+               samsung,pins = "gpp3-2", "gpp3-1", "gpp3-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi3_cs: spi3-cs-pins {
+               samsung,pins = "gpp3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi3_cs_func: spi3-cs-func-pins {
+               samsung,pins = "gpp3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi5_bus: spi5-bus-pins {
+               samsung,pins = "gpp5-2", "gpp5-1", "gpp5-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi5_cs: spi5-cs-pins {
+               samsung,pins = "gpp5-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi5_cs_func: spi5-cs-func-pins {
+               samsung,pins = "gpp5-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi6_bus: spi6-bus-pins {
+               samsung,pins = "gpp6-2", "gpp6-1", "gpp6-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi6_cs: spi6-cs-pins {
+               samsung,pins = "gpp6-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi6_cs_func: spi6-cs-func-pins {
+               samsung,pins = "gpp6-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi11_bus: spi11-bus-pins {
+               samsung,pins = "gpp11-2", "gpp11-1", "gpp11-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi11_cs: spi11-cs-pins {
+               samsung,pins = "gpp11-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       spi11_cs_func: spi11-cs-func-pins {
+               samsung,pins = "gpp11-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+
+       uart0_bus_single: uart0-bus-single-pins {
+               samsung,pins = "gpg0-2", "gpg0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       uart2_bus_single: uart2-bus-single-pins {
+               samsung,pins = "gpp0-0", "gpp0-1", "gpp0-2", "gpp0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart2_bus_dual: uart2-bus-dual-pins {
+               samsung,pins = "gpp0-0", "gpp0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart3_bus_single: uart3-bus-single-pins {
+               samsung,pins = "gpp1-0", "gpp1-1", "gpp1-2", "gpp1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart3_bus_dual: uart3-bus-dual-pins {
+               samsung,pins = "gpp1-0", "gpp1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart4_bus_single: uart4-bus-single-pins {
+               samsung,pins = "gpp2-0", "gpp2-1", "gpp2-2", "gpp2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart4_bus_dual: uart4-bus-dual-pins {
+               samsung,pins = "gpp2-0", "gpp2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart5_bus_single: uart5-bus-single-pins {
+               samsung,pins = "gpp3-0", "gpp3-1", "gpp3-2", "gpp3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart5_bus_dual: uart5-bus-dual-pins {
+               samsung,pins = "gpp3-0", "gpp3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart7_bus_single: uart7-bus-single-pins {
+               samsung,pins = "gpp5-0", "gpp5-1", "gpp5-2", "gpp5-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart7_bus_dual: uart7-bus-dual-pins {
+               samsung,pins = "gpp5-0", "gpp5-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart8_bus_single: uart8-bus-single-pins {
+               samsung,pins = "gpp6-3", "gpp6-2", "gpp6-1", "gpp6-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart8_bus_dual: uart8-bus-dual-pins {
+               samsung,pins = "gpp6-0", "gpp6-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart13_bus_single: uart13-bus-single-pins {
+               samsung,pins = "gpp11-3", "gpp11-2", "gpp11-1", "gpp11-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart13_bus_dual: uart13-bus-dual-pins {
+               samsung,pins = "gpp11-0", "gpp11-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+};
+
+&pinctrl_ufs {
+       gpf1: gpf1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+};
+
+&pinctrl_vts {
+       gpv0: gpv0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       amic_pdm0_bus: amic-pdm0-bus-pins {
+               samsung,pins = "gpv0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+       };
+
+       amic_pdm1_bus: amic-pdm1-bus-pins {
+               samsung,pins = "gpv0-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+       };
+
+       amic_pdm2_bus: amic-pdm2-bus-pins {
+               samsung,pins = "gpv0-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+       };
+
+       dmic_bus_clk0: dmic-bus-clk0-pins {
+               samsung,pins = "gpv0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+       };
+
+       dmic_bus_clk1: dmic-bus-clk1-pins {
+               samsung,pins = "gpv0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+       };
+
+       dmic_bus_clk2: dmic-bus-clk2-pins {
+               samsung,pins = "gpv0-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+       };
+
+       dmic_pdm0_bus: dmic-pdm0-bus-pins {
+               samsung,pins = "gpv0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+       };
+
+       dmic_pdm1_bus: dmic-pdm1-bus-pins {
+               samsung,pins = "gpv0-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+       };
+
+       dmic_pdm2_bus: dmic-pdm2-bus-pins {
+               samsung,pins = "gpv0-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+       };
+};
diff --git a/src/arm64/exynos/exynos2200.dtsi b/src/arm64/exynos/exynos2200.dtsi
new file mode 100644 (file)
index 0000000..6b5ac02
--- /dev/null
@@ -0,0 +1,561 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+/*
+ * Samsung's Exynos 2200 SoC device tree source
+ *
+ * Copyright (c) 2025, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
+ */
+
+#include <dt-bindings/clock/samsung,exynos2200-cmu.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       compatible = "samsung,exynos2200";
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       interrupt-parent = <&gic>;
+
+       aliases {
+               pinctrl0 = &pinctrl_alive;
+               pinctrl1 = &pinctrl_cmgp;
+               pinctrl2 = &pinctrl_hsi1;
+               pinctrl3 = &pinctrl_ufs;
+               pinctrl4 = &pinctrl_hsi1ufs;
+               pinctrl5 = &pinctrl_peric0;
+               pinctrl6 = &pinctrl_peric1;
+               pinctrl7 = &pinctrl_peric2;
+               pinctrl8 = &pinctrl_vts;
+       };
+
+       xtcxo: clock-1 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-output-names = "oscclk";
+       };
+
+       ext_26m: clock-2 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-output-names = "ext-26m";
+       };
+
+       ext_200m: clock-3 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-output-names = "ext-200m";
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+
+                               core2 {
+                                       cpu = <&cpu2>;
+                               };
+
+                               core3 {
+                                       cpu = <&cpu3>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&cpu4>;
+                               };
+
+                               core1 {
+                                       cpu = <&cpu5>;
+                               };
+
+                               core2 {
+                                       cpu = <&cpu6>;
+                               };
+                       };
+
+                       cluster2 {
+                               core0 {
+                                       cpu = <&cpu7>;
+                               };
+                       };
+               };
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a510";
+                       reg = <0>;
+                       capacity-dmips-mhz = <260>;
+                       dynamic-power-coefficient = <189>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&little_cpu_sleep>;
+               };
+
+               cpu1: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a510";
+                       reg = <0x100>;
+                       capacity-dmips-mhz = <260>;
+                       dynamic-power-coefficient = <189>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&little_cpu_sleep>;
+               };
+
+               cpu2: cpu@200 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a510";
+                       reg = <0x200>;
+                       capacity-dmips-mhz = <260>;
+                       dynamic-power-coefficient = <189>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&little_cpu_sleep>;
+               };
+
+               cpu3: cpu@300 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a510";
+                       reg = <0x300>;
+                       capacity-dmips-mhz = <260>;
+                       dynamic-power-coefficient = <189>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&little_cpu_sleep>;
+               };
+
+               cpu4: cpu@400 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a710";
+                       reg = <0x400>;
+                       capacity-dmips-mhz = <380>;
+                       dynamic-power-coefficient = <560>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&big_cpu_sleep>;
+               };
+
+               cpu5: cpu@500 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a710";
+                       reg = <0x500>;
+                       capacity-dmips-mhz = <380>;
+                       dynamic-power-coefficient = <560>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&big_cpu_sleep>;
+               };
+
+               cpu6: cpu@600 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a710";
+                       reg = <0x600>;
+                       capacity-dmips-mhz = <380>;
+                       dynamic-power-coefficient = <560>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&big_cpu_sleep>;
+               };
+
+               cpu7: cpu@700 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-x2";
+                       reg = <0x700>;
+                       capacity-dmips-mhz = <488>;
+                       dynamic-power-coefficient = <765>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&prime_cpu_sleep>;
+               };
+
+               idle-states {
+                       entry-method = "psci";
+
+                       little_cpu_sleep: cpu-sleep-0 {
+                               compatible = "arm,idle-state";
+                               idle-state-name = "c2";
+                               entry-latency-us = <70>;
+                               exit-latency-us = <170>;
+                               min-residency-us = <2000>;
+                               arm,psci-suspend-param = <0x10000>;
+                       };
+
+                       big_cpu_sleep: cpu-sleep-1 {
+                               compatible = "arm,idle-state";
+                               idle-state-name = "c2";
+                               entry-latency-us = <235>;
+                               exit-latency-us = <220>;
+                               min-residency-us = <3500>;
+                               arm,psci-suspend-param = <0x10000>;
+                       };
+
+                       prime_cpu_sleep: cpu-sleep-2 {
+                               compatible = "arm,idle-state";
+                               idle-state-name = "c2";
+                               entry-latency-us = <150>;
+                               exit-latency-us = <190>;
+                               min-residency-us = <2500>;
+                               arm,psci-suspend-param = <0x10000>;
+                       };
+               };
+       };
+
+       pmu-a510 {
+               compatible = "arm,cortex-a510-pmu";
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_cluster0>;
+       };
+
+       pmu-a710 {
+               compatible = "arm,cortex-a710-pmu";
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_cluster1>;
+       };
+
+       pmu-x2 {
+               compatible = "arm,cortex-x2-pmu";
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_cluster2>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       soc {
+               compatible = "simple-bus";
+               ranges;
+
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               chipid@10000000 {
+                       compatible = "samsung,exynos2200-chipid",
+                                    "samsung,exynos850-chipid";
+                       reg = <0x0 0x10000000 0x0 0x24>;
+               };
+
+               cmu_peris: clock-controller@10020000 {
+                       compatible = "samsung,exynos2200-cmu-peris";
+                       reg = <0x0 0x10020000 0x0 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&cmu_top CLK_DOUT_TCXO_DIV3>,
+                                <&cmu_top CLK_DOUT_CMU_PERIS_NOC>,
+                                <&cmu_top CLK_DOUT_CMU_PERIS_GIC>;
+                       clock-names = "tcxo_div3",
+                                     "noc",
+                                     "gic";
+               };
+
+               mct_peris: timer@10040000 {
+                       compatible = "samsung,exynos2200-mct-peris",
+                                    "samsung,exynos4210-mct";
+                       reg = <0x0 0x10040000 0x0 0x800>;
+                       clocks = <&cmu_top CLK_DOUT_TCXO_DIV3>, <&cmu_peris CLK_MOUT_PERIS_GIC>;
+                       clock-names = "fin_pll", "mct";
+                       interrupts = <GIC_SPI 943 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 944 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 945 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 946 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 947 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 948 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 949 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 950 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 951 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 952 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 953 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 954 IRQ_TYPE_LEVEL_HIGH 0>;
+                       status = "disabled";
+               };
+
+               gic: interrupt-controller@10200000 {
+                       compatible = "arm,gic-v3";
+                       reg = <0x0 0x10200000 0x0 0x10000>,     /* GICD */
+                             <0x0 0x10240000 0x0 0x200000>;    /* GICR * 8 */
+
+                       #interrupt-cells = <4>;
+                       interrupt-controller;
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH 0>;
+
+                       ppi-partitions {
+                               ppi_cluster0: interrupt-partition-0 {
+                                       affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
+                               };
+
+                               ppi_cluster1: interrupt-partition-1 {
+                                       affinity = <&cpu4 &cpu5 &cpu6>;
+                               };
+
+                               ppi_cluster2: interrupt-partition-2 {
+                                       affinity = <&cpu7>;
+                               };
+                       };
+               };
+
+               cmu_peric0: clock-controller@10400000 {
+                       compatible = "samsung,exynos2200-cmu-peric0";
+                       reg = <0x0 0x10400000 0x0 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_top CLK_DOUT_CMU_PERIC0_NOC>,
+                                <&cmu_top CLK_DOUT_CMU_PERIC0_IP0>,
+                                <&cmu_top CLK_DOUT_CMU_PERIC0_IP1>;
+                       clock-names = "oscclk", "noc", "ip0", "ip1";
+               };
+
+               syscon_peric0: syscon@10420000 {
+                       compatible = "samsung,exynos2200-peric0-sysreg", "syscon";
+                       reg = <0x0 0x10420000 0x0 0x2000>;
+               };
+
+               pinctrl_peric0: pinctrl@10430000 {
+                       compatible = "samsung,exynos2200-pinctrl";
+                       reg = <0x0 0x10430000 0x0 0x1000>;
+               };
+
+               cmu_peric1: clock-controller@10700000 {
+                       compatible = "samsung,exynos2200-cmu-peric1";
+                       reg = <0x0 0x10700000 0x0 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_top CLK_DOUT_CMU_PERIC1_NOC>,
+                                <&cmu_top CLK_DOUT_CMU_PERIC1_IP0>,
+                                <&cmu_top CLK_DOUT_CMU_PERIC1_IP1>;
+                       clock-names = "oscclk", "noc", "ip0", "ip1";
+               };
+
+               syscon_peric1: syscon@10720000 {
+                       compatible = "samsung,exynos2200-peric1-sysreg", "syscon";
+                       reg = <0x0 0x10720000 0x0 0x2000>;
+               };
+
+               pinctrl_peric1: pinctrl@10730000 {
+                       compatible = "samsung,exynos2200-pinctrl";
+                       reg = <0x0 0x10730000 0x0 0x1000>;
+               };
+
+               cmu_hsi0: clock-controller@10a00000 {
+                       compatible = "samsung,exynos2200-cmu-hsi0";
+                       reg = <0x0 0x10a00000 0x0 0x8000>;
+                       #clock-cells = <1>;
+               };
+
+               usb32drd: phy@10aa0000 {
+                       compatible = "samsung,exynos2200-usb32drd-phy";
+                       reg = <0x0 0x10aa0000 0x0 0x10000>;
+
+                       clocks = <&cmu_hsi0 CLK_MOUT_HSI0_NOC>;
+                       clock-names = "phy";
+
+                       #phy-cells = <1>;
+                       phys = <&usb_hsphy>;
+                       phy-names = "hs";
+
+                       samsung,pmu-syscon = <&pmu_system_controller>;
+
+                       status = "disabled";
+               };
+
+               usb_hsphy: phy@10ab0000 {
+                       compatible = "samsung,exynos2200-eusb2-phy";
+                       reg = <0x0 0x10ab0000 0x0 0x10000>;
+
+                       clocks = <&cmu_hsi0 CLK_MOUT_HSI0_USB32DRD>,
+                                <&cmu_hsi0 CLK_MOUT_HSI0_NOC>,
+                                <&cmu_hsi0 CLK_DOUT_DIV_CLK_HSI0_EUSB>;
+                       clock-names = "ref", "bus", "ctrl";
+
+                       #phy-cells = <0>;
+
+                       status = "disabled";
+               };
+
+               usb: usb@10b00000 {
+                       compatible = "samsung,exynos2200-dwusb3";
+                       ranges = <0x0 0x0 0x10b00000 0x10000>;
+
+                       clocks = <&cmu_hsi0 CLK_MOUT_HSI0_NOC>;
+                       clock-names = "link_aclk";
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       status = "disabled";
+
+                       usb_dwc3: usb@0 {
+                               compatible = "snps,dwc3";
+                               reg = <0x0 0x10000>;
+
+                               clocks = <&cmu_hsi0 CLK_MOUT_HSI0_USB32DRD>;
+                               clock-names = "ref";
+
+                               interrupts = <GIC_SPI 485 IRQ_TYPE_LEVEL_HIGH 0>;
+
+                               phys = <&usb32drd 0>;
+                               phy-names = "usb2-phy";
+
+                               snps,dis-u2-freeclk-exists-quirk;
+                               snps,gfladj-refclk-lpm-sel-quirk;
+                               snps,has-lpm-erratum;
+                               snps,quirk-frame-length-adjustment = <0x20>;
+                               snps,usb3_lpm_capable;
+                       };
+               };
+
+               cmu_ufs: clock-controller@11000000 {
+                       compatible = "samsung,exynos2200-cmu-ufs";
+                       reg = <0x0 0x11000000 0x0 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_top CLK_DOUT_CMU_UFS_NOC>,
+                                <&cmu_top CLK_MOUT_CMU_UFS_MMC_CARD>,
+                                <&cmu_top CLK_DOUT_CMU_UFS_UFS_EMBD>;
+                       clock-names = "oscclk", "noc", "mmc", "ufs";
+               };
+
+               syscon_ufs: syscon@11020000 {
+                       compatible = "samsung,exynos2200-ufs-sysreg", "syscon";
+                       reg = <0x0 0x11020000 0x0 0x2000>;
+               };
+
+               pinctrl_ufs: pinctrl@11040000 {
+                       compatible = "samsung,exynos2200-pinctrl";
+                       reg = <0x0 0x11040000 0x0 0x1000>;
+               };
+
+               pinctrl_hsi1ufs: pinctrl@11060000 {
+                       compatible = "samsung,exynos2200-pinctrl";
+                       reg = <0x0 0x11060000 0x0 0x1000>;
+               };
+
+               pinctrl_hsi1: pinctrl@11240000 {
+                       compatible = "samsung,exynos2200-pinctrl";
+                       reg = <0x0 0x11240000 0x0 0x1000>;
+               };
+
+               cmu_peric2: clock-controller@11c00000 {
+                       compatible = "samsung,exynos2200-cmu-peric2";
+                       reg = <0x0 0x11c00000 0x0 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_top CLK_DOUT_CMU_PERIC2_NOC>,
+                                <&cmu_top CLK_DOUT_CMU_PERIC2_IP0>,
+                                <&cmu_top CLK_DOUT_CMU_PERIC2_IP1>;
+                       clock-names = "oscclk", "noc", "ip0", "ip1";
+               };
+
+               syscon_peric2: syscon@11c20000 {
+                       compatible = "samsung,exynos2200-peric2-sysreg", "syscon";
+                       reg = <0x0 0x11c20000 0x0 0x4000>;
+               };
+
+               pinctrl_peric2: pinctrl@11c30000 {
+                       compatible = "samsung,exynos2200-pinctrl";
+                       reg = <0x0 0x11c30000 0x0 0x1000>;
+               };
+
+               cmu_cmgp: clock-controller@14e00000 {
+                       compatible = "samsung,exynos2200-cmu-cmgp";
+                       reg = <0x0 0x14e00000 0x0 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_alive CLK_DOUT_ALIVE_CMGP_NOC>,
+                                <&cmu_alive CLK_DOUT_ALIVE_CMGP_PERI>;
+                       clock-names = "oscclk", "noc", "peri";
+               };
+
+               syscon_cmgp: syscon@14e20000 {
+                       compatible = "samsung,exynos2200-cmgp-sysreg", "syscon";
+                       reg = <0x0 0x14e20000 0x0 0x2000>;
+               };
+
+               pinctrl_cmgp: pinctrl@14e30000 {
+                       compatible = "samsung,exynos2200-pinctrl";
+                       reg = <0x0 0x14e30000 0x0 0x1000>;
+
+                       wakeup-interrupt-controller {
+                               compatible = "samsung,exynos2200-wakeup-eint",
+                                            "samsung,exynos850-wakeup-eint",
+                                            "samsung,exynos7-wakeup-eint";
+                       };
+               };
+
+               cmu_vts: clock-controller@15300000 {
+                       compatible = "samsung,exynos2200-cmu-vts";
+                       reg = <0x0 0x15300000 0x0 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_top CLK_DOUT_CMU_VTS_DMIC>;
+                       clock-names = "oscclk", "dmic";
+               };
+
+               pinctrl_vts: pinctrl@15320000 {
+                       compatible = "samsung,exynos2200-pinctrl";
+                       reg = <0x0 0x15320000 0x0 0x1000>;
+               };
+
+               cmu_alive: clock-controller@15800000 {
+                       compatible = "samsung,exynos2200-cmu-alive";
+                       reg = <0x0 0x15800000 0x0 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_top CLK_DOUT_CMU_ALIVE_NOC>;
+                       clock-names = "oscclk", "noc";
+               };
+
+               pinctrl_alive: pinctrl@15850000 {
+                       compatible = "samsung,exynos2200-pinctrl";
+                       reg = <0x0 0x15850000 0x0 0x1000>;
+
+                       wakeup-interrupt-controller {
+                               compatible = "samsung,exynos2200-wakeup-eint",
+                                            "samsung,exynos850-wakeup-eint",
+                                            "samsung,exynos7-wakeup-eint";
+                       };
+               };
+
+               pmu_system_controller: system-controller@15860000 {
+                       compatible = "samsung,exynos2200-pmu",
+                                    "samsung,exynos7-pmu", "syscon";
+                       reg = <0x0 0x15860000 0x0 0x10000>;
+
+                       reboot: syscon-reboot {
+                               compatible = "syscon-reboot";
+                               offset = <0x3c00>; /* SYSTEM_CONFIGURATION */
+                               mask = <0x2>; /* SWRESET_SYSTEM */
+                               value = <0x2>; /* reset value */
+                       };
+               };
+
+               cmu_top: clock-controller@1a320000 {
+                       compatible = "samsung,exynos2200-cmu-top";
+                       reg = <0x0 0x1a320000 0x0 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>;
+                       clock-names = "oscclk";
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>,
+                            <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>,
+                            <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>,
+                            <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>;
+               /*
+                * Non-updatable, broken stock Samsung bootloader does not
+                * configure CNTFRQ_EL0
+                */
+               clock-frequency = <25600000>;
+       };
+};
+
+#include "exynos2200-pinctrl.dtsi"
index 8f02de8480b63d0a3a7609ac947792aae8047ee2..a1fb354dea9fd7925ca413479af53bb441687663 100644 (file)
@@ -85,7 +85,7 @@
                };
        };
 
-       i2c_max98504: i2c-gpio-0 {
+       i2c_max98504: i2c-13 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpd0 1 GPIO_ACTIVE_HIGH>;
                scl-gpios = <&gpd0 0 GPIO_ACTIVE_HIGH>;
index 61eec1aff32ef397c69ee3f0cba8050755f74fc6..b8ce433b93b1b488da31bbe4846f8092243611ad 100644 (file)
@@ -89,7 +89,7 @@
        memory@40000000 {
                device_type = "memory";
                reg = <0x0 0x40000000 0x3d800000>,
-                     <0x0 0x80000000 0x7d800000>;
+                     <0x0 0x80000000 0x40000000>;
        };
 
        pwrseq_mmc1: pwrseq-mmc1 {
index eb97dcc415423f405d7df9b9869b2db3432fb483..b1d9eff5a82702cd7c9797b2124486207e03ad89 100644 (file)
@@ -78,7 +78,7 @@
        memory@40000000 {
                device_type = "memory";
                reg = <0x0 0x40000000 0x3e400000>,
-                     <0x0 0x80000000 0xbe400000>;
+                     <0x0 0x80000000 0x80000000>;
        };
 
        pwrseq_mmc1: pwrseq-mmc1 {
index 5cba8c9bb403405b2d9721ab8cf9d61e3d5faf95..d5d347623b9038b71da55dccdc9084aeaf71618c 100644 (file)
                                phys = <&usbdrd_phy 0>;
 
                                usb-role-switch;
+                               snps,usb2-gadget-lpm-disable;
                        };
                };
 
index 2cb8041c8a9f86cc3e2faf829581f9e305233af3..0fdf2062930a9988d455c40a5ad19249941af6ca 100644 (file)
                                samsung,uart-fifosize = <256>;
                                status = "disabled";
                        };
+
+                       spi_0: spi@10880000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10880000 0x30>;
+                               interrupts = <GIC_SPI 764 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi0_bus &spi0_cs_func>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI00_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma0 1>, <&pdma0 0>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <256>;
+                               status = "disabled";
+                       };
                };
 
                usi_1: usi@108a00c0 {
                                samsung,uart-fifosize = <256>;
                                status = "disabled";
                        };
+
+                       spi_1: spi@108a0000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x108a0000 0x30>;
+                               interrupts = <GIC_SPI 766 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi1_bus &spi1_cs_func>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI01_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma0 3>, <&pdma0 2>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <256>;
+                               status = "disabled";
+                       };
                };
 
                usi_2: usi@108c00c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_2: spi@108c0000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x108c0000 0x30>;
+                               interrupts = <GIC_SPI 768 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi2_bus &spi2_cs_func>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI02_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma0 5>, <&pdma0 4>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_3: usi@108e00c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_3: spi@108e0000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x108e0000 0x30>;
+                               interrupts = <GIC_SPI 770 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi3_bus &spi3_cs_func>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI03_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma0 7>, <&pdma0 6>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_4: usi@109000c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_4: spi@10900000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10900000 0x30>;
+                               interrupts = <GIC_SPI 772 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi4_bus &spi4_cs_func>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI04_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma0 9>, <&pdma0 8>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_5: usi@109200c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_5: spi@10920000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10920000 0x30>;
+                               interrupts = <GIC_SPI 774 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi5_bus &spi5_cs_func>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI05_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma0 11>, <&pdma0 10>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_6: usi@109400c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_6: spi@10940000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10940000 0x30>;
+                               interrupts = <GIC_SPI 776 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi6_bus &spi6_cs_func>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI06_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma0 13>, <&pdma0 12>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_7: usi@109600c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_7: spi@10960000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10960000 0x30>;
+                               interrupts = <GIC_SPI 778 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi7_bus &spi7_cs_func>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI07_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma0 15>, <&pdma0 14>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_8: usi@109800c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_8: spi@10980000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10980000 0x30>;
+                               interrupts = <GIC_SPI 780 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi8_bus &spi8_cs_func>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI08_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma0 17>, <&pdma0 16>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
+
                };
 
                pwm: pwm@109b0000 {
                                samsung,uart-fifosize = <256>;
                                status = "disabled";
                        };
+
+                       spi_9: spi@10c80000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10c80000 0x30>;
+                               interrupts = <GIC_SPI 787 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi9_bus &spi9_cs_func>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI09_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma1 1>, <&pdma1 0>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <256>;
+                               status = "disabled";
+                       };
                };
 
                usi_10: usi@10ca00c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_10: spi@10ca0000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10ca0000 0x30>;
+                               interrupts = <GIC_SPI 789 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi10_bus &spi10_cs_func>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI10_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma1 3>, <&pdma1 2>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_11: usi@10cc00c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_11: spi@10cc0000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10cc0000 0x30>;
+                               interrupts = <GIC_SPI 791 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi11_bus &spi11_cs_func>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI11_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma1 5>, <&pdma1 4>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_12: usi@10ce00c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_12: spi@10ce0000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10ce0000 0x30>;
+                               interrupts = <GIC_SPI 793 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi12_bus &spi12_cs_func>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI12_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma1 7>, <&pdma1 6>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_13: usi@10d000c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_13: spi@10d00000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10d00000 0x30>;
+                               interrupts = <GIC_SPI 795 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi13_bus &spi13_cs_func>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI13_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma1 9>, <&pdma1 8>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_14: usi@10d200c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_14: spi@10d20000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10d20000 0x30>;
+                               interrupts = <GIC_SPI 797 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi14_bus &spi14_cs_func>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI14_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma1 11>, <&pdma1 10>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_15: usi@10d400c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_15: spi@10d40000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10d40000 0x30>;
+                               interrupts = <GIC_SPI 799 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi15_bus &spi15_cs_func>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI15_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma1 13>, <&pdma1 12>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_16: usi@10d600c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_16: spi@10d60000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10d60000 0x30>;
+                               interrupts = <GIC_SPI 801 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi16_bus &spi16_cs_func>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI16_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma1 15>, <&pdma1 14>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                usi_17: usi@10d800c0 {
                                samsung,uart-fifosize = <64>;
                                status = "disabled";
                        };
+
+                       spi_17: spi@10d80000 {
+                               compatible = "samsung,exynosautov920-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x10d80000 0x30>;
+                               interrupts = <GIC_SPI 803 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&spi17_bus &spi17_cs_func>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI17_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               samsung,spi-src-clk = <0>;
+                               dmas = <&pdma1 17>, <&pdma1 16>;
+                               dma-names = "tx", "rx";
+                               num-cs = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               fifo-depth = <64>;
+                               status = "disabled";
+                       };
                };
 
                cmu_top: clock-controller@11000000 {
                        interrupts = <GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               cmu_hsi2: clock-controller@16b00000 {
+                       compatible = "samsung,exynosautov920-cmu-hsi2";
+                       reg = <0x16b00000 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_top DOUT_CLKCMU_HSI2_NOC>,
+                                <&cmu_top DOUT_CLKCMU_HSI2_NOC_UFS>,
+                                <&cmu_top DOUT_CLKCMU_HSI2_UFS_EMBD>,
+                                <&cmu_top DOUT_CLKCMU_HSI2_ETHERNET>;
+                       clock-names = "oscclk",
+                                     "noc",
+                                     "ufs",
+                                     "embd",
+                                     "ethernet";
+               };
+
                pinctrl_hsi2: pinctrl@16c10000 {
                        compatible = "samsung,exynosautov920-pinctrl";
                        reg = <0x16c10000 0x10000>;
index d6ddcc13f7b20c6dfbe92e86abafe965870d0c78..84ff3e047d3b31b5f96d4d6c78ec933bb05f3e6b 100644 (file)
                };
        };
 
+       reboot-mode {
+               compatible = "nvmem-reboot-mode";
+               nvmem-cells = <&nvmem_reboot_mode>;
+               nvmem-cell-names = "reboot-mode";
+               mode-bootloader = <0x800000fc>;
+               mode-charge = <0x8000000a>;
+               mode-dm-verity-device-corrupted = <0x80000050>;
+               mode-fastboot = <0x800000fa>;
+               mode-reboot-ab-update = <0x80000052>;
+               mode-recovery = <0x800000ff>;
+               mode-rescue = <0x800000f9>;
+               mode-shutdown-thermal = <0x80000051>;
+               mode-shutdown-thermal-battery = <0x80000051>;
+       };
+
        /* TODO: Remove this once PMIC is implemented  */
        reg_placeholder: regulator-0 {
                compatible = "regulator-fixed";
        };
 };
 
+&acpm_ipc {
+       pmic {
+               compatible = "samsung,s2mpg10-pmic";
+               interrupts-extended = <&gpa0 6 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int>;
+               system-power-controller;
+               wakeup-source;
+
+               regulators {
+               };
+       };
+};
+
 &ext_24_5m {
        clock-frequency = <24576000>;
 };
                        };
                };
        };
+
+       pmic@66 {
+               compatible = "maxim,max77759";
+               reg = <0x66>;
+
+               pinctrl-0 = <&if_pmic_int>;
+               pinctrl-names = "default";
+               interrupts-extended = <&gpa8 3 IRQ_TYPE_LEVEL_LOW>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+
+               gpio {
+                       compatible = "maxim,max77759-gpio";
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       /*
+                        * "Human-readable name [SIGNAL_LABEL]" where the
+                        * latter comes from the schematic
+                        */
+                       gpio-line-names = "OTG boost [OTG_BOOST_EN]",
+                                         "max20339 IRQ [MW_OVP_INT_L]";
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               nvmem-0 {
+                       compatible = "maxim,max77759-nvmem";
+
+                       nvmem-layout {
+                               compatible = "fixed-layout";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               nvmem_reboot_mode: reboot-mode@0 {
+                                       reg = <0x0 0x4>;
+                               };
+
+                               boot-reason@4 {
+                                       reg = <0x4 0x4>;
+                               };
+
+                               shutdown-user-flag@8 {
+                                       reg = <0x8 0x1>;
+                               };
+
+                               rsoc@a {
+                                       reg = <0xa 0x2>;
+                               };
+                       };
+               };
+       };
 };
 
 &pinctrl_far_alive {
                samsung,pin-pud = <GS101_PIN_PULL_UP>;
                samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
        };
+
+       if_pmic_int: if-pmic-int-pins {
+               samsung,pins = "gpa8-3";
+               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 {
+       pmic_int: pmic-int-pins {
+               samsung,pins = "gpa0-6";
+               samsung,pin-function = <GS101_PIN_FUNC_EINT>;
+               samsung,pin-pud = <GS101_PIN_PULL_NONE>;
+       };
+
        key_power: key-power-pins {
                samsung,pins = "gpa10-1";
                samsung,pin-function = <GS101_PIN_FUNC_EINT>;
index 48c691fd0a3ae430b5d66b402610d23b72b144d7..c0f8c25861a9ddb5bbd256b62c66a645922ca74e 100644 (file)
                                idle-state-name = "c2";
                                compatible = "arm,idle-state";
                                arm,psci-suspend-param = <0x0010000>;
+                               local-timer-stop;
                                entry-latency-us = <70>;
                                exit-latency-us = <160>;
                                min-residency-us = <2000>;
                                idle-state-name = "c2";
                                compatible = "arm,idle-state";
                                arm,psci-suspend-param = <0x0010000>;
+                               local-timer-stop;
                                entry-latency-us = <150>;
                                exit-latency-us = <190>;
                                min-residency-us = <2500>;
                                idle-state-name = "c2";
                                compatible = "arm,idle-state";
                                arm,psci-suspend-param = <0x0010000>;
+                               local-timer-stop;
                                entry-latency-us = <235>;
                                exit-latency-us = <220>;
                                min-residency-us = <3500>;
                                 <&cmu_hsi2 CLK_GOUT_HSI2_SYSREG_HSI2_PCLK>;
                        clock-names = "core_clk", "sclk_unipro_main", "fmp",
                                      "aclk", "pclk", "sysreg";
+                       dma-coherent;
                        freq-table-hz = <0 0>, <0 0>, <0 0>, <0 0>, <0 0>, <0 0>;
                        pinctrl-0 = <&ufs_rst_n &ufs_refclk_out>;
                        pinctrl-names = "default";
                        };
 
                        reboot: syscon-reboot {
-                               compatible = "syscon-reboot";
-                               offset = <0x3a00>; /* SYSTEM_CONFIGURATION */
-                               mask = <0x2>; /* SWRESET_SYSTEM */
-                               value = <0x2>; /* reset value */
+                               compatible = "google,gs101-reboot";
                        };
 
                        reboot-mode {
                                offset = <0x0810>; /* EXYNOS_PMU_SYSIP_DAT0 */
                                mode-bootloader = <0xfc>;
                                mode-charge = <0x0a>;
+                               mode-dm-verity-device-corrupted = <0x50>;
                                mode-fastboot = <0xfa>;
                                mode-reboot-ab-update = <0x52>;
                                mode-recovery = <0xff>;
index 03748a7f657b33e47c6d871447ee7dba22a41592..e04483fdb9089ac513c4fdecb08aa97333e09e78 100644 (file)
        wp-gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
 };
 
+&sfp1 {
+       status = "okay";
+};
+
+&sfp1_i2c {
+       status = "okay";
+};
+
 &usb2 {
        status = "okay";
 };
 
 #include "fsl-ls1043-post.dtsi"
 #include "tqmls104xa-mbls10xxa-fman.dtsi"
+
+&enet6 {
+       status = "okay";
+};
index 12d5f3938e5d6ac167c33618e139608408ceefa9..257d90bb9c206f50532d3e8bf017c6e10dab7b21 100644 (file)
        qflash0: flash@0 {
                compatible = "jedec,spi-nor";
                reg = <0>;
-               #address-cells = <1>;
-               #size-cells = <1>;
                spi-max-frequency = <62500000>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <4>;
+               vcc-supply = <&reg_vcc1v8>;
 
                partitions {
                        compatible = "fixed-partitions";
index c0e3e8fa1e79473ab0ae76f0cb89e40fc076b55d..26bea88cb967ccdb7b3cbae3191476f486c86288 100644 (file)
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(1)>;
                        scl-gpios = <&gpio4 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                       dmas = <&edma0 1 36>,
+                              <&edma0 1 37>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(1)>;
                        scl-gpios = <&gpio4 10 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                       dmas = <&edma0 1 34>,
+                              <&edma0 1 35>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(1)>;
                        scl-gpios = <&gpio4 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                       dmas = <&edma0 1 40>,
+                              <&edma0 1 41>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clockgen QORIQ_CLK_SYSCLK 0>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 32>,
+                              <&edma0 1 33>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(1)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 30>,
+                              <&edma0 1 31>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(1)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 28>,
+                              <&edma0 1 29>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(1)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 26>,
+                              <&edma0 1 27>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(1)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 24>,
+                              <&edma0 1 25>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(1)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 22>,
+                              <&edma0 1 23>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
index 37834ae3deac5dbb9749bc0434a9703d3c69b58a..43261cda3fcf5c0f08d5714046d34e06f534f9fc 100644 (file)
        wp-gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
 };
 
+&sfp1 {
+       status = "okay";
+};
+
+&sfp2 {
+       status = "okay";
+};
+
+&sfp1_i2c {
+       status = "okay";
+};
+
+&sfp2_i2c {
+       status = "okay";
+};
+
 &usb2 {
        status = "okay";
 };
 #include "fsl-ls1046-post.dtsi"
 #include "tqmls104xa-mbls10xxa-fman.dtsi"
 
+&enet6 {
+       status = "okay";
+};
+
 &enet7 {
-       status = "disabled";
+       status = "okay";
 };
index 4a8f8bc688f528da25d74cc052e68801edf25809..fa543db99def6b055be9ab7ce24a215d2b0e57cc 100644 (file)
        qflash0: flash@0 {
                compatible = "jedec,spi-nor";
                reg = <0>;
-               #address-cells = <1>;
-               #size-cells = <1>;
                spi-max-frequency = <62500000>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <4>;
+               vcc-supply = <&reg_vcc1v8>;
 
                partitions {
                        compatible = "fixed-partitions";
@@ -38,5 +37,6 @@
                spi-max-frequency = <62500000>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <4>;
+               vcc-supply = <&reg_vcc1v8>;
        };
 };
index 983b2f0e87970aa5c1eedaa5305de284e30d45af..4a22fde38bea678ffcaaf44e9984ded687cd2297 100644 (file)
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(2)>;
                        scl-gpios = <&gpio3 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                       dmas = <&edma0 1 36>,
+                              <&edma0 1 37>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(2)>;
                        scl-gpios = <&gpio3 10 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                       dmas = <&edma0 1 34>,
+                              <&edma0 1 35>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(2)>;
                        scl-gpios = <&gpio3 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+                       dmas = <&edma0 1 40>,
+                              <&edma0 1 41>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(1)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 32>,
+                              <&edma0 1 33>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(2)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 30>,
+                              <&edma0 1 31>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(2)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 28>,
+                              <&edma0 1 29>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(2)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 26>,
+                              <&edma0 1 27>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(2)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 24>,
+                              <&edma0 1 25>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(2)>;
                        clock-names = "ipg";
+                       dmas = <&edma0 1 22>,
+                              <&edma0 1 23>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
index e567918f6afc6c83af86669e9c4a4c952df11401..181eeab55aa07aea636bf541e56fd43f9a6ced5c 100644 (file)
        wp-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>;
 };
 
+&sfp1 {
+       status = "okay";
+};
+
+&sfp2 {
+       status = "okay";
+};
+
 &sfp1_i2c {
        status = "okay";
 };
index 9a0f21484be9418d3dce89ac8589b7217d1375b0..b8a213df238a56d918dc92e187164e55fd2da820 100644 (file)
        qflash0: flash@0 {
                compatible = "jedec,spi-nor";
                reg = <0>;
-               #address-cells = <1>;
-               #size-cells = <1>;
                spi-max-frequency = <62500000>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <4>;
+               vcc-supply = <&reg_vcc1v8>;
 
                partitions {
                        compatible = "fixed-partitions";
@@ -38,5 +37,6 @@
                spi-max-frequency = <62500000>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <4>;
+               vcc-supply = <&reg_vcc1v8>;
        };
 };
index 4d721197d837e10948e6dcbd8403925efb1d5b56..2d01e20b47e7f9f34543e07642cf35b83936ee84 100644 (file)
                        reg = <0x00>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+
+                       rgmii_phy1: ethernet-phy@1 {
+                               compatible = "ethernet-phy-id001c.c916";
+                               reg = <0x1>;
+                       };
                };
 
                mdio@8 { /* On-board PHY #2 RGMI2*/
                        reg = <0x8>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+
+                       rgmii_phy2: ethernet-phy@2 {
+                               compatible = "ethernet-phy-id001c.c916";
+                               reg = <0x2>;
+                       };
                };
 
                mdio@18 { /* Slot #1 */
        status = "okay";
 };
 
+&dpmac17 {
+       phy-handle = <&rgmii_phy1>;
+       phy-connection-type = "rgmii-id";
+};
+
+&dpmac18 {
+       phy-handle = <&rgmii_phy2>;
+       phy-connection-type = "rgmii-id";
+};
+
 &dspi0 {
        status = "okay";
 
index d39242c1b9f7955889d19869dcbe49c1e9b026ec..2cf0f7208350a416d77b11140279d2f66f41498f 100644 (file)
@@ -10,12 +10,264 @@ img_ipg_clk: clock-img-ipg {
        clock-output-names = "img_ipg_clk";
 };
 
+img_pxl_clk: clock-img-pxl {
+       compatible = "fixed-clock";
+       #clock-cells = <0>;
+       clock-frequency = <600000000>;
+       clock-output-names = "img_pxl_clk";
+};
+
 img_subsys: bus@58000000 {
        compatible = "simple-bus";
        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0x58000000 0x0 0x58000000 0x1000000>;
 
+       isi: isi@58100000 {
+               reg = <0x58100000 0x80000>;
+               interrupts = <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 301 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 302 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&pdma0_lpcg IMX_LPCG_CLK_0>,
+                        <&pdma1_lpcg IMX_LPCG_CLK_0>,
+                        <&pdma2_lpcg IMX_LPCG_CLK_0>,
+                        <&pdma3_lpcg IMX_LPCG_CLK_0>,
+                        <&pdma4_lpcg IMX_LPCG_CLK_0>,
+                        <&pdma5_lpcg IMX_LPCG_CLK_0>,
+                        <&pdma6_lpcg IMX_LPCG_CLK_0>,
+                        <&pdma7_lpcg IMX_LPCG_CLK_0>;
+               clock-names = "per0", "per1", "per2", "per3",
+                             "per4", "per5", "per6", "per7";
+               interrupt-parent = <&gic>;
+               power-domains = <&pd IMX_SC_R_ISI_CH0>,
+                               <&pd IMX_SC_R_ISI_CH1>,
+                               <&pd IMX_SC_R_ISI_CH2>,
+                               <&pd IMX_SC_R_ISI_CH3>,
+                               <&pd IMX_SC_R_ISI_CH4>,
+                               <&pd IMX_SC_R_ISI_CH5>,
+                               <&pd IMX_SC_R_ISI_CH6>,
+                               <&pd IMX_SC_R_ISI_CH7>;
+               status = "disabled";
+       };
+
+       irqsteer_csi0: irqsteer@58220000 {
+               compatible = "fsl,imx8qm-irqsteer", "fsl,imx-irqsteer";
+               reg = <0x58220000 0x1000>;
+               #interrupt-cells = <1>;
+               interrupt-controller;
+               interrupts = <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&img_ipg_clk>;
+               clock-names = "ipg";
+               interrupt-parent = <&gic>;
+               power-domains = <&pd IMX_SC_R_CSI_0>;
+               fsl,channel = <0>;
+               fsl,num-irqs = <32>;
+               status = "disabled";
+       };
+
+       gpio0_mipi_csi0: gpio@58222000 {
+               compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
+               reg = <0x58222000 0x1000>;
+               #interrupt-cells = <2>;
+               interrupt-controller;
+               interrupts = <0>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               interrupt-parent = <&irqsteer_csi0>;
+               power-domains = <&pd IMX_SC_R_CSI_0>;
+       };
+
+       csi0_core_lpcg: clock-controller@58223018 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58223018 0x4>;
+               clocks = <&clk IMX_SC_R_CSI_0 IMX_SC_PM_CLK_PER>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_4>;
+               clock-output-names = "csi0_lpcg_core_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH0>;
+       };
+
+       csi0_esc_lpcg: clock-controller@5822301c {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x5822301c 0x4>;
+               clocks = <&clk IMX_SC_R_CSI_0 IMX_SC_PM_CLK_MISC>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_4>;
+               clock-output-names = "csi0_lpcg_esc_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH0>;
+       };
+
+       i2c_mipi_csi0: i2c@58226000 {
+               compatible = "fsl,imx8qxp-lpi2c", "fsl,imx7ulp-lpi2c";
+               reg = <0x58226000 0x1000>;
+               interrupts = <8>;
+               clocks = <&clk IMX_SC_R_CSI_0_I2C_0 IMX_SC_PM_CLK_PER>,
+                        <&img_ipg_clk>;
+               clock-names = "per", "ipg";
+               assigned-clocks = <&clk IMX_SC_R_CSI_0_I2C_0 IMX_SC_PM_CLK_PER>;
+               assigned-clock-rates = <24000000>;
+               interrupt-parent = <&irqsteer_csi0>;
+               power-domains = <&pd IMX_SC_R_CSI_0_I2C_0>;
+               status = "disabled";
+       };
+
+       mipi_csi_0: csi@58227000 {
+               compatible = "fsl,imx8qxp-mipi-csi2";
+               reg = <0x58227000 0x1000>,
+                     <0x58221000 0x1000>;
+               clocks = <&csi0_core_lpcg IMX_LPCG_CLK_4>,
+                        <&csi0_esc_lpcg IMX_LPCG_CLK_4>,
+                        <&csi0_pxl_lpcg IMX_LPCG_CLK_0>;
+               clock-names = "core", "esc", "ui";
+               assigned-clocks = <&csi0_core_lpcg IMX_LPCG_CLK_4>,
+                                 <&csi0_esc_lpcg IMX_LPCG_CLK_4>;
+               assigned-clock-rates = <360000000>, <72000000>;
+               power-domains = <&pd IMX_SC_R_ISI_CH0>;
+               resets = <&scu_reset IMX_SC_R_CSI_0>;
+               status = "disabled";
+       };
+
+       irqsteer_csi1: irqsteer@58240000 {
+               compatible = "fsl,imx8qm-irqsteer", "fsl,imx-irqsteer";
+               reg = <0x58240000 0x1000>;
+               #interrupt-cells = <1>;
+               interrupt-controller;
+               interrupts = <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&img_ipg_clk>;
+               clock-names = "ipg";
+               interrupt-parent = <&gic>;
+               power-domains = <&pd IMX_SC_R_CSI_1>;
+               fsl,channel = <0>;
+               fsl,num-irqs = <32>;
+               status = "disabled";
+       };
+
+       gpio0_mipi_csi1: gpio@58242000 {
+               compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
+               reg = <0x58242000 0x1000>;
+               #interrupt-cells = <2>;
+               interrupt-controller;
+               interrupts = <0>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               interrupt-parent = <&irqsteer_csi1>;
+               power-domains = <&pd IMX_SC_R_CSI_1>;
+       };
+
+       csi1_core_lpcg: clock-controller@58243018 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58243018 0x4>;
+               clocks = <&clk IMX_SC_R_CSI_1 IMX_SC_PM_CLK_PER>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_4>;
+               clock-output-names = "csi1_lpcg_core_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH0>;
+       };
+
+       csi1_esc_lpcg: clock-controller@5824301c {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x5824301c 0x4>;
+               clocks = <&clk IMX_SC_R_CSI_1 IMX_SC_PM_CLK_MISC>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_4>;
+               clock-output-names = "csi1_lpcg_esc_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH0>;
+       };
+
+       i2c_mipi_csi1: i2c@58246000 {
+               compatible = "fsl,imx8qxp-lpi2c", "fsl,imx7ulp-lpi2c";
+               reg = <0x58246000 0x1000>;
+               interrupts = <8>;
+               clocks = <&clk IMX_SC_R_CSI_1_I2C_0 IMX_SC_PM_CLK_PER>,
+                        <&img_ipg_clk>;
+               clock-names = "per", "ipg";
+               assigned-clocks = <&clk IMX_SC_R_CSI_1_I2C_0 IMX_SC_PM_CLK_PER>;
+               assigned-clock-rates = <24000000>;
+               interrupt-parent = <&irqsteer_csi1>;
+               power-domains = <&pd IMX_SC_R_CSI_1_I2C_0>;
+               status = "disabled";
+       };
+
+       mipi_csi_1: csi@58247000 {
+               compatible = "fsl,imx8qxp-mipi-csi2";
+               reg = <0x58247000 0x1000>,
+                     <0x58241000 0x1000>;
+               clocks = <&csi1_core_lpcg IMX_LPCG_CLK_4>,
+                        <&csi1_esc_lpcg IMX_LPCG_CLK_4>,
+                        <&csi1_pxl_lpcg IMX_LPCG_CLK_0>;
+               clock-names = "core", "esc", "ui";
+               assigned-clocks = <&csi1_core_lpcg IMX_LPCG_CLK_4>,
+                                 <&csi1_esc_lpcg IMX_LPCG_CLK_4>;
+               assigned-clock-rates = <360000000>, <72000000>;
+               power-domains = <&pd IMX_SC_R_ISI_CH0>;
+               resets = <&scu_reset IMX_SC_R_CSI_1>;
+               status = "disabled";
+       };
+
+       irqsteer_parallel: irqsteer@58260000 {
+               compatible = "fsl,imx8qm-irqsteer", "fsl,imx-irqsteer";
+               reg = <0x58260000 0x1000>;
+               #interrupt-cells = <1>;
+               interrupt-controller;
+               interrupts = <GIC_SPI 322 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&clk_dummy>;
+               clock-names = "ipg";
+               interrupt-parent = <&gic>;
+               power-domains = <&pd IMX_SC_R_PI_0>;
+               fsl,channel = <0>;
+               fsl,num-irqs = <32>;
+               status = "disabled";
+       };
+
+       pi0_ipg_lpcg: clock-controller@58263004 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58263004 0x4>;
+               clocks = <&clk IMX_SC_R_PI_0 IMX_SC_PM_CLK_PER>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_4>;
+               clock-output-names = "pi0_lpcg_ipg_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH0>;
+       };
+
+       pi0_pxl_lpcg: clock-controller@58263018 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58263018 0x4>;
+               clocks = <&clk IMX_SC_R_PI_0 IMX_SC_PM_CLK_PER>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "pi0_lpcg_pxl_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH0>;
+       };
+
+       pi0_misc_lpcg: clock-controller@5826301c {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x5826301c 0x4>;
+               clocks = <&clk IMX_SC_R_PI_0 IMX_SC_PM_CLK_MISC0>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "pi0_lpcg_misc_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH0>;
+       };
+
+       i2c0_parallel: i2c@58266000 {
+               compatible = "fsl,imx8qxp-lpi2c", "fsl,imx7ulp-lpi2c";
+               reg = <0x58266000 0x1000>;
+               interrupts = <8>;
+               clocks = <&clk IMX_SC_R_PI_0_I2C_0 IMX_SC_PM_CLK_PER>,
+                        <&img_ipg_clk>;
+               clock-names = "per", "ipg";
+               assigned-clocks = <&clk IMX_SC_R_PI_0_I2C_0 IMX_SC_PM_CLK_PER>;
+               assigned-clock-rates = <24000000>;
+               interrupt-parent = <&irqsteer_parallel>;
+               power-domains = <&pd IMX_SC_R_PI_0_I2C_0>;
+               status = "disabled";
+       };
+
        jpegdec: jpegdec@58400000 {
                reg = <0x58400000 0x00050000>;
                interrupts = <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>;
@@ -40,6 +292,116 @@ img_subsys: bus@58000000 {
                                <&pd IMX_SC_R_MJPEG_ENC_S0>;
        };
 
+       pdma0_lpcg: clock-controller@58500000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58500000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "pdma0_lpcg_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH0>;
+       };
+
+       pdma1_lpcg: clock-controller@58510000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58510000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "pdma1_lpcg_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH1>;
+       };
+
+       pdma2_lpcg: clock-controller@58520000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58520000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "pdma2_lpcg_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH2>;
+       };
+
+       pdma3_lpcg: clock-controller@58530000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58530000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "pdma3_lpcg_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH3>;
+       };
+
+       pdma4_lpcg: clock-controller@58540000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58540000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "pdma4_lpcg_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH4>;
+       };
+
+       pdma5_lpcg: clock-controller@58550000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58550000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "pdma5_lpcg_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH5>;
+       };
+
+       pdma6_lpcg: clock-controller@58560000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58560000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "pdma6_lpcg_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH6>;
+       };
+
+       pdma7_lpcg: clock-controller@58570000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58570000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "pdma7_lpcg_clk";
+               power-domains = <&pd IMX_SC_R_ISI_CH7>;
+       };
+
+       csi0_pxl_lpcg: clock-controller@58580000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58580000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "csi0_lpcg_pxl_clk";
+               power-domains = <&pd IMX_SC_R_CSI_0>;
+       };
+
+       csi1_pxl_lpcg: clock-controller@58590000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x58590000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "csi1_lpcg_pxl_clk";
+               power-domains = <&pd IMX_SC_R_CSI_1>;
+       };
+
+       hdmi_rx_pxl_link_lpcg: clock-controller@585a0000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x585a0000 0x10000>;
+               clocks = <&img_pxl_clk>;
+               #clock-cells = <1>;
+               clock-indices = <IMX_LPCG_CLK_0>;
+               clock-output-names = "hdmi_rx_lpcg_pxl_link_clk";
+               power-domains = <&pd IMX_SC_R_HDMI_RX>;
+       };
+
        img_jpeg_dec_lpcg: clock-controller@585d0000 {
                compatible = "fsl,imx8qxp-lpcg";
                reg = <0x585d0000 0x10000>;
diff --git a/src/arm64/freescale/imx8-ss-security.dtsi b/src/arm64/freescale/imx8-ss-security.dtsi
new file mode 100644 (file)
index 0000000..3e04142
--- /dev/null
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2019 NXP
+ */
+
+#include <dt-bindings/firmware/imx/rsrc.h>
+
+security_subsys: bus@31400000 {
+       compatible = "simple-bus";
+       #address-cells = <1>;
+       #size-cells = <1>;
+       ranges = <0x31400000 0x0 0x31400000 0x90000>;
+
+       crypto: crypto@31400000 {
+               compatible = "fsl,imx8qm-caam", "fsl,sec-v4.0";
+               reg = <0x31400000 0x90000>;
+               interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0 0x31400000 0x90000>;
+               power-domains = <&pd IMX_SC_R_CAAM_JR2>;
+               fsl,sec-era = <9>;
+
+               sec_jr2: jr@30000 {
+                       compatible = "fsl,imx8qm-job-ring", "fsl,sec-v4.0-job-ring";
+                       reg = <0x30000 0x10000>;
+                       interrupts = <GIC_SPI 453 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&pd IMX_SC_R_CAAM_JR2>;
+               };
+
+               sec_jr3: jr@40000 {
+                       compatible = "fsl,imx8qm-job-ring", "fsl,sec-v4.0-job-ring";
+                       reg = <0x40000 0x10000>;
+                       interrupts = <GIC_SPI 454 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&pd IMX_SC_R_CAAM_JR3>;
+               };
+       };
+};
index 21bcd82fd092f271b3f5e4ecac52478ad7176ce0..8287a7f66ed372ada0fe4d34cf0a43f43284d377 100644 (file)
        pinctrl-0 = <&pinctrl_usdhc3>;
        pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clk IMX8MM_CLK_USDHC3>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
        non-removable;
        status = "okay";
index 5a3b1142ddf4b7d31db2e6e2723e86cc089a96db..37db4f0dd5052bb7e75d0bdc1f9f663ea2459575 100644 (file)
        pinctrl-0 = <&pinctrl_usdhc3>;
        pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clk IMX8MM_CLK_USDHC3>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
        non-removable;
        status = "okay";
index d8b67e12f7d7470224efa12f73c7495de86be2a0..272c2b223d167d76b1b3db881644c6c3b115fa4b 100644 (file)
        pinctrl-0 = <&pinctrl_usdhc3>;
        pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clk IMX8MM_CLK_USDHC3>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
        non-removable;
        status = "okay";
index 46d1ee0a4ee86b025d94453460770e08b5dd8d32..c09b40fc6decd417e76b1afb008e7756b67e7116 100644 (file)
        pinctrl-0 = <&pinctrl_usdhc3>;
        pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clk IMX8MM_CLK_USDHC3>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
        non-removable;
        status = "okay";
index c0aadff4e25b180a6354eb7aa4f4d5b8c099e8f2..636daa3d6ca20ca186c92023bb2d46dba75aae91 100644 (file)
        pinctrl-0 = <&pinctrl_usdhc3>;
        pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clk IMX8MM_CLK_USDHC3>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
        non-removable;
        status = "okay";
index 86a610de84fe2348554354f838e1d824a24a4322..99572961d9e1655bd55113d9b7c9d2880ffb23d4 100644 (file)
        pinctrl-0 = <&pinctrl_usdhc3>;
        pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clk IMX8MM_CLK_USDHC3>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
        non-removable;
        status = "okay";
index cfebaa01217eb02b9514c51ae7dabc6cd7b7245a..ded89b04697014771c20cd7c285d01b73ac9edb9 100644 (file)
                                        clocks = <&clk IMX8MM_CLK_UART2_ROOT>,
                                                 <&clk IMX8MM_CLK_UART2_ROOT>;
                                        clock-names = "ipg", "per";
+                                       dmas = <&sdma1 24 4 0>, <&sdma1 25 4 0>;
+                                       dma-names = "rx", "tx";
                                        status = "disabled";
                                };
                        };
index 67a99383a63247f5373efc8cd20da75ef55516e1..917b7d0007a7a3e29e71222334c33544d208a5e4 100644 (file)
        pinctrl-0 = <&pinctrl_usdhc3>;
        pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clk IMX8MN_CLK_USDHC3>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
        non-removable;
        status = "okay";
index dc94d73f7106c1fe8b86e5c7dd00313f7fef542c..d7f7f9aafb7d1b65180fc4f3c29039598c239233 100644 (file)
                 <&clk IMX8MN_AUDIO_PLL2_OUT>;
 };
 
+&sound {
+       audio-asrc = <&easrc>;
+};
+
 &tlv320aic3x04 {
        clock-names = "mclk";
        clocks = <&clk IMX8MN_CLK_SAI3_ROOT>;
index 640c41b51af9884dff582484fe532addf40a5be9..1d23814e11cd30f81051c99dd95f8af5a5f86ea2 100644 (file)
        cpu-supply = <&buck2_reg>;
 };
 
+&easrc {
+       status = "okay";
+};
+
 &flexspi {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_flexspi>;
index 30c286b34aa535e1ac7ef5affd3b9bcb6a81b633..a5f52f60169e96052c37b040afd32d8c2e9f8234 100644 (file)
        pinctrl-0 = <&pinctrl_usdhc3>;
        pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clk IMX8MN_CLK_USDHC3>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
        non-removable;
        status = "okay";
index 848ba5e46ee679166e96327f089904f317b0cf95..b98b3d0ddf25aa4b98f8320ecc7f44e22271178e 100644 (file)
                                        clocks = <&clk IMX8MN_CLK_UART2_ROOT>,
                                                 <&clk IMX8MN_CLK_UART2_ROOT>;
                                        clock-names = "ipg", "per";
+                                       dmas = <&sdma1 24 4 0>, <&sdma1 25 4 0>;
+                                       dma-names = "rx", "tx";
                                        status = "disabled";
                                };
                        };
index d0fc5977258fbf14fa5c957f897c073aafcb2ec7..16078ff60ef08bcf7f2792ed2d1456560fe47601 100644 (file)
        pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
        cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
        vmmc-supply = <&reg_usdhc2_vmmc>;
+       vqmmc-supply = <&ldo5>;
        bus-width = <4>;
        status = "okay";
 };
index 7f754e0a5d693fc23c1885e223558c80f351cedb..68c2e0156a5c81d2e7cfd5bae8babb2ad4ec20bf 100644 (file)
        pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
        cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
        vmmc-supply = <&reg_usdhc2_vmmc>;
+       vqmmc-supply = <&ldo5>;
        bus-width = <4>;
        status = "okay";
 };
index 1ba3018c621e25c00e23cb2683c1bb0c51fa7365..c0cc5611048e6a739f13c14bbd2e7b26f2715696 100644 (file)
                #sound-dai-cells = <1>;
        };
 
-       sound {
-               compatible = "simple-audio-card";
-               simple-audio-card,name = "wm8960-audio";
-               simple-audio-card,format = "i2s";
-               simple-audio-card,frame-master = <&cpudai>;
-               simple-audio-card,bitclock-master = <&cpudai>;
-               simple-audio-card,widgets =
-                       "Headphone", "Headphone Jack",
-                       "Speaker", "External Speaker",
-                       "Microphone", "Mic Jack";
-               simple-audio-card,routing =
-                       "Headphone Jack", "HP_L",
-                       "Headphone Jack", "HP_R",
-                       "External Speaker", "SPK_LP",
-                       "External Speaker", "SPK_LN",
-                       "External Speaker", "SPK_RP",
-                       "External Speaker", "SPK_RN",
-                       "LINPUT1", "Mic Jack",
-                       "LINPUT3", "Mic Jack",
-                       "Mic Jack", "MICB";
-
-               cpudai: simple-audio-card,cpu {
-                       sound-dai = <&sai3>;
-               };
-
-               simple-audio-card,codec {
-                       sound-dai = <&wm8960>;
-               };
-
-       };
-
        sound-bt-sco {
                compatible = "simple-audio-card";
                simple-audio-card,name = "bt-sco-audio";
                };
        };
 
+       sound-wm8960 {
+               compatible = "fsl,imx-audio-wm8960";
+               audio-asrc = <&easrc>;
+               audio-codec = <&wm8960>;
+               audio-cpu = <&sai3>;
+               audio-routing = "Headphone Jack", "HP_L",
+                       "Headphone Jack", "HP_R",
+                       "Ext Spk", "SPK_LP",
+                       "Ext Spk", "SPK_LN",
+                       "Ext Spk", "SPK_RP",
+                       "Ext Spk", "SPK_RN",
+                       "LINPUT1", "Mic Jack",
+                       "LINPUT3", "Mic Jack",
+                       "Mic Jack", "MICB";
+               hp-det-gpio = <&gpio4 28 GPIO_ACTIVE_HIGH>;
+               model = "wm8960-audio";
+               pinctrl-0 = <&pinctrl_hpdet>;
+               pinctrl-names = "default";
+       };
+
        sound-xcvr {
                compatible = "fsl,imx-audio-card";
                model = "imx-audio-xcvr";
        status = "okay";
 };
 
+&easrc {
+       fsl,asrc-rate  = <48000>;
+       status = "okay";
+};
+
 &eqos {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_eqos>;
                >;
        };
 
+       pinctrl_hpdet: hpdetgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI3_RXFS__GPIO4_IO28              0xd6
+               >;
+       };
+
        pinctrl_i2c1: i2c1grp {
                fsl,pins = <
                        MX8MP_IOMUXC_I2C1_SCL__I2C1_SCL         0x400001c2
index 2ce1860b244d5e3f73eb82429f67391532122d1c..f269f7a004fc017fc891665586462dca63d970bd 100644 (file)
                               <1039500000>;
 };
 
+&vpu_g1 {
+       assigned-clocks = <&clk IMX8MP_CLK_VPU_G1>;
+       assigned-clock-parents = <&clk IMX8MP_VPU_PLL_OUT>;
+       assigned-clock-rates = <600000000>;
+};
+
+&vpu_g2 {
+       assigned-clocks = <&clk IMX8MP_CLK_VPU_G2>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_1000M>;
+       assigned-clock-rates = <500000000>;
+};
+
+&vpumix_blk_ctrl {
+       assigned-clocks = <&clk IMX8MP_VPU_PLL>, <&clk IMX8MP_CLK_VPU_BUS>;
+       assigned-clock-parents = <0>, <&clk IMX8MP_VPU_PLL_OUT>;
+       assigned-clock-rates = <600000000>, <600000000>;
+};
+
 /delete-node/ &{noc_opp_table/opp-1000000000};
index 0fef066471ba607be02d0ab15da5a048a8a213a7..16f5899de415263da40928078c4c381099728fd5 100644 (file)
@@ -6,6 +6,39 @@
 #ifndef __DTS_IMX8MP_PINFUNC_H
 #define __DTS_IMX8MP_PINFUNC_H
 
+/* Drive Strength */
+#define MX8MP_DSE_X1           0x0
+#define MX8MP_DSE_X2           0x4
+#define MX8MP_DSE_X4           0x2
+#define MX8MP_DSE_X6           0x6
+
+/* Slew Rate */
+#define MX8MP_FSEL_FAST                0x10
+#define MX8MP_FSEL_SLOW                0x0
+
+/* Open Drain */
+#define MX8MP_ODE_ENABLE       0x20
+#define MX8MP_ODE_DISABLE      0x0
+
+#define MX8MP_PULL_DOWN                0x0
+#define MX8MP_PULL_UP          0x40
+
+/* Hysteresis */
+#define MX8MP_HYS_CMOS         0x0
+#define MX8MP_HYS_SCHMITT      0x80
+
+#define MX8MP_PULL_ENABLE      0x100
+#define MX8MP_PULL_DISABLE     0x0
+
+/* SION force input mode */
+#define MX8MP_SION             0x40000000
+
+/* long defaults */
+#define MX8MP_USDHC_DATA_DEFAULT (MX8MP_FSEL_FAST | MX8MP_PULL_UP | \
+                                 MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE)
+#define MX8MP_I2C_DEFAULT (MX8MP_DSE_X6 | MX8MP_PULL_UP | MX8MP_HYS_SCHMITT | \
+                          MX8MP_PULL_ENABLE | MX8MP_SION)
+
 /*
  * The pin function ID is a tuple of
  * <mux_reg conf_reg input_reg mux_mode input_val>
index 55b8c5c14fb4f3e7407243760ac01b0aca0dacf5..6f9dcd3a75c8d6114b8bd3cc99412ff32df1d460 100644 (file)
                    <&pinctrl_gpio13>;
 };
 
-&gpio3 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_lvds_dsi_sel>;
-};
-
 &gpio4 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpio4>, <&pinctrl_gpio6>;
                #pwm-cells = <2>;
 
                fan {
+                       cooling-levels = <255>;
                        pwms = <&fan_controller 40000 PWM_POLARITY_INVERTED>;
                };
        };
index 22f6daabdb90a2a3b828fcca9396edf9a207f7c3..bebe19eb360f88926d59843169c15a21eb50e11a 100644 (file)
 };
 
 &gpio3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lvds_dsi_sel>;
        gpio-line-names = "ETH_0_INT#", /* 0 */
                          "SLEEP#",
                          "",
                          "",
                          "",
                          "SMARC_I2C_PM_CK";
-
-       lvds_dsi_mux_hog: lvds-dsi-mux-hog {
-               gpio-hog;
-               gpios = <7 GPIO_ACTIVE_HIGH>;
-               line-name = "LVDS_DSI_SEL";
-               /* LVDS_DSI_SEL as DSI */
-               output-low;
-       };
 };
 
 &gpio4 {
index d7fd9d36f8240eb2b972548164458678d90d0255..f7346b3d35fe5396eac355fc8b5bc1c0318efb98 100644 (file)
        status = "okay";
 };
 
+&reg_usdhc2_vqmmc {
+       status = "okay";
+};
+
 &sai5 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_sai5>;
                           <MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0        0x1d2>,
                           <MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1        0x1d2>,
                           <MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2        0x1d2>,
-                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d2>,
-                          <MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT     0xc0>;
+                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d2>;
        };
 
        pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
                           <MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0        0x1d4>,
                           <MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1        0x1d4>,
                           <MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2        0x1d4>,
-                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d4>,
-                          <MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT     0xc0>;
+                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d4>;
        };
 
        pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
                           <MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0        0x1d4>,
                           <MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1        0x1d4>,
                           <MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2        0x1d4>,
-                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d4>,
-                          <MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT     0xc0>;
+                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d4>;
        };
 
        pinctrl_usdhc2_gpio: usdhc2-gpiogrp {
index 23c612e80dd383840f7705e52848858a5fa822f9..4eedd00d83b9fcf64bb43f5b29643bd43dfe0a60 100644 (file)
        sound {
                compatible = "fsl,imx-audio-tlv320aic32x4";
                model = "tqm-tlv320aic32";
+               audio-asrc = <&easrc>;
                audio-cpu = <&sai3>;
                audio-codec = <&tlv320aic3x04>;
        };
        status = "okay";
 };
 
+&reg_usdhc2_vqmmc {
+       status = "okay";
+};
+
 &sai3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_sai3>;
                           <MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0        0x1d2>,
                           <MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1        0x1d2>,
                           <MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2        0x1d2>,
-                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d2>,
-                          <MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT     0xc0>;
+                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d2>;
        };
 
        pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
                           <MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0        0x1d4>,
                           <MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1        0x1d4>,
                           <MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2        0x1d4>,
-                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d4>,
-                          <MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT     0xc0>;
+                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d4>;
        };
 
        pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
                           <MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0        0x1d4>,
                           <MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1        0x1d4>,
                           <MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2        0x1d4>,
-                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d4>,
-                          <MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT     0xc0>;
+                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d4>;
        };
 
        pinctrl_usdhc2_gpio: usdhc2-gpiogrp {
index 6067ca3be814e1e31dcbb78463d72925b747d8e7..9716f24f7c6ed794146e0f21741747371a8a47cf 100644 (file)
                reg = <0x0 0x40000000 0 0x80000000>;
        };
 
-       /* identical to buck4_reg, but should never change */
-       reg_vcc3v3: regulator-vcc3v3 {
-               compatible = "regulator-fixed";
-               regulator-name = "VCC3V3";
-               regulator-min-microvolt = <3300000>;
+       reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
+               compatible = "regulator-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_usdhc2_vqmmc>;
+               regulator-name = "V_SD2";
+               regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <3300000>;
-               regulator-always-on;
+               gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x1>,
+                        <3300000 0x0>;
+               vin-supply = <&ldo5_reg>;
+               status = "disabled";
        };
 };
 
        cpu-supply = <&buck2_reg>;
 };
 
+&easrc {
+       status = "okay";
+};
+
 &flexspi {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_flexspi0>;
                read-only;
                reg = <0x53>;
                pagesize = <16>;
-               vcc-supply = <&reg_vcc3v3>;
+               vcc-supply = <&buck4_reg>;
        };
 
        m24c64: eeprom@57 {
                compatible = "atmel,24c64";
                reg = <0x57>;
                pagesize = <32>;
-               vcc-supply = <&reg_vcc3v3>;
+               vcc-supply = <&buck4_reg>;
        };
 };
 
+&usdhc2 {
+       vqmmc-supply = <&reg_usdhc2_vqmmc>;
+};
+
 &usdhc3 {
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc3>;
        non-removable;
        no-sd;
        no-sdio;
-       vmmc-supply = <&reg_vcc3v3>;
+       vmmc-supply = <&buck4_reg>;
        vqmmc-supply = <&buck5_reg>;
        status = "okay";
 };
                fsl,pins = <MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19        0x10>;
        };
 
+       pinctrl_reg_usdhc2_vqmmc: regusdhc2vqmmcgrp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO04__GPIO1_IO04         0xc0>;
+       };
+
        pinctrl_usdhc3: usdhc3grp {
                fsl,pins = <MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK          0x194>,
                           <MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD          0x1d4>,
diff --git a/src/arm64/freescale/imx8mp-tx8p-ml81-moduline-display-106-av101hdt-a10.dtso b/src/arm64/freescale/imx8mp-tx8p-ml81-moduline-display-106-av101hdt-a10.dtso
new file mode 100644 (file)
index 0000000..e3965ca
--- /dev/null
@@ -0,0 +1,94 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2025 GOcontroll B.V.
+ * Author: Maud Spierings <maudspierings@gocontroll.com>
+ */
+
+#include <dt-bindings/clock/imx8mp-clock.h>
+#include <dt-bindings/gpio/gpio.h>
+
+#include "imx8mp-pinfunc.h"
+
+/dts-v1/;
+/plugin/;
+
+&{/} {
+       model = "GOcontroll Moduline Display with BOE av101hdt-a10 display";
+
+       panel {
+               compatible = "boe,av101hdt-a10";
+               enable-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&pinctrl_panel>;
+               pinctrl-names = "default";
+               power-supply = <&reg_3v3_per>;
+               reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
+
+               port {
+                       panel_lvds_in: endpoint {
+                               remote-endpoint = <&ldb_lvds_ch0>;
+                       };
+               };
+       };
+
+       reg_vbus: regulator-vbus {
+               compatible = "regulator-fixed";
+               power-supply = <&reg_6v4>;
+               regulator-always-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "usb-c-vbus";
+       };
+};
+
+&iomuxc {
+       pinctrl_panel: panelgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO07__GPIO1_IO07
+                               MX8MP_DSE_X1
+                       MX8MP_IOMUXC_GPIO1_IO09__GPIO1_IO09
+                               MX8MP_DSE_X1
+               >;
+       };
+};
+
+&lcdif2 {
+       status = "okay";
+};
+
+&lvds_bridge {
+       assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk IMX8MP_VIDEO_PLL1>;
+       /* IMX8MP_VIDEO_PLL1 = IMX8MP_CLK_MEDIA_DISP2_PIX * 2 * 7 */
+       assigned-clock-rates = <0>, <1054620000>;
+       status = "okay";
+
+       ports {
+               port@1 {
+                       ldb_lvds_ch0: endpoint {
+                               remote-endpoint = <&panel_lvds_in>;
+                       };
+               };
+       };
+};
+
+&usb_dwc3_1 {
+       dr_mode = "host";
+
+       connector {
+               compatible = "usb-c-connector";
+               data-role = "host";
+               pd-disable;
+               vbus-supply = <&reg_vbus>;
+
+               port {
+                       high_speed_ep: endpoint {
+                               remote-endpoint = <&usb1_hs_ep>;
+                       };
+               };
+       };
+
+       port {
+               usb1_hs_ep: endpoint {
+                       remote-endpoint = <&high_speed_ep>;
+               };
+       };
+};
diff --git a/src/arm64/freescale/imx8mp-tx8p-ml81-moduline-display-106-av123z7m-n17.dtso b/src/arm64/freescale/imx8mp-tx8p-ml81-moduline-display-106-av123z7m-n17.dtso
new file mode 100644 (file)
index 0000000..3eb665c
--- /dev/null
@@ -0,0 +1,139 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2025 GOcontroll B.V.
+ * Author: Maud Spierings <maudspierings@gocontroll.com>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+
+#include "imx8mp-pinfunc.h"
+
+/dts-v1/;
+/plugin/;
+
+&{/} {
+       model = "GOcontroll Moduline Display with BOE av123z7m-n17 display";
+
+       panel {
+               compatible = "boe,av123z7m-n17";
+               enable-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&pinctrl_panel>;
+               pinctrl-names = "default";
+               power-supply = <&reg_3v3_per>;
+               reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               dual-lvds-odd-pixels;
+
+                               panel_in0: endpoint {
+                                       remote-endpoint = <&lvds1_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               dual-lvds-even-pixels;
+
+                               panel_in1: endpoint {
+                                       remote-endpoint = <&lvds0_out>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c4 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       /* sn65dsi85 */
+       bridge@2d {
+               compatible = "ti,sn65dsi84";
+               reg = <0x2d>;
+               enable-gpios = <&gpio4 14 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&pinctrl_lvds_bridge>;
+               pinctrl-names = "default";
+               vcc-supply = <&reg_1v8_per>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               dsi_lvds_bridge_in: endpoint {
+                                       data-lanes = <1 2 3 4>;
+                                       remote-endpoint = <&mipi_dsi_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               lvds0_out: endpoint {
+                                       remote-endpoint = <&panel_in1>;
+                               };
+                       };
+
+                       port@3 {
+                               reg = <3>;
+
+                               lvds1_out: endpoint {
+                                       remote-endpoint = <&panel_in0>;
+                               };
+                       };
+               };
+       };
+
+       /* max25014 @ 0x6f */
+};
+
+&iomuxc {
+       pinctrl_lvds_bridge: lvdsbridgegrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI1_TXD2__GPIO4_IO14
+                               MX8MP_DSE_X1
+               >;
+       };
+
+       pinctrl_panel: panelgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO07__GPIO1_IO07
+                               MX8MP_DSE_X1
+                       MX8MP_IOMUXC_GPIO1_IO09__GPIO1_IO09
+                               MX8MP_DSE_X1
+               >;
+       };
+};
+
+&lcdif1 {
+       status = "okay";
+};
+
+&mipi_dsi {
+       /*
+        * burst has to be at least 2x dsi clock that the sn65dsi85 expects
+        * display pixelclock * bpp / lanes / 2 = dsi clock
+        * 88.000.000 * 24 / 4 / 2 = 264.000.000
+        * range gets rounded up to 265.000.000 - 270.000.000
+        * 267.500.000 * 2 = 535.000.000
+        */
+       samsung,burst-clock-frequency = <535000000>;
+       samsung,esc-clock-frequency = <12000000>;
+       status = "okay";
+
+       ports {
+               port@1 {
+                       mipi_dsi_out: endpoint {
+                               data-lanes = <1 2 3 4>;
+                               remote-endpoint = < &dsi_lvds_bridge_in>;
+                       };
+               };
+       };
+};
diff --git a/src/arm64/freescale/imx8mp-tx8p-ml81-moduline-display-106.dts b/src/arm64/freescale/imx8mp-tx8p-ml81-moduline-display-106.dts
new file mode 100644 (file)
index 0000000..afd886d
--- /dev/null
@@ -0,0 +1,527 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2025 GOcontroll B.V.
+ * Author: Maud Spierings <maudspierings@gocontroll.com>
+ */
+
+/dts-v1/;
+
+#include "imx8mp-tx8p-ml81.dtsi"
+
+/ {
+       compatible = "gocontroll,moduline-display", "fsl,imx8mp";
+       chassis-type = "embedded";
+       hardware = "Moduline Display V1.06";
+       model = "GOcontroll Moduline Display baseboard";
+
+       aliases {
+               can0 = &flexcan1;
+               can1 = &flexcan2;
+               ethernet0 = &eqos;
+               ethernet1 = &fec;
+               mmc0 = &usdhc3;
+               mmc1 = &usdhc2;
+               rtc0 = &rtc_pcf; /* i2c rtc is the main rtc */
+               rtc1 = &snvs_rtc;
+               spi0 = &ecspi2; /* spidev number compatibility */
+               spi1 = &ecspi1; /* spidev number compatibility */
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       external-sensor-supply {
+               compatible = "regulator-output";
+               vout-supply = <&reg_5v0_sensor>;
+       };
+
+       reg_1v8_per: regulator-1v8-per {
+               compatible = "regulator-fixed";
+               pinctrl-0 = <&pinctrl_reg_1v8>;
+               pinctrl-names = "default";
+               power-supply = <&reg_3v3_per>;
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "1v8-per";
+               gpio = <&gpio3 25 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_3v3_per: regulator-3v3-per {
+               compatible = "regulator-fixed";
+               power-supply = <&reg_6v4>;
+               regulator-always-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "3v3-per";
+       };
+
+       reg_5v0: regulator-5v0 {
+               compatible = "regulator-fixed";
+               power-supply = <&reg_6v4>;
+               regulator-always-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "5v0";
+       };
+
+       reg_5v0_sensor: regulator-5v0-sensor {
+               compatible = "regulator-fixed";
+               pinctrl-0 = <&pinctrl_reg_5v0_sensor>;
+               pinctrl-names = "default";
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "5v0-supply-external-sensor";
+               gpio = <&gpio4 9 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_6v4: regulator-6v4 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <6400000>;
+               regulator-min-microvolt = <6400000>;
+               regulator-name = "6v4";
+       };
+
+       reg_can1_stby: regulator-can1-stby {
+               compatible = "regulator-fixed";
+               pinctrl-0 = <&pinctrl_flexcan1_reg>;
+               pinctrl-names = "default";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "can1-stby";
+               gpio = <&gpio4 3 GPIO_ACTIVE_LOW>;
+       };
+
+       reg_can2_stby: regulator-can2-stby {
+               compatible = "regulator-fixed";
+               pinctrl-0 = <&pinctrl_flexcan2_reg>;
+               pinctrl-names = "default";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "can2-stby";
+               gpio = <&gpio5 9 GPIO_ACTIVE_LOW>;
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,bitclock-master = <&cpudai>;
+               simple-audio-card,format = "i2s";
+               simple-audio-card,frame-master = <&cpudai>;
+               simple-audio-card,name = "tas2505-audio";
+               simple-audio-card,routing = "Speaker", "DAC";
+               simple-audio-card,widgets = "Speaker", "Speaker External";
+
+               simple-audio-card,codec {
+                       sound-dai = <&tas2505>;
+               };
+
+               cpudai: simple-audio-card,cpu {
+                       sound-dai = <&sai6>;
+               };
+       };
+
+       wifi_powerseq: wifi-powerseq {
+               compatible = "mmc-pwrseq-simple";
+               pinctrl-0 = <&pinctrl_wl_reg>;
+               pinctrl-names = "default";
+               post-power-on-delay-ms = <100>;
+               power-off-delay-us = <500000>;
+               reset-gpios = <&gpio2 19 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&ecspi1 {
+       cs-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>,
+                  <&gpio1 11 GPIO_ACTIVE_LOW>,
+                  <&gpio1 10 GPIO_ACTIVE_LOW>;
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       connector@0 {
+               compatible = "gocontroll,moduline-module-slot";
+               reg = <0>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
+               i2c-bus = <&i2c2>;
+               reset-gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
+               slot-number = <1>;
+               spi-max-frequency = <54000000>;
+               sync-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
+               vddhpp-supply = <&reg_6v4>;
+               vddp-supply = <&reg_5v0>;
+               vdd-supply = <&reg_3v3_per>;
+       };
+
+       connector@1 {
+               compatible = "gocontroll,moduline-module-slot";
+               reg = <1>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
+               i2c-bus = <&i2c2>;
+               reset-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+               slot-number = <2>;
+               spi-max-frequency = <54000000>;
+               sync-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
+               vddhpp-supply = <&reg_6v4>;
+               vddp-supply = <&reg_5v0>;
+               vdd-supply = <&reg_3v3_per>;
+       };
+
+       adc@2 {
+               compatible = "microchip,mcp3004";
+               reg = <2>;
+               spi-max-frequency = <2300000>;
+               vref-supply = <&reg_vdd_3v3>;
+       };
+};
+
+&flexcan1 {
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       pinctrl-names = "default";
+       xceiver-supply = <&reg_can1_stby>;
+       status = "okay";
+};
+
+&flexcan2 {
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       pinctrl-names = "default";
+       xceiver-supply = <&reg_can2_stby>;
+       status = "okay";
+};
+
+&i2c2 {
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-1 = <&pinctrl_i2c2_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "okay";
+};
+
+&i2c4 {
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_i2c4>;
+       pinctrl-1 = <&pinctrl_i2c4_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio5 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 13 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "okay";
+
+       tas2505: audio-codec@18 {
+               compatible = "ti,tas2505";
+               reg = <0x18>;
+               clocks = <&clk IMX8MP_CLK_AUDIOMIX_SAI6_MCLK1>;
+               clock-names = "mclk";
+               #sound-dai-cells = <0>;
+               aic32x4-gpio-func = <0xff 0xff 0xff 0xff 0xff>;
+               av-supply = <&reg_1v8_per>;
+               dv-supply = <&reg_1v8_per>;
+               iov-supply = <&reg_vdd_3v3>;
+               pinctrl-0 = <&pinctrl_tas_reset>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
+       };
+
+       rtc_pcf: rtc@51 {
+               compatible = "nxp,pcf85063a";
+               reg = <0x51>;
+               quartz-load-femtofarads = <7000>;
+
+               clock {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <32768>;
+               };
+       };
+};
+
+&iomuxc {
+       pinctrl_bt: btgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO14__GPIO1_IO14
+                               MX8MP_DSE_X1
+                       MX8MP_IOMUXC_GPIO1_IO12__GPIO1_IO12
+                               (MX8MP_PULL_UP | MX8MP_PULL_ENABLE | MX8MP_HYS_SCHMITT)
+                       MX8MP_IOMUXC_GPIO1_IO15__GPIO1_IO15
+                               MX8MP_DSE_X1
+               >;
+       };
+
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI
+                               MX8MP_DSE_X4
+                       MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO
+                               (MX8MP_DSE_X4 | MX8MP_HYS_SCHMITT)
+                       MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK
+                               MX8MP_DSE_X4
+                       MX8MP_IOMUXC_SD2_CD_B__GPIO2_IO12
+                               MX8MP_DSE_X1
+                       MX8MP_IOMUXC_GPIO1_IO11__GPIO1_IO11
+                               MX8MP_DSE_X1
+                       MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10
+                               MX8MP_DSE_X1
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                        MX8MP_IOMUXC_SPDIF_RX__CAN1_RX
+                                (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+                        MX8MP_IOMUXC_SPDIF_TX__CAN1_TX
+                                (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_flexcan1_reg: flexcan1reggrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI1_RXD1__GPIO4_IO03
+                               (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_UART3_TXD__CAN2_RX
+                               (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_UART3_RXD__CAN2_TX
+                               (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_flexcan2_reg: flexcan2reggrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09
+                               (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C2_SCL__I2C2_SCL
+                               MX8MP_I2C_DEFAULT
+                       MX8MP_IOMUXC_I2C2_SDA__I2C2_SDA
+                               MX8MP_I2C_DEFAULT
+               >;
+       };
+
+       pinctrl_i2c2_gpio: i2c2-gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C2_SCL__GPIO5_IO16
+                               MX8MP_I2C_DEFAULT
+                       MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17
+                               MX8MP_I2C_DEFAULT
+               >;
+       };
+
+       pinctrl_i2c4: i2c4grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ECSPI2_MISO__I2C4_SCL
+                               MX8MP_I2C_DEFAULT
+                       MX8MP_IOMUXC_ECSPI2_SS0__I2C4_SDA
+                               MX8MP_I2C_DEFAULT
+               >;
+       };
+
+       pinctrl_i2c4_gpio: i2c4-gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ECSPI2_MISO__GPIO5_IO12
+                               MX8MP_I2C_DEFAULT
+                       MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13
+                               MX8MP_I2C_DEFAULT
+               >;
+       };
+
+       pinctrl_usdhc2: pinctrlusdhc2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK
+                               (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+               >;
+       };
+
+       pinctrl_reg_1v8: reg-1v8-grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI5_MCLK__GPIO3_IO25
+                               MX8MP_DSE_X1
+               >;
+       };
+
+       pinctrl_reg_5v0_sensor: reg-5v0-sensorgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI1_RXD7__GPIO4_IO09
+                               MX8MP_DSE_X1
+               >;
+       };
+
+       pinctrl_sai6: sai6grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI1_TXD6__AUDIOMIX_SAI6_TX_SYNC
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
+                       MX8MP_IOMUXC_SAI1_RXD4__AUDIOMIX_SAI6_TX_BCLK
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
+                       MX8MP_IOMUXC_SAI1_TXD5__AUDIOMIX_SAI6_TX_DATA00
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
+                       MX8MP_IOMUXC_SAI1_TXD7__AUDIOMIX_SAI6_MCLK
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
+                       MX8MP_IOMUXC_SAI1_RXD5__AUDIOMIX_SAI6_RX_DATA00
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
+               >;
+       };
+
+       pinctrl_tas_reset: tasresetgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI5_RXD3__GPIO3_IO24
+                               MX8MP_DSE_X1
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_UART1_RXD__UART1_DCE_RX
+                               (MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_UART1_TXD__UART1_DCE_TX
+                               (MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX
+                               (MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX
+                               (MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_SAI3_RXD__UART2_DCE_RTS
+                               (MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_SAI3_RXC__UART2_DCE_CTS
+                               (MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO02__WDOG1_WDOG_B
+                               (MX8MP_DSE_X6 | MX8MP_HYS_SCHMITT)
+               >;
+       };
+
+       pinctrl_wl_int: wlintgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO13__GPIO1_IO13
+                               (MX8MP_PULL_UP | MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_wl_reg: wlreggrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19
+                               MX8MP_DSE_X1
+               >;
+       };
+};
+
+&sai6 {
+       assigned-clocks = <&clk IMX8MP_CLK_SAI6>;
+       assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <12288000>;
+       pinctrl-0 = <&pinctrl_sai6>;
+       pinctrl-names = "default";
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-0 = <&pinctrl_uart1>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-0 = <&pinctrl_uart2>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "infineon,cyw43439-bt", "brcm,bcm4329-bt";
+               interrupt-parent = <&gpio1>;
+               interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
+               interrupt-names = "host-wakeup";
+               device-wakeup-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
+               max-speed = <921600>;
+               pinctrl-0 = <&pinctrl_bt>;
+               pinctrl-names = "default";
+               shutdown-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
+               vbat-supply = <&reg_3v3_per>;
+               vddio-supply = <&reg_3v3_per>;
+       };
+};
+
+&usb3_0 {
+       status = "okay";
+};
+
+&usb3_1 {
+       status = "okay";
+};
+
+&usb3_phy0 {
+       status = "okay";
+};
+
+&usb3_phy1 {
+       status = "okay";
+};
+
+&usb_dwc3_0 {
+       dr_mode = "peripheral";
+};
+
+&usdhc2 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       assigned-clocks = <&clk IMX8MP_CLK_USDHC2>;
+       assigned-clock-rates = <50000000>;
+       cap-power-off-card;
+       keep-power-in-suspend;
+       max-frequency = <50000000>;
+       mmc-pwrseq = <&wifi_powerseq>;
+       non-removable;
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-names = "default";
+       sd-uhs-sdr25;
+       vmmc-supply = <&reg_3v3_per>;
+       status = "okay";
+
+       wifi@1 {
+               compatible = "infineon,cyw43439-fmac", "brcm,bcm4329-fmac";
+               reg = <1>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "host-wake";
+               pinctrl-0 = <&pinctrl_wl_int>;
+               pinctrl-names = "default";
+               brcm,board-type = "GOcontroll,moduline";
+       };
+};
+
+&wdog1 {
+       pinctrl-0 = <&pinctrl_wdog>;
+       pinctrl-names = "default";
+       fsl,ext-reset-output;
+       status = "okay";
+};
diff --git a/src/arm64/freescale/imx8mp-tx8p-ml81.dtsi b/src/arm64/freescale/imx8mp-tx8p-ml81.dtsi
new file mode 100644 (file)
index 0000000..fe8ba16
--- /dev/null
@@ -0,0 +1,548 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2020 Lothar Waßmann <LW@KARO-electronics.de>
+ * 2025 Maud Spierings <maudspierings@gocontroll.com>
+ */
+
+#include "imx8mp.dtsi"
+
+/ {
+       /* PHY regulator */
+       regulator-3v3-etn {
+               compatible = "regulator-fixed";
+               gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-0 = <&pinctrl_reg_3v3_etn>;
+               pinctrl-names = "default";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "3v3-etn";
+               vin-supply = <&reg_vdd_3v3>;
+       };
+};
+
+&A53_0 {
+       cpu-supply = <&reg_vdd_arm>;
+};
+
+&A53_1 {
+       cpu-supply = <&reg_vdd_arm>;
+};
+
+&A53_2 {
+       cpu-supply = <&reg_vdd_arm>;
+};
+
+&A53_3 {
+       cpu-supply = <&reg_vdd_arm>;
+};
+
+&eqos {
+       assigned-clocks = <&clk IMX8MP_CLK_ENET_AXI>,
+                         <&clk IMX8MP_CLK_ENET_QOS_TIMER>,
+                         <&clk IMX8MP_CLK_ENET_QOS>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_266M>,
+                                <&clk IMX8MP_SYS_PLL2_100M>,
+                                <&clk IMX8MP_SYS_PLL2_50M>;
+       assigned-clock-rates = <266000000>, <100000000>, <50000000>;
+       phy-handle = <&ethphy0>;
+       phy-mode = "rmii";
+       pinctrl-0 = <&pinctrl_eqos>;
+       pinctrl-1 = <&pinctrl_eqos_sleep>;
+       pinctrl-names = "default", "sleep";
+       status = "okay";
+
+       mdio {
+               compatible = "snps,dwmac-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-0 = <&pinctrl_ethphy_rst_b>;
+               pinctrl-names = "default";
+               reset-delay-us = <25000>;
+               reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
+
+               ethphy0: ethernet-phy@0 {
+                       reg = <0>;
+                       interrupt-parent = <&gpio4>;
+                       interrupts = <21 IRQ_TYPE_EDGE_FALLING>;
+                       clocks = <&clk IMX8MP_CLK_ENET_QOS>;
+                       pinctrl-0 = <&pinctrl_ethphy_int_b>;
+                       pinctrl-names = "default";
+                       smsc,disable-energy-detect;
+               };
+       };
+};
+
+&gpio1 {
+       gpio-line-names = "SODIMM_152",
+                         "SODIMM_42",
+                         "PMIC_WDOG_B SODIMM_153",
+                         "PMIC_IRQ_B",
+                         "SODIMM_154",
+                         "SODIMM_155",
+                         "SODIMM_156",
+                         "SODIMM_157",
+                         "SODIMM_158",
+                         "SODIMM_159",
+                         "SODIMM_161",
+                         "SODIMM_162",
+                         "SODIMM_34",
+                         "SODIMM_36",
+                         "SODIMM_27",
+                         "SODIMM_28",
+                         "ENET_MDC",
+                         "ENET_MDIO",
+                         "",
+                         "ENET_XTAL1/CLKIN",
+                         "ENET_TXD1",
+                         "ENET_TXD0",
+                         "ENET_TXEN",
+                         "ENET_POWER",
+                         "ENET_COL/CRS_DV",
+                         "ENET_RXER",
+                         "ENET_RXD0",
+                         "ENET_RXD1",
+                         "",
+                         "",
+                         "",
+                         "";
+};
+
+&gpio2 {
+       gpio-line-names = "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "SODIMM_51",
+                         "SODIMM_57",
+                         "SODIMM_56",
+                         "SODIMM_52",
+                         "SODIMM_53",
+                         "SODIMM_54",
+                         "SODIMM_55",
+                         "SODIMM_15",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "";
+};
+
+&gpio3 {
+       gpio-line-names = "",
+                         "",
+                         "EMMC_DS",
+                         "EMMC_DAT5",
+                         "EMMC_DAT6",
+                         "EMMC_DAT7",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "EMMC_DAT0",
+                         "EMMC_DAT1",
+                         "EMMC_DAT2",
+                         "EMMC_DAT3",
+                         "",
+                         "EMMC_DAT4",
+                         "",
+                         "EMMC_CLK",
+                         "EMMC_CMD",
+                         "SODIMM_75",
+                         "SODIMM_145",
+                         "SODIMM_163",
+                         "SODIMM_164",
+                         "SODIMM_165",
+                         "SODIMM_143",
+                         "SODIMM_144",
+                         "SODIMM_72",
+                         "SODIMM_73",
+                         "SODIMM_74",
+                         "SODIMM_93",
+                         "",
+                         "";
+};
+
+&gpio4 {
+       gpio-line-names = "SODIMM_98",
+                         "SODIMM_99",
+                         "SODIMM_100",
+                         "SODIMM_101",
+                         "SODIMM_45",
+                         "SODIMM_43",
+                         "SODIMM_105",
+                         "SODIMM_106",
+                         "SODIMM_107",
+                         "SODIMM_108",
+                         "SODIMM_104",
+                         "SODIMM_103",
+                         "SODIMM_115",
+                         "SODIMM_114",
+                         "SODIMM_113",
+                         "SODIMM_112",
+                         "SODIMM_109",
+                         "SODIMM_110",
+                         "SODIMM_95",
+                         "SODIMM_96",
+                         "SODIMM_97",
+                         "ENET_nINT",
+                         "ENET_nRST",
+                         "SODIMM_84",
+                         "SODIMM_87",
+                         "SODIMM_86",
+                         "SODIMM_85",
+                         "SODIMM_83",
+                         "",
+                         "SODIMM_66",
+                         "SODIMM_65",
+                         "";
+};
+
+&gpio5 {
+       gpio-line-names = "",
+                         "",
+                         "",
+                         "SODIMM_76",
+                         "SODIMM_81",
+                         "SODIMM_146",
+                         "SODIMM_48",
+                         "SODIMM_46",
+                         "SODIMM_47",
+                         "SODIMM_44",
+                         "SODIMM_49",
+                         "",
+                         "SODIMM_70",
+                         "SODIMM_69",
+                         "PMIC_SCL",
+                         "PMIC_SDA",
+                         "SODIMM_41",
+                         "SODIMM_40",
+                         "SODIMM_148",
+                         "SODIMM_149",
+                         "SODIMM_150",
+                         "SODIMM_151",
+                         "SODIMM_60",
+                         "SODIMM_59",
+                         "SODIMM_64",
+                         "SODIMM_63",
+                         "SODIMM_62",
+                         "SODIMM_61",
+                         "SODIMM_68",
+                         "SODIMM_67",
+                         "",
+                         "";
+};
+
+&i2c1 {
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "okay";
+
+       pmic@25 {
+               compatible = "nxp,pca9450c";
+               reg = <0x25>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-0 = <&pinctrl_pmic>;
+               pinctrl-names = "default";
+
+               regulators {
+                       reg_vdd_soc: BUCK1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <900000>;
+                               regulator-min-microvolt = <805000>;
+                               regulator-name = "vdd-soc";
+                               regulator-ramp-delay = <3125>;
+                       };
+
+                       reg_vdd_arm: BUCK2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <950000>;
+                               regulator-min-microvolt = <805000>;
+                               regulator-name = "vdd-core";
+                               regulator-ramp-delay = <3125>;
+                               nxp,dvs-run-voltage = <950000>;
+                               nxp,dvs-standby-voltage = <850000>;
+                       };
+
+                       reg_vdd_3v3: BUCK4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-name = "3v3";
+                       };
+
+                       reg_nvcc_nand: BUCK5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "nvcc-nand";
+                       };
+
+                       reg_nvcc_dram: BUCK6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-min-microvolt = <1100000>;
+                               regulator-name = "nvcc-dram";
+                       };
+
+                       reg_snvs_1v8: LDO1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "snvs-1v8";
+                       };
+
+                       ldo2_reg: LDO2 {
+                               regulator-always-on;
+                               regulator-max-microvolt = <1150000>;
+                               regulator-min-microvolt = <800000>;
+                               regulator-name = "LDO2";
+                       };
+
+                       reg_vdda_1v8: LDO3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "vdda-1v8";
+                       };
+
+                       ldo4_reg: LDO4 {
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <800000>;
+                               regulator-name = "LDO4";
+                       };
+
+                       ldo5_reg: LDO5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "LDO5";
+                       };
+               };
+       };
+};
+
+&iomuxc {
+       pinctrl_eqos: eqosgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ENET_TD2__CCM_ENET_QOS_CLOCK_GENERATE_REF_CLK
+                               (MX8MP_DSE_X4 | MX8MP_PULL_UP | MX8MP_PULL_ENABLE | MX8MP_SION)
+                       MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC
+                               (MX8MP_DSE_X4 | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_MDIO__ENET_QOS_MDIO
+                               (MX8MP_DSE_X4 | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_TD0__ENET_QOS_RGMII_TD0
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST)
+                       MX8MP_IOMUXC_ENET_TD1__ENET_QOS_RGMII_TD1
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST)
+                       MX8MP_IOMUXC_ENET_RD0__ENET_QOS_RGMII_RD0
+                               (MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_RD1__ENET_QOS_RGMII_RD1
+                               (MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_RXC__ENET_QOS_RX_ER
+                               (MX8MP_FSEL_FAST | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_RX_CTL__ENET_QOS_RGMII_RX_CTL
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_TX_CTL__ENET_QOS_RGMII_TX_CTL
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST)
+               >;
+       };
+
+       pinctrl_eqos_sleep: eqos-sleep-grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ENET_TD2__GPIO1_IO19
+                               (MX8MP_ODE_ENABLE | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_MDC__GPIO1_IO16
+                               (MX8MP_ODE_ENABLE | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_MDIO__GPIO1_IO17
+                               (MX8MP_ODE_ENABLE | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_TD0__GPIO1_IO21
+                               (MX8MP_ODE_ENABLE | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_TD1__GPIO1_IO20
+                               (MX8MP_ODE_ENABLE | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_RD0__GPIO1_IO26
+                               (MX8MP_ODE_ENABLE | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_RD1__GPIO1_IO27
+                               (MX8MP_ODE_ENABLE | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_RXC__GPIO1_IO25
+                               (MX8MP_ODE_ENABLE | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_RX_CTL__GPIO1_IO24
+                               (MX8MP_ODE_ENABLE | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_ENET_TX_CTL__GPIO1_IO22
+                               (MX8MP_ODE_ENABLE | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_ethphy_int_b: ethphy-int-bgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI2_RXFS__GPIO4_IO21
+                               (MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
+               >;
+       };
+
+       pinctrl_ethphy_rst_b: ethphy-rst-bgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI2_RXC__GPIO4_IO22
+                               (MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C1_SCL__I2C1_SCL
+                               MX8MP_I2C_DEFAULT
+                       MX8MP_IOMUXC_I2C1_SDA__I2C1_SDA
+                               MX8MP_I2C_DEFAULT
+               >;
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C1_SCL__GPIO5_IO14
+                               MX8MP_I2C_DEFAULT
+                       MX8MP_IOMUXC_I2C1_SDA__GPIO5_IO15
+                               MX8MP_I2C_DEFAULT
+               >;
+       };
+
+       pinctrl_pmic: pmicgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO03__GPIO1_IO03
+                               (MX8MP_PULL_UP | MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_reg_3v3_etn: reg-3v3-etngrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ENET_TXC__GPIO1_IO23
+                               (MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK
+                               (MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD
+                               MX8MP_USDHC_DATA_DEFAULT
+                       MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0
+                               MX8MP_USDHC_DATA_DEFAULT
+                       MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1
+                               MX8MP_USDHC_DATA_DEFAULT
+                       MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2
+                               MX8MP_USDHC_DATA_DEFAULT
+                       MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3
+                               MX8MP_USDHC_DATA_DEFAULT
+                       MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4
+                               MX8MP_USDHC_DATA_DEFAULT
+                       MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5
+                               MX8MP_USDHC_DATA_DEFAULT
+                       MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6
+                               MX8MP_USDHC_DATA_DEFAULT
+                       MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7
+                               MX8MP_USDHC_DATA_DEFAULT
+                       MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE
+                               (MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK
+                               (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7
+                               (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE
+                               (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE)
+               >;
+       };
+
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE)
+                       MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD
+                               (MX8MP_DSE_X6 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0
+                               (MX8MP_DSE_X6 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1
+                               (MX8MP_DSE_X6 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2
+                               (MX8MP_DSE_X6 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3
+                               (MX8MP_DSE_X6 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4
+                               (MX8MP_DSE_X6 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5
+                               (MX8MP_DSE_X6 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6
+                               (MX8MP_DSE_X6 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7
+                               (MX8MP_DSE_X6 | MX8MP_USDHC_DATA_DEFAULT)
+                       MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE
+                               (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE)
+               >;
+       };
+};
+
+&usdhc3 {
+       assigned-clocks = <&clk IMX8MP_CLK_USDHC3>;
+       assigned-clock-rates = <200000000>;
+       bus-width = <8>;
+       max-frequency = <200000000>;
+       non-removable;
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       vmmc-supply = <&reg_vdd_3v3>;
+       voltage-ranges = <3300 3300>;
+       vqmmc-supply = <&reg_nvcc_nand>;
+       status = "okay";
+};
index b59da91fdd041f0630e54e7487b67388746fee72..29f080904482c53c0d04321d53135b51e7fc24c5 100644 (file)
                states = <3300000 0x0 1800000 0x1>;
                vin-supply = <&ldo5>;
        };
+
+       reg_phy_supply: regulator-phy-supply {
+               compatible = "regulator-fixed";
+               regulator-name = "phy-supply";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-enable-ramp-delay = <20000>;
+               gpio = <&gpio2 20 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       reg_phy_vddio: regulator-phy-vddio {
+               compatible = "regulator-fixed";
+               regulator-name = "vddio-1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
 };
 
 &A53_0 {
        cpu-supply = <&buck2>;
 };
 
+&eqos {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_eqos>;
+       /*
+        * The required RGMII TX and RX 2ns delays are implemented directly
+        * in hardware via passive delay elements on the SOM PCB.
+        * No delay configuration is needed in software via PHY driver.
+        */
+       phy-mode = "rgmii";
+       phy-handle = <&ethphy0>;
+       status = "okay";
+
+       mdio {
+               compatible = "snps,dwmac-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@4 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <4>;
+                       reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <10000>;
+                       reset-deassert-us = <100000>;
+                       vddio-supply = <&reg_phy_vddio>;
+
+                       leds {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               led@0 {
+                                       reg = <0>;
+                                       color = <LED_COLOR_ID_YELLOW>;
+                                       function = LED_FUNCTION_LAN;
+                                       linux,default-trigger = "netdev";
+                               };
+
+                               led@1 {
+                                       reg = <1>;
+                                       color = <LED_COLOR_ID_GREEN>;
+                                       function = LED_FUNCTION_LAN;
+                                       linux,default-trigger = "netdev";
+                               };
+                       };
+               };
+       };
+};
+
 &i2c1 {
        clock-frequency = <400000>;
        pinctrl-names = "default";
 
 &iomuxc {
 
+       pinctrl_eqos: eqosgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC                             0x2
+                       MX8MP_IOMUXC_ENET_MDIO__ENET_QOS_MDIO                           0x2
+                       MX8MP_IOMUXC_ENET_RD0__ENET_QOS_RGMII_RD0                       0x90
+                       MX8MP_IOMUXC_ENET_RD1__ENET_QOS_RGMII_RD1                       0x90
+                       MX8MP_IOMUXC_ENET_RD2__ENET_QOS_RGMII_RD2                       0x90
+                       MX8MP_IOMUXC_ENET_RD3__ENET_QOS_RGMII_RD3                       0x90
+                       MX8MP_IOMUXC_ENET_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK       0x90
+                       MX8MP_IOMUXC_ENET_RX_CTL__ENET_QOS_RGMII_RX_CTL                 0x90
+                       MX8MP_IOMUXC_ENET_TD0__ENET_QOS_RGMII_TD0                       0x16
+                       MX8MP_IOMUXC_ENET_TD1__ENET_QOS_RGMII_TD1                       0x16
+                       MX8MP_IOMUXC_ENET_TD2__ENET_QOS_RGMII_TD2                       0x16
+                       MX8MP_IOMUXC_ENET_TD3__ENET_QOS_RGMII_TD3                       0x16
+                       MX8MP_IOMUXC_ENET_TX_CTL__ENET_QOS_RGMII_TX_CTL                 0x16
+                       MX8MP_IOMUXC_ENET_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK       0x16
+                       MX8MP_IOMUXC_SD2_WP__GPIO2_IO20                                 0x10
+                       MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10                             0x150
+               >;
+       };
+
        pinctrl_i2c1: i2c1grp {
                fsl,pins = <
                        MX8MP_IOMUXC_SD1_DATA4__I2C1_SCL                                0x400001c2
index 10713c34ff3977474f783a3ccd3ad22c905d40d6..cbf0c9a740faa6bcdcfe56394f6c696fd3f48a64 100644 (file)
        pinctrl-0 = <&pinctrl_usdhc3>;
        pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clk IMX8MP_CLK_USDHC3>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
        non-removable;
        status = "okay";
index 568d24265ddf8ea528346252615a1d5064e63a42..12de7cf1e8538e38df2ed6f2c8697d4f7597962a 100644 (file)
 &gpio3 {
        gpio-line-names =
                "", "", "", "", "", "", "m2_rst", "",
-               "", "", "", "", "", "", "m2_gpio10", "",
+               "", "", "", "", "", "", "m2_wdis2#", "",
                "", "", "", "", "", "", "", "",
                "", "", "", "", "", "", "", "";
 };
        gpio-line-names =
                "", "", "m2_off#", "", "", "", "", "",
                "", "", "", "", "", "", "", "",
-               "", "", "m2_wdis#", "", "", "", "", "",
+               "", "", "m2_wdis1#", "", "", "", "", "",
                "", "", "", "", "", "", "", "rs485_en";
 };
 
                        MX8MP_IOMUXC_GPIO1_IO09__GPIO1_IO09     0x40000040 /* DIO0 */
                        MX8MP_IOMUXC_GPIO1_IO11__GPIO1_IO11     0x40000040 /* DIO1 */
                        MX8MP_IOMUXC_SAI1_RXD0__GPIO4_IO02      0x40000040 /* M2SKT_OFF# */
-                       MX8MP_IOMUXC_SAI1_TXD6__GPIO4_IO18      0x40000150 /* M2SKT_WDIS# */
+                       MX8MP_IOMUXC_SAI1_TXD6__GPIO4_IO18      0x40000150 /* M2SKT_WDIS1# */
                        MX8MP_IOMUXC_SD1_DATA4__GPIO2_IO06      0x40000040 /* M2SKT_PIN20 */
                        MX8MP_IOMUXC_SD1_STROBE__GPIO2_IO11     0x40000040 /* M2SKT_PIN22 */
                        MX8MP_IOMUXC_SD2_CLK__GPIO2_IO13        0x40000150 /* PCIE1_WDIS# */
                        MX8MP_IOMUXC_SD2_CMD__GPIO2_IO14        0x40000150 /* PCIE3_WDIS# */
                        MX8MP_IOMUXC_SD2_DATA3__GPIO2_IO18      0x40000150 /* PCIE2_WDIS# */
                        MX8MP_IOMUXC_NAND_DATA00__GPIO3_IO06    0x40000040 /* M2SKT_RST# */
-                       MX8MP_IOMUXC_NAND_DQS__GPIO3_IO14       0x40000040 /* M2SKT_GPIO10 */
+                       MX8MP_IOMUXC_NAND_DQS__GPIO3_IO14       0x40000150 /* M2KST_WDIS2# */
                        MX8MP_IOMUXC_SAI3_TXD__GPIO5_IO01       0x40000104 /* UART_TERM */
                        MX8MP_IOMUXC_SAI3_TXFS__GPIO4_IO31      0x40000104 /* UART_RS485 */
                        MX8MP_IOMUXC_SAI3_TXC__GPIO5_IO00       0x40000104 /* UART_HALF */
index 948b88cf5e9dff38a9dd28eb4903c951529cb443..d6d21e8498dcf9f9e3848316cbc9dd15d3bad605 100644 (file)
                cpu-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <2000>;
-                       thermal-sensors = <&tmu 0>;
+                       thermal-sensors = <&tmu 1>;
                        trips {
                                cpu_alert0: trip0 {
                                        temperature = <85000>;
                                                <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                               <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                                               <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&gpu3d THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&gpu2d THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&npu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
                        };
                };
                soc-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <2000>;
-                       thermal-sensors = <&tmu 1>;
+                       thermal-sensors = <&tmu 0>;
                        trips {
                                soc_alert0: trip0 {
                                        temperature = <85000>;
                                                <&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                <&A53_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                <&A53_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                               <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                                               <&A53_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&gpu3d THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&gpu2d THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&npu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
                        };
                };
 
                                        pgc_vpu_g1: power-domain@11 {
                                                #power-domain-cells = <0>;
-                                               power-domains = <&pgc_vpumix>;
                                                reg = <IMX8MP_POWER_DOMAIN_VPU_G1>;
-                                               clocks = <&clk IMX8MP_CLK_VPU_G1_ROOT>;
                                        };
 
                                        pgc_vpu_g2: power-domain@12 {
                                                #power-domain-cells = <0>;
-                                               power-domains = <&pgc_vpumix>;
                                                reg = <IMX8MP_POWER_DOMAIN_VPU_G2>;
-                                               clocks = <&clk IMX8MP_CLK_VPU_G2_ROOT>;
-
                                        };
 
                                        pgc_vpu_vc8000e: power-domain@13 {
                                                #power-domain-cells = <0>;
-                                               power-domains = <&pgc_vpumix>;
                                                reg = <IMX8MP_POWER_DOMAIN_VPU_VC8000E>;
-                                               clocks = <&clk IMX8MP_CLK_VPU_VC8KE_ROOT>;
                                        };
 
                                        pgc_hdmimix: power-domain@14 {
                                 <&clk IMX8MP_CLK_GPU_ROOT>,
                                 <&clk IMX8MP_CLK_GPU_AHB>;
                        clock-names = "core", "shader", "bus", "reg";
+                       #cooling-cells = <2>;
                        assigned-clocks = <&clk IMX8MP_CLK_GPU3D_CORE>,
                                          <&clk IMX8MP_CLK_GPU3D_SHADER_CORE>;
                        assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_1000M>,
                                 <&clk IMX8MP_CLK_GPU_ROOT>,
                                 <&clk IMX8MP_CLK_GPU_AHB>;
                        clock-names = "core", "bus", "reg";
+                       #cooling-cells = <2>;
                        assigned-clocks = <&clk IMX8MP_CLK_GPU2D_CORE>;
                        assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_1000M>;
                        assigned-clock-rates = <1000000000>;
                        interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk IMX8MP_CLK_VPU_G1_ROOT>;
                        assigned-clocks = <&clk IMX8MP_CLK_VPU_G1>;
-                       assigned-clock-parents = <&clk IMX8MP_VPU_PLL_OUT>;
-                       assigned-clock-rates = <600000000>;
+                       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>;
+                       assigned-clock-rates = <800000000>;
                        power-domains = <&vpumix_blk_ctrl IMX8MP_VPUBLK_PD_G1>;
                };
 
                        reg = <0x38310000 0x10000>;
                        interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk IMX8MP_CLK_VPU_G2_ROOT>;
-                       assigned-clocks = <&clk IMX8MP_CLK_VPU_G2>;
-                       assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_1000M>;
-                       assigned-clock-rates = <500000000>;
+                       assigned-clocks = <&clk IMX8MP_CLK_VPU_G2>, <&clk IMX8MP_VPU_PLL_OUT>;
+                       assigned-clock-parents = <&clk IMX8MP_VPU_PLL_OUT>;
+                       assigned-clock-rates = <700000000>, <700000000>;
                        power-domains = <&vpumix_blk_ctrl IMX8MP_VPUBLK_PD_G2>;
                };
 
                                 <&clk IMX8MP_CLK_VPU_G2_ROOT>,
                                 <&clk IMX8MP_CLK_VPU_VC8KE_ROOT>;
                        clock-names = "g1", "g2", "vc8000e";
-                       assigned-clocks = <&clk IMX8MP_CLK_VPU_BUS>, <&clk IMX8MP_VPU_PLL>;
-                       assigned-clock-parents = <&clk IMX8MP_VPU_PLL_OUT>;
-                       assigned-clock-rates = <600000000>, <600000000>;
+                       assigned-clocks = <&clk IMX8MP_CLK_VPU_BUS>;
+                       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>;
+                       assigned-clock-rates = <800000000>;
                        interconnects = <&noc IMX8MP_ICM_VPU_G1 &noc IMX8MP_ICN_VIDEO>,
                                        <&noc IMX8MP_ICM_VPU_G2 &noc IMX8MP_ICN_VIDEO>,
                                        <&noc IMX8MP_ICM_VPU_H1 &noc IMX8MP_ICN_VIDEO>;
                                 <&clk IMX8MP_CLK_ML_AXI>,
                                 <&clk IMX8MP_CLK_ML_AHB>;
                        clock-names = "core", "shader", "bus", "reg";
+                       #cooling-cells = <2>;
                        power-domains = <&pgc_mlmix>;
                };
 
diff --git a/src/arm64/freescale/imx8qm-mek-ov5640-csi0.dtso b/src/arm64/freescale/imx8qm-mek-ov5640-csi0.dtso
new file mode 100644 (file)
index 0000000..ceb63c2
--- /dev/null
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 NXP
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/media/video-interfaces.h>
+
+&i2c_mipi_csi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       clock-frequency = <100000>;
+       pinctrl-0 = <&pinctrl_i2c_mipi_csi0>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       ov5640_mipi_0: camera@3c {
+               compatible = "ovti,ov5640";
+               reg = <0x3c>;
+               clocks = <&xtal24m>;
+               clock-names = "xclk";
+               pinctrl-0 = <&pinctrl_mipi_csi0>;
+               pinctrl-names = "default";
+               powerdown-gpios = <&lsio_gpio1 28 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&lsio_gpio1 27 GPIO_ACTIVE_LOW>;
+               AVDD-supply = <&reg_2v8>;
+               DVDD-supply = <&reg_1v5>;
+               DOVDD-supply = <&reg_1v8>;
+
+               port {
+                       ov5640_mipi_0_ep: endpoint {
+                               bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+                               data-lanes = <1 2>;
+                               remote-endpoint = <&mipi_csi0_in>;
+                       };
+               };
+       };
+};
+
+&irqsteer_csi0 {
+       status = "okay";
+};
+
+&isi {
+       status = "okay";
+};
+
+&mipi_csi_0 {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       mipi_csi0_in: endpoint {
+                               data-lanes = <1 2>;
+                               remote-endpoint = <&ov5640_mipi_0_ep>;
+                       };
+               };
+       };
+};
diff --git a/src/arm64/freescale/imx8qm-mek-ov5640-csi1.dtso b/src/arm64/freescale/imx8qm-mek-ov5640-csi1.dtso
new file mode 100644 (file)
index 0000000..9e6d33c
--- /dev/null
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 NXP
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/media/video-interfaces.h>
+
+&i2c_mipi_csi1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       clock-frequency = <100000>;
+       pinctrl-0 = <&pinctrl_i2c_mipi_csi1>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       ov5640_mipi_1: camera@3c {
+               compatible = "ovti,ov5640";
+               reg = <0x3c>;
+               clocks = <&xtal24m>;
+               clock-names = "xclk";
+               pinctrl-0 = <&pinctrl_mipi_csi1>;
+               pinctrl-names = "default";
+               powerdown-gpios = <&lsio_gpio1 31 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&lsio_gpio1 30 GPIO_ACTIVE_LOW>;
+               AVDD-supply = <&reg_2v8>;
+               DVDD-supply = <&reg_1v5>;
+               DOVDD-supply = <&reg_1v8>;
+
+               port {
+                       ov5640_mipi_1_ep: endpoint {
+                               bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+                               data-lanes = <1 2>;
+                               remote-endpoint = <&mipi_csi1_in>;
+                       };
+               };
+       };
+};
+
+&irqsteer_csi1 {
+       status = "okay";
+};
+
+&isi {
+       status = "okay";
+};
+
+&mipi_csi_1 {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       mipi_csi1_in: endpoint {
+                               data-lanes = <1 2>;
+                               remote-endpoint = <&ov5640_mipi_1_ep>;
+                       };
+               };
+       };
+};
index 353f825a8ac5db1ac70d1560318c134d188ae7ef..95523c5381357b66a9d79a2c90926e6dd1b921d0 100644 (file)
                reg = <0x00000000 0x80000000 0 0x40000000>;
        };
 
+       xtal24m: clock-xtal24m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+               clock-output-names = "xtal_24MHz";
+       };
+
        reserved-memory {
                #address-cells = <2>;
                #size-cells = <2>;
                        reg = <0 0x94300000 0 0x100000>;
                        no-map;
                };
+
+               /* global autoconfigured region for contiguous allocations */
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       alloc-ranges = <0 0xc0000000 0 0x3c000000>;
+                       size = <0 0x3c000000>;
+                       linux,cma-default;
+                       reusable;
+               };
        };
 
        lvds_backlight0: backlight-lvds0 {
                default-brightness-level = <80>;
        };
 
+       i2c-mux {
+               compatible = "i2c-mux-gpio";
+               mux-gpios = <&lsio_gpio5 3 GPIO_ACTIVE_HIGH>; /* needs to be an unused GPIO */
+               i2c-parent = <&i2c1>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       wm8960: audio-codec@1a {
+                               compatible = "wlf,wm8960";
+                               reg = <0x1a>;
+                               clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
+                               clock-names = "mclk";
+                               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>;
+                               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>;
+                       };
+               };
+
+               i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       wm8962: wm8962@1a {
+                               compatible = "wlf,wm8962";
+                               reg = <0x1a>;
+                               clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
+                               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>;
+                               DCVDD-supply = <&reg_audio_1v8>;
+                               DBVDD-supply = <&reg_audio_1v8>;
+                               AVDD-supply = <&reg_audio_1v8>;
+                               CPVDD-supply = <&reg_audio_1v8>;
+                               MICVDD-supply = <&reg_audio_3v3>;
+                               PLLVDD-supply = <&reg_audio_1v8>;
+                               SPKVDD1-supply = <&reg_audio_5v>;
+                               SPKVDD2-supply = <&reg_audio_5v>;
+                       };
+               };
+
+       };
+
        mux-controller {
                compatible = "nxp,cbdtu02043", "gpio-sbu-mux";
                pinctrl-names = "default";
                };
        };
 
+       reg_1v5: regulator-1v5 {
+               compatible = "regulator-fixed";
+               regulator-name = "1v5";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+       };
+
+       reg_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       reg_2v8: regulator-2v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "2v8";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+       };
+
        reg_usdhc2_vmmc: usdhc2-vmmc {
                compatible = "regulator-fixed";
                regulator-name = "SD1_SPWR";
                                "Mic Jack", "MICB";
        };
 
+       sound-wm8962 {
+               compatible = "fsl,imx-audio-wm8962";
+               model = "wm8962-audio";
+               audio-cpu = <&sai1>;
+               audio-codec = <&wm8962>;
+               hp-det-gpios = <&lsio_gpio0 31 GPIO_ACTIVE_HIGH>;
+               audio-routing = "Headphone Jack", "HPOUTL",
+                               "Headphone Jack", "HPOUTR",
+                               "Ext Spk", "SPKOUTL",
+                               "Ext Spk", "SPKOUTR",
+                               "AMIC", "MICBIAS",
+                               "IN1R", "AMIC",
+                               "IN3R", "AMIC";
+       };
+
        imx8qm-cm4-0 {
                compatible = "fsl,imx8qm-cm4";
                clocks = <&clk_dummy>;
        scl-gpios = <&lsio_gpio0 14 GPIO_ACTIVE_HIGH>;
        sda-gpios = <&lsio_gpio0 15 GPIO_ACTIVE_HIGH>;
        status = "okay";
-
-       wm8960: audio-codec@1a {
-               compatible = "wlf,wm8960";
-               reg = <0x1a>;
-               clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
-               clock-names = "mclk";
-               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>;
-               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>;
-       };
 };
 
 &i2c1_lvds0 {
                >;
        };
 
+       pinctrl_i2c_mipi_csi0: i2c-mipi-csi0grp {
+               fsl,pins = <
+                       IMX8QM_MIPI_CSI0_I2C0_SCL_MIPI_CSI0_I2C0_SCL            0xc2000020
+                       IMX8QM_MIPI_CSI0_I2C0_SDA_MIPI_CSI0_I2C0_SDA            0xc2000020
+               >;
+       };
+
+       pinctrl_i2c_mipi_csi1: i2c-mipi-csi1grp {
+               fsl,pins = <
+                       IMX8QM_MIPI_CSI1_I2C0_SCL_MIPI_CSI1_I2C0_SCL            0xc2000020
+                       IMX8QM_MIPI_CSI1_I2C0_SDA_MIPI_CSI1_I2C0_SDA            0xc2000020
+               >;
+       };
+
        pinctrl_i2c0: i2c0grp {
                fsl,pins = <
                        IMX8QM_HDMI_TX0_TS_SCL_DMA_I2C0_SCL                     0x06000021
                >;
        };
 
+       pinctrl_mipi_csi0: mipi-csi0grp {
+               fsl,pins = <
+                       IMX8QM_MIPI_CSI0_GPIO0_00_LSIO_GPIO1_IO27               0xC0000041
+                       IMX8QM_MIPI_CSI0_GPIO0_01_LSIO_GPIO1_IO28               0xC0000041
+                       IMX8QM_MIPI_CSI0_MCLK_OUT_MIPI_CSI0_ACM_MCLK_OUT        0xC0000041
+               >;
+       };
+
+       pinctrl_mipi_csi1: mipi-csi1grp {
+               fsl,pins = <
+                       IMX8QM_MIPI_CSI1_GPIO0_00_LSIO_GPIO1_IO30               0xC0000041
+                       IMX8QM_MIPI_CSI1_GPIO0_01_LSIO_GPIO1_IO31               0xC0000041
+                       IMX8QM_MIPI_CSI1_MCLK_OUT_MIPI_CSI1_ACM_MCLK_OUT        0xC0000041
+               >;
+       };
+
        pinctrl_pciea: pcieagrp {
                fsl,pins = <
                        IMX8QM_PCIE_CTRL0_WAKE_B_LSIO_GPIO4_IO28                0x04000021
index 2bbdacb1313f9d4b766408959694fb45fafb35ca..4b7e685daa024e32aacbb00dedd436bfbb28eea1 100644 (file)
@@ -3,6 +3,31 @@
  * Copyright 2021 NXP
  */
 
+&isi {
+       compatible = "fsl,imx8qm-isi";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@2 {
+                       reg = <2>;
+
+                       isi_in_2: endpoint {
+                               remote-endpoint = <&mipi_csi0_out>;
+                       };
+               };
+
+               port@3 {
+                       reg = <3>;
+
+                       isi_in_3: endpoint {
+                               remote-endpoint = <&mipi_csi1_out>;
+                       };
+               };
+       };
+};
+
 &jpegdec {
        compatible = "nxp,imx8qm-jpgdec", "nxp,imx8qxp-jpgdec";
 };
 &jpegenc {
        compatible = "nxp,imx8qm-jpgenc", "nxp,imx8qxp-jpgenc";
 };
+
+&mipi_csi_0 {
+       compatible = "fsl,imx8qm-mipi-csi2", "fsl,imx8qxp-mipi-csi2";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+               };
+
+               port@1 {
+                       reg = <1>;
+
+                       mipi_csi0_out: endpoint {
+                               remote-endpoint = <&isi_in_2>;
+                       };
+               };
+       };
+};
+
+&mipi_csi_1 {
+       compatible = "fsl,imx8qm-mipi-csi2", "fsl,imx8qxp-mipi-csi2";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+               };
+
+               port@1 {
+                       reg = <1>;
+
+                       mipi_csi1_out: endpoint {
+                               remote-endpoint = <&isi_in_3>;
+                       };
+               };
+       };
+};
+
+&pi0_ipg_lpcg {
+       status = "disabled";
+};
+
+&pi0_misc_lpcg {
+       status = "disabled";
+};
+
+&pi0_pxl_lpcg {
+       status = "disabled";
+};
index 6fa31bc9ece8f940eb6c6619e6bcbe64274a0cd1..827e1365b5dae438d4628852ed6884aa846eb89b 100644 (file)
                        compatible = "fsl,imx8qm-iomuxc";
                };
 
+               scu_reset: reset-controller {
+                       compatible = "fsl,imx-scu-reset";
+                       #reset-cells = <1>;
+               };
+
                rtc: rtc {
                        compatible = "fsl,imx8qxp-sc-rtc";
                };
                        compatible = "fsl,imx8qxp-sc-thermal", "fsl,imx-sc-thermal";
                        #thermal-sensor-cells = <1>;
                };
+
+               watchdog {
+                       compatible = "fsl,imx8qm-sc-wdt", "fsl,imx-sc-wdt";
+                       timeout-sec = <60>;
+               };
        };
 
        thermal-zones {
        };
 
        /* sorted in register address */
+       #include "imx8-ss-security.dtsi"
        #include "imx8-ss-cm41.dtsi"
        #include "imx8-ss-audio.dtsi"
        #include "imx8-ss-vpu.dtsi"
diff --git a/src/arm64/freescale/imx8qxp-mek-ov5640-csi.dtso b/src/arm64/freescale/imx8qxp-mek-ov5640-csi.dtso
new file mode 100644 (file)
index 0000000..dd65ed8
--- /dev/null
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2024 NXP
+ */
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/media/video-interfaces.h>
+
+&i2c_mipi_csi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       clock-frequency = <100000>;
+       pinctrl-0 = <&pinctrl_i2c_mipi_csi0>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       ov5640_mipi: camera@3c {
+               compatible = "ovti,ov5640";
+               reg = <0x3c>;
+               clocks = <&xtal24m>;
+               clock-names = "xclk";
+               pinctrl-0 = <&pinctrl_mipi_csi0>;
+               pinctrl-names = "default";
+               powerdown-gpios = <&lsio_gpio3 7 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&lsio_gpio3 8 GPIO_ACTIVE_LOW>;
+               AVDD-supply = <&reg_2v8>;
+               DVDD-supply = <&reg_1v5>;
+               DOVDD-supply = <&reg_1v8>;
+
+               port {
+                       ov5640_mipi_ep: endpoint {
+                               bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+                               data-lanes = <1 2>;
+                               remote-endpoint = <&mipi_csi0_in>;
+                       };
+               };
+       };
+};
+
+&irqsteer_csi0 {
+       status = "okay";
+};
+
+&isi {
+       status = "okay";
+};
+
+&mipi_csi_0 {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       mipi_csi0_in: endpoint {
+                               data-lanes = <1 2>;
+                               remote-endpoint = <&ov5640_mipi_ep>;
+                       };
+               };
+       };
+};
index c93d123670bd2947ff2cc354d33b4a99b57ab078..e54be7f649ffb0e48c62cd97ea5d0c4c05903050 100644 (file)
                };
        };
 
+       i2c-mux {
+               compatible = "i2c-mux-gpio";
+               mux-gpios = <&lsio_gpio5 0 GPIO_ACTIVE_HIGH>; /* needs to be an unused GPIO */
+               i2c-parent = <&cm40_i2c>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       wm8960: audio-codec@1a {
+                               compatible = "wlf,wm8960";
+                               reg = <0x1a>;
+                               clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
+                               clock-names = "mclk";
+                               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>;
+                               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>;
+                       };
+               };
+
+               i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       wm8962: wm8962@1a {
+                               compatible = "wlf,wm8962";
+                               reg = <0x1a>;
+                               clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
+                               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>;
+                               DCVDD-supply = <&reg_audio_1v8>;
+                               DBVDD-supply = <&reg_audio_1v8>;
+                               AVDD-supply = <&reg_audio_1v8>;
+                               CPVDD-supply = <&reg_audio_1v8>;
+                               MICVDD-supply = <&reg_audio_3v3>;
+                               PLLVDD-supply = <&reg_audio_1v8>;
+                               SPKVDD1-supply = <&reg_audio_5v>;
+                               SPKVDD2-supply = <&reg_audio_5v>;
+                       };
+               };
+       };
+
+       reg_1v5: regulator-1v5 {
+               compatible = "regulator-fixed";
+               regulator-name = "1v5";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+       };
+
+       reg_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       reg_2v8: regulator-2v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "2v8";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+       };
+
        reg_pcieb: regulator-pcie {
                compatible = "regulator-fixed";
                regulator-max-microvolt = <3300000>;
                        no-map;
                };
 
+               /* global autoconfigured region for contiguous allocations */
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       alloc-ranges = <0 0xc0000000 0 0x3c000000>;
+                       size = <0 0x3c000000>;
+                       linux,cma-default;
+                       reusable;
+               };
+
                gpu_reserved: memory@880000000 {
                        no-map;
                        reg = <0x8 0x80000000 0 0x10000000>;
                                "LINPUT1", "Mic Jack",
                                "Mic Jack", "MICB";
        };
+
+       sound-wm8962 {
+               compatible = "fsl,imx-audio-wm8962";
+               model = "wm8962-audio";
+               audio-cpu = <&sai1>;
+               audio-codec = <&wm8962>;
+               hp-det-gpios = <&lsio_gpio1 0 GPIO_ACTIVE_HIGH>;
+               audio-routing = "Headphone Jack", "HPOUTL",
+                               "Headphone Jack", "HPOUTR",
+                               "Ext Spk", "SPKOUTL",
+                               "Ext Spk", "SPKOUTR",
+                               "AMIC", "MICBIAS",
+                               "IN3R", "AMIC",
+                               "IN1R", "AMIC";
+       };
 };
 
 &amix {
        sda-gpios = <&lsio_gpio1 9 GPIO_ACTIVE_HIGH>;
        status = "okay";
 
-       wm8960: audio-codec@1a {
-               compatible = "wlf,wm8960";
-               reg = <0x1a>;
-               clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
-               clock-names = "mclk";
-               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>;
-               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 {
                compatible = "ti,tca6416";
                reg = <0x20>;
                >;
        };
 
+       pinctrl_i2c_mipi_csi0: i2c-mipi-csi0grp {
+               fsl,pins = <
+                       IMX8QXP_MIPI_CSI0_I2C0_SCL_MIPI_CSI0_I2C0_SCL           0xc2000020
+                       IMX8QXP_MIPI_CSI0_I2C0_SDA_MIPI_CSI0_I2C0_SDA           0xc2000020
+               >;
+       };
+
        pinctrl_ioexp_rst: ioexprstgrp {
                fsl,pins = <
                        IMX8QXP_SPI2_SDO_LSIO_GPIO1_IO01                        0x06000021
                >;
        };
 
+       pinctrl_mipi_csi0: mipi-csi0grp {
+               fsl,pins = <
+                       IMX8QXP_MIPI_CSI0_GPIO0_01_LSIO_GPIO3_IO07              0xC0000041
+                       IMX8QXP_MIPI_CSI0_GPIO0_00_LSIO_GPIO3_IO08              0xC0000041
+                       IMX8QXP_MIPI_CSI0_MCLK_OUT_MIPI_CSI0_ACM_MCLK_OUT       0xC0000041
+               >;
+       };
+
        pinctrl_pcieb: pcieagrp {
                fsl,pins = <
                        IMX8QXP_PCIE_CTRL0_PERST_B_LSIO_GPIO4_IO00              0x06000021
index 3a087317591d8f1a18b0a96350cb3d13d37c4452..232cf25dadfcd1bfbed724de075a734f5b46b58f 100644 (file)
@@ -4,6 +4,86 @@
  *     Dong Aisheng <aisheng.dong@nxp.com>
  */
 
+&csi1_pxl_lpcg {
+       status = "disabled";
+};
+
+&csi1_core_lpcg {
+       status = "disabled";
+};
+
+&csi1_esc_lpcg {
+       status = "disabled";
+};
+
+&gpio0_mipi_csi1 {
+       status = "disabled";
+};
+
+&i2c_mipi_csi1 {
+       status = "disabled";
+};
+
+&irqsteer_csi1 {
+       status = "disabled";
+};
+
+&isi {
+       compatible = "fsl,imx8qxp-isi";
+       reg = <0x58100000 0x60000>;
+       interrupts = <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 301 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 302 IRQ_TYPE_LEVEL_HIGH>;
+       clocks = <&pdma0_lpcg IMX_LPCG_CLK_0>,
+                <&pdma1_lpcg IMX_LPCG_CLK_0>,
+                <&pdma2_lpcg IMX_LPCG_CLK_0>,
+                <&pdma3_lpcg IMX_LPCG_CLK_0>,
+                <&pdma4_lpcg IMX_LPCG_CLK_0>,
+                <&pdma5_lpcg IMX_LPCG_CLK_0>;
+       clock-names = "per0", "per1", "per2", "per3", "per4", "per5";
+       power-domains = <&pd IMX_SC_R_ISI_CH0>,
+                       <&pd IMX_SC_R_ISI_CH1>,
+                       <&pd IMX_SC_R_ISI_CH2>,
+                       <&pd IMX_SC_R_ISI_CH3>,
+                       <&pd IMX_SC_R_ISI_CH4>,
+                       <&pd IMX_SC_R_ISI_CH5>;
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@2 {
+                       reg = <2>;
+
+                       isi_in_2: endpoint {
+                               remote-endpoint = <&mipi_csi0_out>;
+                       };
+               };
+       };
+};
+
+&mipi_csi_0 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+               };
+
+               port@1 {
+                       reg = <1>;
+
+                       mipi_csi0_out: endpoint {
+                               remote-endpoint = <&isi_in_2>;
+                       };
+               };
+       };
+};
+
 &jpegdec {
        compatible = "nxp,imx8qxp-jpgdec";
 };
@@ -11,3 +91,7 @@
 &jpegenc {
        compatible = "nxp,imx8qxp-jpgenc";
 };
+
+&mipi_csi_1 {
+       status = "disabled";
+};
diff --git a/src/arm64/freescale/imx8qxp-ss-security.dtsi b/src/arm64/freescale/imx8qxp-ss-security.dtsi
new file mode 100644 (file)
index 0000000..15f1239
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2025 Actia Nordic AB
+ */
+
+&crypto {
+       compatible = "fsl,imx8qxp-caam", "fsl,sec-v4.0";
+};
+
+&sec_jr2 {
+       compatible = "fsl,imx8qxp-job-ring", "fsl,sec-v4.0-job-ring";
+};
+
+&sec_jr3 {
+       compatible = "fsl,imx8qxp-job-ring", "fsl,sec-v4.0-job-ring";
+};
index 05138326f0a572f45122f5ee425089f945fdc656..9e46e16a8dc06448c6eb1796a3ffe70acb09374a 100644 (file)
                        status = "disabled";
                };
 
+               scu_reset: reset-controller {
+                       compatible = "fsl,imx-scu-reset";
+                       #reset-cells = <1>;
+               };
+
                rtc: rtc {
                        compatible = "fsl,imx8qxp-sc-rtc";
                };
        /* sorted in register address */
        #include "imx8-ss-img.dtsi"
        #include "imx8-ss-vpu.dtsi"
+       #include "imx8-ss-security.dtsi"
        #include "imx8-ss-cm40.dtsi"
        #include "imx8-ss-gpu0.dtsi"
        #include "imx8-ss-adma.dtsi"
 
 #include "imx8qxp-ss-img.dtsi"
 #include "imx8qxp-ss-vpu.dtsi"
+#include "imx8qxp-ss-security.dtsi"
 #include "imx8qxp-ss-adma.dtsi"
 #include "imx8qxp-ss-conn.dtsi"
 #include "imx8qxp-ss-lsio.dtsi"
index 2562a35286c208869d11d7fb970ac84638f45088..13b01f3aa2a4950c37e72e04f6bfb5995dc19178 100644 (file)
                                         <&pcc4 IMX8ULP_CLK_PCTLE>;
                                clock-names = "gpio", "port";
                                gpio-ranges = <&iomuxc1 0 32 24>;
+                               ngpios = <24>;
                };
 
                gpiof: gpio@2d010000 {
                                         <&pcc4 IMX8ULP_CLK_PCTLF>;
                                clock-names = "gpio", "port";
                                gpio-ranges = <&iomuxc1 0 64 32>;
+                               ngpios = <32>;
                };
 
                per_bridge5: bus@2d800000 {
                                 <&pcc5 IMX8ULP_CLK_RGPIOD>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&iomuxc1 0 0 24>;
+                       ngpios = <24>;
                };
        };
 };
index 8491eb53120e6a9e21fccb2e5ea26371ee2bb4fb..e24e12f04526c3a08c0bdc6134297fb010e6e926 100644 (file)
                gpio = <&adp5585 6 GPIO_ACTIVE_LOW>;
        };
 
+       reg_m2_pwr: regulator-m2-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "M.2-power";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&pcal6524 13 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        reg_usdhc2_vmmc: regulator-usdhc2 {
                compatible = "regulator-fixed";
                pinctrl-names = "default";
                enable-active-high;
        };
 
+       reg_usdhc3_vmmc: regulator-usdhc3 {
+               compatible = "regulator-fixed";
+               regulator-name = "WLAN_EN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&reg_m2_pwr>;
+               gpio = <&pcal6524 20 GPIO_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>;
+               enable-active-high;
+       };
+
+       usdhc3_pwrseq: usdhc3_pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&pcal6524 12 GPIO_ACTIVE_LOW>;
+       };
+
        backlight_lvds: backlight-lvds {
                compatible = "pwm-backlight";
                pwms = <&adp5585 0 100000 0>;
 
                ethphy1: ethernet-phy@1 {
                        reg = <1>;
-                       eee-broken-1000t;
                        reset-gpios = <&pcal6524 15 GPIO_ACTIVE_LOW>;
                        reset-assert-us = <10000>;
                        reset-deassert-us = <80000>;
+                       realtek,clkout-disable;
                };
        };
 };
                        reset-gpios = <&pcal6524 16 GPIO_ACTIVE_LOW>;
                        reset-assert-us = <10000>;
                        reset-deassert-us = <80000>;
+                       realtek,clkout-disable;
                };
        };
 };
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart5>;
        status = "okay";
+
+       bluetooth {
+               compatible = "nxp,88w8987-bt";
+       };
 };
 
 &micfil {
        no-mmc;
 };
 
+&usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       pinctrl-0 = <&pinctrl_usdhc3>, <&pinctrl_usdhc3_wlan>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>, <&pinctrl_usdhc3_wlan>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>, <&pinctrl_usdhc3_wlan>;
+       pinctrl-3 = <&pinctrl_usdhc3_sleep>, <&pinctrl_usdhc3_wlan>;
+       mmc-pwrseq = <&usdhc3_pwrseq>;
+       vmmc-supply = <&reg_usdhc3_vmmc>;
+       bus-width = <4>;
+       keep-power-in-suspend;
+       non-removable;
+       wakeup-source;
+       status = "okay";
+};
+
 &wdog3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_wdog>;
                        MX93_PAD_ENET1_RD1__ENET_QOS_RGMII_RD1                  0x57e
                        MX93_PAD_ENET1_RD2__ENET_QOS_RGMII_RD2                  0x57e
                        MX93_PAD_ENET1_RD3__ENET_QOS_RGMII_RD3                  0x57e
-                       MX93_PAD_ENET1_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK  0x5fe
+                       MX93_PAD_ENET1_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK  0x58e
                        MX93_PAD_ENET1_RX_CTL__ENET_QOS_RGMII_RX_CTL            0x57e
                        MX93_PAD_ENET1_TD0__ENET_QOS_RGMII_TD0                  0x57e
                        MX93_PAD_ENET1_TD1__ENET_QOS_RGMII_TD1                  0x57e
                        MX93_PAD_ENET1_TD2__ENET_QOS_RGMII_TD2                  0x57e
                        MX93_PAD_ENET1_TD3__ENET_QOS_RGMII_TD3                  0x57e
-                       MX93_PAD_ENET1_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK  0x5fe
+                       MX93_PAD_ENET1_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK  0x58e
                        MX93_PAD_ENET1_TX_CTL__ENET_QOS_RGMII_TX_CTL            0x57e
                >;
        };
                        MX93_PAD_ENET2_RD1__ENET1_RGMII_RD1             0x57e
                        MX93_PAD_ENET2_RD2__ENET1_RGMII_RD2             0x57e
                        MX93_PAD_ENET2_RD3__ENET1_RGMII_RD3             0x57e
-                       MX93_PAD_ENET2_RXC__ENET1_RGMII_RXC             0x5fe
+                       MX93_PAD_ENET2_RXC__ENET1_RGMII_RXC             0x58e
                        MX93_PAD_ENET2_RX_CTL__ENET1_RGMII_RX_CTL       0x57e
                        MX93_PAD_ENET2_TD0__ENET1_RGMII_TD0             0x57e
                        MX93_PAD_ENET2_TD1__ENET1_RGMII_TD1             0x57e
                        MX93_PAD_ENET2_TD2__ENET1_RGMII_TD2             0x57e
                        MX93_PAD_ENET2_TD3__ENET1_RGMII_TD3             0x57e
-                       MX93_PAD_ENET2_TXC__ENET1_RGMII_TXC             0x5fe
+                       MX93_PAD_ENET2_TXC__ENET1_RGMII_TXC             0x58e
                        MX93_PAD_ENET2_TX_CTL__ENET1_RGMII_TX_CTL       0x57e
                >;
        };
 
-       pinctrl_lpi2c3: lpi2c3grp {
-               fsl,pins = <
-                       MX93_PAD_GPIO_IO28__LPI2C3_SDA                  0x40000b9e
-                       MX93_PAD_GPIO_IO29__LPI2C3_SCL                  0x40000b9e
-               >;
-       };
-
        pinctrl_fec_sleep: fecsleepgrp {
                fsl,pins = <
                        MX93_PAD_ENET2_MDC__GPIO4_IO14                  0x51e
                >;
        };
 
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x1582
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x40001382
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x40001382
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x40001382
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x40001382
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x40001382
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x158e
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x4000138e
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x4000138e
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x4000138e
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x4000138e
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x4000138e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x15fe
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x400013fe
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x400013fe
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x400013fe
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x400013fe
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x400013fe
+               >;
+       };
+
+       pinctrl_usdhc3_sleep: usdhc3grpsleepgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__GPIO3_IO20            0x31e
+                       MX93_PAD_SD3_CMD__GPIO3_IO21            0x31e
+                       MX93_PAD_SD3_DATA0__GPIO3_IO22          0x31e
+                       MX93_PAD_SD3_DATA1__GPIO3_IO23          0x31e
+                       MX93_PAD_SD3_DATA2__GPIO3_IO24          0x31e
+                       MX93_PAD_SD3_DATA3__GPIO3_IO25          0x31e
+               >;
+       };
+
+       pinctrl_usdhc3_wlan: usdhc3wlangrp {
+               fsl,pins = <
+                       MX93_PAD_CCM_CLKO1__GPIO3_IO26          0x31e
+               >;
+       };
+
        pinctrl_wdog: wdoggrp {
                fsl,pins = <
                        MX93_PAD_WDOG_ANY__WDOG1_WDOG_ANY       0x31e
index f556b6569a68ee602745a20de747bc2e68491ca4..c5d86b54ad33b47a81fa8f89c1f29e37d1c5e055 100644 (file)
                enable-active-high;
        };
 
+       reg_m2_pwr: regulator-m2-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "M.2-power";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&pcal6524 13 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        reg_usdhc2_vmmc: regulator-usdhc2 {
                compatible = "regulator-fixed";
                pinctrl-names = "default";
                off-on-delay-us = <12000>;
        };
 
+       reg_usdhc3_vmmc: regulator-usdhc3 {
+               compatible = "regulator-fixed";
+               regulator-name = "WLAN_EN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&reg_m2_pwr>;
+               gpio = <&pcal6524 20 GPIO_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>;
+               enable-active-high;
+       };
+
        reg_vdd_12v: regulator-vdd-12v {
                compatible = "regulator-fixed";
                regulator-name = "reg_vdd_12v";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
        };
+
+       usdhc3_pwrseq: usdhc3_pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&pcal6524 12 GPIO_ACTIVE_LOW>;
+       };
 };
 
 &adc1 {
        status = "okay";
 };
 
+&usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       pinctrl-0 = <&pinctrl_usdhc3>, <&pinctrl_usdhc3_wlan>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>, <&pinctrl_usdhc3_wlan>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>, <&pinctrl_usdhc3_wlan>;
+       pinctrl-3 = <&pinctrl_usdhc3_sleep>, <&pinctrl_usdhc3_wlan>;
+       mmc-pwrseq = <&usdhc3_pwrseq>;
+       vmmc-supply = <&reg_usdhc3_vmmc>;
+       bus-width = <4>;
+       keep-power-in-suspend;
+       non-removable;
+       wakeup-source;
+       status = "okay";
+};
+
 &wdog3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_wdog>;
                >;
        };
 
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x1582
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x40001382
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x40001382
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x40001382
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x40001382
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x40001382
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x158e
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x4000138e
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x4000138e
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x4000138e
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x4000138e
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x4000138e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x15fe
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x400013fe
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x400013fe
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x400013fe
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x400013fe
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x400013fe
+               >;
+       };
+
+       pinctrl_usdhc3_sleep: usdhc3grpsleepgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__GPIO3_IO20            0x31e
+                       MX93_PAD_SD3_CMD__GPIO3_IO21            0x31e
+                       MX93_PAD_SD3_DATA0__GPIO3_IO22          0x31e
+                       MX93_PAD_SD3_DATA1__GPIO3_IO23          0x31e
+                       MX93_PAD_SD3_DATA2__GPIO3_IO24          0x31e
+                       MX93_PAD_SD3_DATA3__GPIO3_IO25          0x31e
+               >;
+       };
+
+       pinctrl_usdhc3_wlan: usdhc3wlangrp {
+               fsl,pins = <
+                       MX93_PAD_CCM_CLKO1__GPIO3_IO26    0x31e
+               >;
+       };
+
        pinctrl_wdog: wdoggrp {
                fsl,pins = <
                        MX93_PAD_WDOG_ANY__WDOG1_WDOG_ANY       0x31e
index 75e67115d52f95dc2a04b30c95a9db0d4ebb12b3..f6f8d105b737e6db5962202777d05a031aa0d18c 100644 (file)
                enable-active-high;
        };
 
+       reg_m2_pwr: regulator-m2-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "M.2-power";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&pcal6524 13 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        reg_rpi_3v3: regulator-rpi {
                compatible = "regulator-fixed";
                regulator-name = "VDD_RPI_3V3";
                off-on-delay-us = <12000>;
        };
 
+       reg_usdhc3_vmmc: regulator-usdhc3 {
+               compatible = "regulator-fixed";
+               regulator-name = "WLAN_EN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&reg_m2_pwr>;
+               gpio = <&pcal6524 20 GPIO_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>;
+               enable-active-high;
+       };
+
        sound-bt-sco {
                compatible = "simple-audio-card";
                simple-audio-card,name = "bt-sco-audio";
                        "IN3R", "AMIC",
                        "IN1R", "AMIC";
        };
+
+       usdhc3_pwrseq: usdhc3_pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&pcal6524 12 GPIO_ACTIVE_LOW>;
+       };
 };
 
 &adc1 {
                ethphy1: ethernet-phy@1 {
                        compatible = "ethernet-phy-ieee802.3-c22";
                        reg = <1>;
-                       eee-broken-1000t;
                        reset-gpios = <&pcal6524 15 GPIO_ACTIVE_LOW>;
                        reset-assert-us = <10000>;
                        reset-deassert-us = <80000>;
                interrupt-parent = <&pcal6524>;
                interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
        };
+
+       inertial-meter@6a {
+               compatible = "st,lsm6dso";
+               reg = <0x6a>;
+       };
 };
 
 &lpi2c2 {
        status = "okay";
 };
 
+&lpuart5 {
+       /* BT */
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5>;
+       status = "okay";
+
+       bluetooth {
+               compatible = "nxp,88w8987-bt";
+       };
+};
+
 &micfil {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pdm>;
        status = "okay";
 };
 
+&usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       mmc-pwrseq = <&usdhc3_pwrseq>;
+       vmmc-supply = <&reg_usdhc3_vmmc>;
+       bus-width = <4>;
+       keep-power-in-suspend;
+       non-removable;
+       wakeup-source;
+       status = "okay";
+};
+
 &wdog3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_wdog>;
                >;
        };
 
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x1582
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x40001382
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x40001382
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x40001382
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x40001382
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x40001382
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x158e
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x4000138e
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x4000138e
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x4000138e
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x4000138e
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x4000138e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x15fe
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x400013fe
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x400013fe
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x400013fe
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x400013fe
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x400013fe
+               >;
+       };
+
        pinctrl_wdog: wdoggrp {
                fsl,pins = <
                        MX93_PAD_WDOG_ANY__WDOG1_WDOG_ANY       0x31e
diff --git a/src/arm64/freescale/imx93-phyboard-nash-peb-wlbt-07.dtso b/src/arm64/freescale/imx93-phyboard-nash-peb-wlbt-07.dtso
new file mode 100644 (file)
index 0000000..7381b87
--- /dev/null
@@ -0,0 +1,88 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Primoz Fiser <primoz.fiser@norik.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "imx93-pinfunc.h"
+
+&{/} {
+       usdhc3_pwrseq: usdhc3-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio4 29 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&lpuart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5>;
+       status = "okay";
+
+       bluetooth {
+               compatible = "nxp,88w8987-bt";
+       };
+};
+
+/*
+ * NOTE: When uSDHC3 port is multiplexed on GPIO_IO[27:22] pads, it only
+ * supports 50 MHz mode, due to introduction of potential variations in
+ * trace impedance, drive strength, and timing skew. Refer to i.MX 93
+ * Application Processors Data Sheet, Rev. 3, page 60 for more details.
+ */
+&usdhc3 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_usdhc3>, <&pinctrl_wlbt>;
+       pinctrl-1 = <&pinctrl_usdhc3_sleep>, <&pinctrl_wlbt>;
+       mmc-pwrseq = <&usdhc3_pwrseq>;
+       bus-width = <4>;
+       keep-power-in-suspend;
+       non-removable;
+       wakeup-source;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_uart5: uart5grp {
+               fsl,pins = <
+                       MX93_PAD_DAP_TDO_TRACESWO__LPUART5_TX   0x31e
+                       MX93_PAD_DAP_TDI__LPUART5_RX            0x31e
+                       MX93_PAD_DAP_TCLK_SWCLK__LPUART5_CTS_B  0x31e
+                       MX93_PAD_DAP_TMS_SWDIO__LPUART5_RTS_B   0x31e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX93_PAD_GPIO_IO22__USDHC3_CLK          0x179e
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x4000178e
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x4000138e
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x4000138e
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x4000138e
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x4000138e
+               >;
+       };
+
+       pinctrl_usdhc3_sleep: usdhc3sleepgrp {
+               fsl,pins = <
+                       MX93_PAD_GPIO_IO22__USDHC3_CLK          0x31e
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x31e
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x31e
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x31e
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x31e
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x31e
+               >;
+       };
+
+       pinctrl_wlbt: wlbtgrp {
+               fsl,pins = <
+                       MX93_PAD_CCM_CLKO2__GPIO3_IO27          0x31e   /* WAKE_DEV */
+                       MX93_PAD_CCM_CLKO3__GPIO4_IO28          0x31e   /* WAKE_HOST */
+                       MX93_PAD_CCM_CLKO4__GPIO4_IO29          0x31e   /* PDn */
+               >;
+       };
+};
index 7e9d031a2f0ef86c3cf4a590dc1da23a37e8f174..475913cf0cb9e8858f74f117103dcf0fc7f658cc 100644 (file)
@@ -18,7 +18,6 @@
                     "fsl,imx93";
 
        aliases {
-               ethernet0 = &fec;
                ethernet1 = &eqos;
                rtc0 = &i2c_rtc;
                rtc1 = &bbnsm_rtc;
                regulator-max-microvolt = <1800000>;
                regulator-min-microvolt = <1800000>;
        };
-
-       reg_vref_1v8: regulator-adc-vref {
-               compatible = "regulator-fixed";
-               regulator-name = "VREF_1V8";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-       };
 };
 
 /* ADC */
 &adc1 {
-       vref-supply = <&reg_vref_1v8>;
        status = "okay";
 };
 
diff --git a/src/arm64/freescale/imx93-phyboard-segin-peb-eval-01.dtso b/src/arm64/freescale/imx93-phyboard-segin-peb-eval-01.dtso
new file mode 100644 (file)
index 0000000..a208987
--- /dev/null
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Andrej Picej <andrej.picej@norik.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include "imx93-pinfunc.h"
+
+&{/} {
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_keys>;
+
+               button-s2 {
+                       label = "sleep";
+                       linux,code = <KEY_SLEEP>;
+                       gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+                       wakeup-source;
+               };
+       };
+
+       user-leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_user_leds>;
+
+               user-led2 {
+                       gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+};
+
+&iomuxc {
+       pinctrl_gpio_keys: gpiokeysgrp {
+               fsl,pins = <
+                       MX93_PAD_PDM_BIT_STREAM1__GPIO1_IO10    0x31e
+               >;
+       };
+
+       pinctrl_user_leds: userledsgrp {
+               fsl,pins = <
+                       MX93_PAD_ENET1_RD3__GPIO4_IO13          0x31e
+               >;
+       };
+};
diff --git a/src/arm64/freescale/imx93-phyboard-segin-peb-wlbt-05.dtso b/src/arm64/freescale/imx93-phyboard-segin-peb-wlbt-05.dtso
new file mode 100644 (file)
index 0000000..a7285f0
--- /dev/null
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Andrej Picej <andrej.picej@norik.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "imx93-pinfunc.h"
+
+&{/} {
+       usdhc3_pwrseq: usdhc3-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               post-power-on-delay-ms = <100>;
+               power-off-delay-us = <60>;
+               reset-gpios = <&gpio4 7 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&lpuart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5>;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               shutdown-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+               host-wakeup-gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
+               max-speed = <2000000>;
+       };
+};
+
+&usdhc3 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_usdhc3>, <&pinctrl_wlbt>;
+       pinctrl-1 = <&pinctrl_usdhc3_sleep>, <&pinctrl_wlbt>;
+       mmc-pwrseq = <&usdhc3_pwrseq>;
+       bus-width = <4>;
+       non-removable;
+       no-1-8-v;
+       status = "okay";
+
+       brmcf: wifi@1 {
+               compatible = "brcm,bcm4329-fmac";
+               reg = <1>;
+       };
+};
+
+&iomuxc {
+       pinctrl_uart5: uart5grp {
+               fsl,pins = <
+                       MX93_PAD_DAP_TDO_TRACESWO__LPUART5_TX   0x31e
+                       MX93_PAD_DAP_TDI__LPUART5_RX            0x31e
+                       MX93_PAD_DAP_TCLK_SWCLK__LPUART5_CTS_B  0x31e
+                       MX93_PAD_DAP_TMS_SWDIO__LPUART5_RTS_B   0x31e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX93_PAD_GPIO_IO22__USDHC3_CLK          0x179e
+                       MX93_PAD_GPIO_IO23__USDHC3_CMD          0x4000139e
+                       MX93_PAD_GPIO_IO24__USDHC3_DATA0        0x4000139e
+                       MX93_PAD_GPIO_IO25__USDHC3_DATA1        0x4000139e
+                       MX93_PAD_GPIO_IO26__USDHC3_DATA2        0x4000139e
+                       MX93_PAD_GPIO_IO27__USDHC3_DATA3        0x4000139e
+               >;
+       };
+
+       pinctrl_usdhc3_sleep: usdhc3sleepgrp {
+               fsl,pins = <
+                       MX93_PAD_GPIO_IO22__USDHC3_CLK          0x31e
+                       MX93_PAD_GPIO_IO23__USDHC3_CMD          0x31e
+                       MX93_PAD_GPIO_IO24__USDHC3_DATA0        0x31e
+                       MX93_PAD_GPIO_IO25__USDHC3_DATA1        0x31e
+                       MX93_PAD_GPIO_IO26__USDHC3_DATA2        0x31e
+                       MX93_PAD_GPIO_IO27__USDHC3_DATA3        0x31e
+               >;
+       };
+
+       pinctrl_wlbt: wlbtgrp {
+               fsl,pins = <
+                       MX93_PAD_ENET1_RD3__GPIO4_IO13          0x31e   /* BT ENABLE */
+                       MX93_PAD_ENET1_TXC__GPIO4_IO07          0x31e   /* WLAN ENABLE */
+                       MX93_PAD_I2C1_SCL__GPIO1_IO00           0x31e   /* HOST WAKEUP */
+               >;
+       };
+};
index 0c55b749c834d3120ba0855f97267347aa002c4c..6f1374f5757fdc2bb88bb422f58ac725d97b65d3 100644 (file)
@@ -18,6 +18,7 @@
                     "fsl,imx93";
 
        aliases {
+               ethernet1 = &eqos;
                rtc0 = &i2c_rtc;
                rtc1 = &bbnsm_rtc;
        };
diff --git a/src/arm64/freescale/imx93-phycore-rpmsg.dtso b/src/arm64/freescale/imx93-phycore-rpmsg.dtso
new file mode 100644 (file)
index 0000000..23bede7
--- /dev/null
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Primoz Fiser <primoz.fiser@norik.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+&{/} {
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               rsc_table: rsc-table@2021e000 {
+                       reg = <0 0x2021e000 0 0x1000>;
+                       no-map;
+               };
+
+               vdev0vring0: vdev0vring0@a4000000 {
+                       reg = <0 0xa4000000 0 0x8000>;
+                       no-map;
+               };
+
+               vdev0vring1: vdev0vring1@a4008000 {
+                       reg = <0 0xa4008000 0 0x8000>;
+                       no-map;
+               };
+
+               vdev1vring0: vdev1vring0@a4010000 {
+                       reg = <0 0xa4010000 0 0x8000>;
+                       no-map;
+               };
+
+               vdev1vring1: vdev1vring1@a4018000 {
+                       reg = <0 0xa4018000 0 0x8000>;
+                       no-map;
+               };
+
+               vdevbuffer: vdevbuffer@a4020000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0xa4020000 0 0x100000>;
+                       no-map;
+               };
+       };
+};
+
+&cm33 {
+       mbox-names = "tx", "rx", "rxdb";
+       mboxes = <&mu1 0 1>,
+                <&mu1 1 1>,
+                <&mu1 3 1>;
+       memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>,
+                <&vdev1vring0>, <&vdev1vring1>, <&rsc_table>;
+       status = "okay";
+};
+
+&mu1 {
+       status = "okay";
+};
index 22dbcc89e31198ed1d47f55e1a278a46acaf4224..c6f5aa38ebf99b43adfb8bfd23f3859fcdb0fc8e 100644 (file)
        model = "PHYTEC phyCORE-i.MX93";
        compatible = "phytec,imx93-phycore-som", "fsl,imx93";
 
+       aliases {
+               ethernet0 = &fec;
+       };
+
        reserved-memory {
                ranges;
                #address-cells = <2>;
                        linux,default-trigger = "heartbeat";
                };
        };
+
+       reg_vdda_1v8: regulator-vdda-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDA_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&buck5>;
+       };
+};
+
+/* ADC */
+&adc1 {
+       vref-supply = <&reg_vdda_1v8>;
 };
 
 /* Ethernet */
 
 /* Watchdog */
 &wdog3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       fsl,ext-reset-output;
        status = "okay";
 };
 
                        MX93_PAD_SD1_STROBE__USDHC1_STROBE      0x179e
                >;
        };
+
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX93_PAD_WDOG_ANY__WDOG1_WDOG_ANY       0x31e
+               >;
+       };
 };
index 2cabdae2422739c1f38d4adb6652c87be70f9dd8..82914ca148d3aae5ae160cbfde3260f37d31bb3e 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
 /*
- * Copyright (c) 2022 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * Copyright (c) 2022-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
  * D-82229 Seefeld, Germany.
  * Author: Markus Niebel
  */
        model = "TQ-Systems i.MX93 TQMa93xxLA/TQMa93xxCA SOM";
        compatible = "tq,imx93-tqma9352", "fsl,imx93";
 
+       memory@80000000 {
+               device_type = "memory";
+               /* our minimum RAM config will be 1024 MiB */
+               reg = <0x00000000 0x80000000 0 0x40000000>;
+       };
+
        reserved-memory {
                #address-cells = <2>;
                #size-cells = <2>;
        };
 };
 
-&gpio1 {
-       pmic-irq-hog {
-               gpio-hog;
-               gpios = <3 GPIO_ACTIVE_LOW>;
-               input;
-               line-name = "PMIC_IRQ#";
-       };
-};
-
 &lpi2c1 {
        clock-frequency = <400000>;
        pinctrl-names = "default", "sleep";
                                regulator-ramp-delay = <3125>;
                        };
 
-                       /* V_DDRQ - 1.1 LPDDR4 or 0.6 LPDDR4X */
+                       /* V_DDRQ - 0.6 V for LPDDR4X */
                        buck2: BUCK2 {
                                regulator-name = "BUCK2";
                                regulator-min-microvolt = <600000>;
-                               regulator-max-microvolt = <1100000>;
+                               regulator-max-microvolt = <600000>;
                                regulator-boot-on;
                                regulator-always-on;
                                regulator-ramp-delay = <3125>;
index 783938245e4f7fe7f08816b766dfe49d58ec1cb8..a5f09487d80366345416435a51e573b71b3384ff 100644 (file)
                reset-gpios = <&gpio4 14 GPIO_ACTIVE_LOW>,      /* WIFI_RESET */
                              <&gpio3 7 GPIO_ACTIVE_LOW>;       /* WIFI_PWR_EN */
        };
-
-       reg_eqos_phy: regulator-eqos-phy {
-               compatible = "regulator-fixed";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_reg_eqos_phy>;
-               regulator-name = "eth_phy_pwr";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-               startup-delay-us = <100000>;
-               regulator-always-on;
-       };
 };
 
 &eqos {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_eqos>;
+       /*
+        * The required RGMII TX and RX 2ns delays are implemented directly
+        * in hardware via passive delay elements on the SOM PCB.
+        * No delay configuration is needed in software via PHY driver.
+        */
        phy-mode = "rgmii";
        phy-handle = <&ethphy0>;
+       snps,clk-csr = <5>;
        status = "okay";
 
        mdio {
                        compatible = "ethernet-phy-ieee802.3-c22";
                        reg = <0>;
                        eee-broken-1000t;
+                       reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <10000>;
+                       reset-deassert-us = <100000>;
+
+                       leds {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               led@0 {
+                                       reg = <0>;
+                                       color = <LED_COLOR_ID_YELLOW>;
+                                       function = LED_FUNCTION_LAN;
+                                       linux,default-trigger = "netdev";
+                               };
+
+                               led@1 {
+                                       reg = <1>;
+                                       color = <LED_COLOR_ID_GREEN>;
+                                       function = LED_FUNCTION_LAN;
+                                       linux,default-trigger = "netdev";
+                               };
+                       };
                };
        };
 };
                        MX93_PAD_ENET1_RD1__ENET_QOS_RGMII_RD1                  0x57e
                        MX93_PAD_ENET1_RD2__ENET_QOS_RGMII_RD2                  0x57e
                        MX93_PAD_ENET1_RD3__ENET_QOS_RGMII_RD3                  0x57e
-                       MX93_PAD_ENET1_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK  0x5fe
+                       MX93_PAD_ENET1_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK  0x58e
                        MX93_PAD_ENET1_RX_CTL__ENET_QOS_RGMII_RX_CTL            0x57e
                        MX93_PAD_ENET1_TD0__ENET_QOS_RGMII_TD0                  0x57e
                        MX93_PAD_ENET1_TD1__ENET_QOS_RGMII_TD1                  0x57e
                        MX93_PAD_ENET1_TD2__ENET_QOS_RGMII_TD2                  0x57e
                        MX93_PAD_ENET1_TD3__ENET_QOS_RGMII_TD3                  0x57e
-                       MX93_PAD_ENET1_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK  0x5fe
+                       MX93_PAD_ENET1_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK  0x58e
                        MX93_PAD_ENET1_TX_CTL__ENET_QOS_RGMII_TX_CTL            0x57e
+                       MX93_PAD_UART2_TXD__GPIO1_IO07                          0x51e
                >;
        };
 
index 64cd0776b43d38219fee312baadd4665674a141e..8a7f1cd76c766ab558acf5176022a4c42e648548 100644 (file)
                                             <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, // 27: TMP2 CH1/CH3
                                             <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, // 28: TMP2 Overflow
                                             <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>, // 29: PDM
-                                            <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>; // 30: ADC1
+                                            <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>, // 30: ADC1
+                                            <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;  // err
                                clocks = <&clk IMX93_CLK_EDMA1_GATE>;
                                clock-names = "dma";
                        };
                                             <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>,
                                             <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>,
                                             <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>,
-                                            <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
+                                            <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&clk IMX93_CLK_EDMA2_GATE>;
                                clock-names = "dma";
                        };
                                 <&clk IMX93_CLK_GPIO2_GATE>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&iomuxc 0 4 30>;
+                       ngpios = <30>;
                };
 
                gpio3: gpio@43820000 {
                        clock-names = "gpio", "port";
                        gpio-ranges = <&iomuxc 0 84 8>, <&iomuxc 8 66 18>,
                                      <&iomuxc 26 34 2>, <&iomuxc 28 0 4>;
+                       ngpios = <32>;
                };
 
                gpio4: gpio@43830000 {
                                 <&clk IMX93_CLK_GPIO4_GATE>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&iomuxc 0 38 28>, <&iomuxc 28 36 2>;
+                       ngpios = <30>;
                };
 
                gpio1: gpio@47400000 {
                                 <&clk IMX93_CLK_GPIO1_GATE>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&iomuxc 0 92 16>;
+                       ngpios = <16>;
                };
 
                ocotp: efuse@47510000 {
index 3661ea48d7d2994df7b02084e9681beb303aa133..44dee2cbd42d4bc765c33a9ce663ceda095b6c66 100644 (file)
                };
        };
 
+       mqs1: mqs1 {
+               compatible = "fsl,imx943-aonmix-mqs";
+               status = "disabled";
+       };
+
+       mqs2: mqs2 {
+               compatible = "fsl,imx943-wakeupmix-mqs";
+               status = "disabled";
+       };
+
        pmu {
                compatible = "arm,cortex-a55-pmu";
                interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>;
                        #gpio-cells = <2>;
                        gpio-controller;
                        gpio-ranges = <&scmi_iomuxc 0 4 32>;
+                       ngpios = <32>;
                };
 
                gpio3: gpio@43820000 {
                        #gpio-cells = <2>;
                        gpio-controller;
                        gpio-ranges = <&scmi_iomuxc 0 36 26>;
+                       ngpios = <26>;
                };
 
                gpio4: gpio@43840000 {
                        gpio-controller;
                        gpio-ranges = <&scmi_iomuxc 0 62 4>, <&scmi_iomuxc 4 0 4>,
                                      <&scmi_iomuxc 8 140 12>, <&scmi_iomuxc 20 164 12>;
+                       ngpios = <32>;
                };
 
                gpio5: gpio@43850000 {
                        #gpio-cells = <2>;
                        gpio-controller;
                        gpio-ranges = <&scmi_iomuxc 0 108 32>;
+                       ngpios = <32>;
                };
 
                gpio6: gpio@43860000 {
                        #gpio-cells = <2>;
                        gpio-controller;
                        gpio-ranges = <&scmi_iomuxc 0 66 32>;
+                       ngpios = <32>;
                };
 
                gpio7: gpio@43870000 {
                        #gpio-cells = <2>;
                        gpio-controller;
                        gpio-ranges = <&scmi_iomuxc 0 98 10>, <&scmi_iomuxc 16 152 12>;
+                       gpio-reserved-ranges = <10 6>;
+                       ngpios = <28>;
                };
 
                aips1: bus@44000000 {
                                compatible = "fsl,imx94-flexcan", "fsl,imx95-flexcan";
                                reg = <0x443a0000 0x10000>;
                                interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSAON>,
+                                        <&scmi_clk IMX94_CLK_CAN1>;
+                               clock-names = "ipg", "per";
+                               assigned-clocks = <&scmi_clk IMX94_CLK_CAN1>;
+                               assigned-clock-parents = <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
+                               assigned-clock-rates = <80000000>;
+                               fsl,clk-source = /bits/ 8 <0>;
                                status = "disabled";
                        };
 
                                status = "disabled";
                        };
 
+                       micfil: micfil@44520000 {
+                               compatible = "fsl,imx943-micfil";
+                               reg = <0x44520000 0x10000>;
+                               interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSAON>,
+                                        <&scmi_clk IMX94_CLK_PDM>,
+                                        <&scmi_clk IMX94_CLK_AUDIOPLL1>,
+                                        <&scmi_clk IMX94_CLK_AUDIOPLL2>,
+                                        <&dummy>;
+                               clock-names = "ipg_clk", "ipg_clk_app",
+                                             "pll8k", "pll11k", "clkext3";
+                               dmas = <&edma1 6 0 (FSL_EDMA_MULTI_FIFO | FSL_EDMA_RX)>;
+                               dma-names = "rx";
+                               #sound-dai-cells = <0>;
+                               status = "disabled";
+                       };
+
                        adc1: adc@44530000 {
                                compatible = "nxp,imx94-adc", "nxp,imx93-adc";
                                reg = <0x44530000 0x10000>;
index cc8f3e6a178904e73a69f8a5c6a0bc8cc8f2c497..c8c3eff9df1a23c52e74bf2bc5d4ba543bb5a65b 100644 (file)
        model = "NXP i.MX943 EVK board";
 
        aliases {
+               i2c2 = &lpi2c3;
+               i2c3 = &lpi2c4;
+               i2c5 = &lpi2c6;
                mmc0 = &usdhc1;
                mmc1 = &usdhc2;
                serial0 = &lpuart1;
        };
 
+       bt_sco_codec: bt-sco-codec {
+               compatible = "linux,bt-sco";
+               #sound-dai-cells = <1>;
+       };
+
        chosen {
                stdout-path = &lpuart1;
        };
 
+       dmic: dmic {
+               compatible = "dmic-codec";
+               #sound-dai-cells = <0>;
+       };
+
        reg_usdhc2_vmmc: regulator-usdhc2 {
                compatible = "regulator-fixed";
                off-on-delay-us = <12000>;
                enable-active-high;
        };
 
+       reg_audio_pwr: regulator-wm8962-pwr {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "audio-pwr";
+               gpio = <&pcal6416_i2c3_u171 12 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        reserved-memory {
                ranges;
                #address-cells = <2>;
                };
        };
 
+       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 = <&sai3>;
+               };
+       };
+
+       sound-micfil {
+               compatible = "fsl,imx-audio-card";
+               model = "micfil-audio";
+
+               pri-dai-link {
+                       format = "i2s";
+                       link-name = "micfil hifi";
+
+                       codec {
+                               sound-dai = <&dmic>;
+                       };
+
+                       cpu {
+                               sound-dai = <&micfil>;
+                       };
+               };
+       };
+
+       sound-wm8962 {
+               compatible = "fsl,imx-audio-wm8962";
+               audio-codec = <&wm8962>;
+               audio-cpu = <&sai1>;
+               audio-routing = "Headphone Jack", "HPOUTL",
+                       "Headphone Jack", "HPOUTR",
+                       "Ext Spk", "SPKOUTL",
+                       "Ext Spk", "SPKOUTR",
+                       "AMIC", "MICBIAS",
+                       "IN3R", "AMIC",
+                       "IN1R", "AMIC";
+               hp-det-gpio = <&pcal6416_i2c3_u48 14 GPIO_ACTIVE_HIGH>;
+               model = "wm8962-audio";
+       };
+
        memory@80000000 {
                reg = <0x0 0x80000000 0x0 0x80000000>;
                device_type = "memory";
        };
 };
 
+&lpi2c3 {
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c3>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       pca9670_i2c3: gpio@23 {
+               compatible = "nxp,pca9670";
+               reg = <0x23>;
+               #gpio-cells = <2>;
+               gpio-controller;
+       };
+
+       pca9548_i2c3: i2c-mux@77 {
+               compatible = "nxp,pca9548";
+               reg = <0x77>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c@2 {
+                       reg = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c@3 {
+                       reg = <3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c@4 {
+                       reg = <4>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       wm8962: codec@1a {
+                               compatible = "wlf,wm8962";
+                               reg = <0x1a>;
+                               clocks = <&scmi_clk IMX94_CLK_SAI1>;
+                               AVDD-supply = <&reg_audio_pwr>;
+                               CPVDD-supply = <&reg_audio_pwr>;
+                               DBVDD-supply = <&reg_audio_pwr>;
+                               DCVDD-supply = <&reg_audio_pwr>;
+                               gpio-cfg = <
+                                       0x0000 /* 0:Default */
+                                       0x0000 /* 1:Default */
+                                       0x0000 /* 2:FN_DMICCLK */
+                                       0x0000 /* 3:Default */
+                                       0x0000 /* 4:FN_DMICCDAT */
+                                       0x0000 /* 5:Default */
+                               >;
+                               MICVDD-supply = <&reg_audio_pwr>;
+                               PLLVDD-supply = <&reg_audio_pwr>;
+                               SPKVDD1-supply = <&reg_audio_pwr>;
+                               SPKVDD2-supply = <&reg_audio_pwr>;
+                       };
+               };
+
+               i2c@5 {
+                       reg = <5>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       pcal6416_i2c3_u46: gpio@20 {
+                               compatible = "nxp,pcal6416";
+                               reg = <0x20>;
+                               #gpio-cells = <2>;
+                               gpio-controller;
+
+                               sd-card-on-hog {
+                                       gpios = <13 GPIO_ACTIVE_HIGH>;
+                                       gpio-hog;
+                                       output-high;
+                               };
+                       };
+
+                       pcal6416_i2c3_u171: gpio@21 {
+                               compatible = "nxp,pcal6416";
+                               reg = <0x21>;
+                               #gpio-cells = <2>;
+                               gpio-controller;
+
+                               audio-pwren-hog {
+                                       gpios = <12 GPIO_ACTIVE_HIGH>;
+                                       gpio-hog;
+                                       output-high;
+                               };
+
+                               mqs-mic-sel-hog {
+                                       gpios = <11 GPIO_ACTIVE_HIGH>;
+                                       gpio-hog;
+                                       output-low;
+                               };
+                       };
+               };
+
+               i2c@6 {
+                       reg = <6>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       pcal6416_i2c3_u48: gpio@20 {
+                               compatible = "nxp,pcal6416";
+                               reg = <0x20>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+                               interrupt-parent = <&gpio3>;
+                               interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                               pinctrl-0 = <&pinctrl_ioexpander_int>;
+                               pinctrl-names = "default";
+                       };
+               };
+
+               i2c@7 {
+                       reg = <7>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       pcal6408_i2c3_u172: gpio@20 {
+                               compatible = "nxp,pcal6408";
+                               reg = <0x20>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+                               interrupt-parent = <&gpio3>;
+                               /* shared int pin with u48 */
+                               interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                       };
+               };
+       };
+};
+
+&lpi2c4 {
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&lpi2c6 {
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c6>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       pca9544_i2c6: i2c-mux@77 {
+               compatible = "nxp,pca9544";
+               reg = <0x77>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       pcal6416_i2c6_u50: gpio@21 {
+                               compatible = "nxp,pcal6416";
+                               reg = <0x21>;
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                       };
+               };
+
+               i2c@2 {
+                       reg = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       pcal6408_i2c6_u170: gpio@20 {
+                               compatible = "nxp,pcal6408";
+                               reg = <0x20>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+                               interrupt-parent = <&gpio4>;
+                               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                               pinctrl-0 = <&pinctrl_ioexpander_int2>;
+                               pinctrl-names = "default";
+                       };
+               };
+
+               i2c@3 {
+                       reg = <3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       pcal6416_i2c6_u44: gpio@20 {
+                               compatible = "nxp,pcal6416";
+                               reg = <0x20>;
+                               #gpio-cells = <2>;
+                               gpio-controller;
+
+                               /* pdm selection */
+                               can-pdm-sel-hog {
+                                       gpios = <12 GPIO_ACTIVE_HIGH>;
+                                       gpio-hog;
+                                       output-low;
+                               };
+
+                               sai3-sel-hog {
+                                       gpios = <11 GPIO_ACTIVE_HIGH>;
+                                       gpio-hog;
+                                       output-high;
+                               };
+
+                               /* eMMC IOMUX selection */
+                               sd1-sel-hog {
+                                       gpios = <0 GPIO_ACTIVE_HIGH>;
+                                       gpio-hog;
+                                       output-high;
+                               };
+
+                               /* SD card IOMUX selection */
+                               sd2-sel-hog {
+                                       gpios = <1 GPIO_ACTIVE_HIGH>;
+                                       gpio-hog;
+                                       output-high;
+                               };
+                       };
+               };
+       };
+};
+
 &lpuart1 {
        pinctrl-0 = <&pinctrl_uart1>;
        pinctrl-names = "default";
        status = "okay";
 };
 
+&micfil {
+       assigned-clocks = <&scmi_clk IMX94_CLK_AUDIOPLL1_VCO>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL2_VCO>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL1>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL2>,
+                         <&scmi_clk IMX94_CLK_PDM>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>,
+                                <&scmi_clk IMX94_CLK_AUDIOPLL1>;
+       assigned-clock-rates = <3932160000>,
+                              <3612672000>, <393216000>,
+                              <361267200>, <49152000>;
+       pinctrl-0 = <&pinctrl_pdm>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sai1 {
+       assigned-clocks = <&scmi_clk IMX94_CLK_AUDIOPLL1_VCO>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL2_VCO>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL1>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL2>,
+                         <&scmi_clk IMX94_CLK_SAI1>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>,
+                                <&scmi_clk IMX94_CLK_AUDIOPLL1>;
+       assigned-clock-rates = <3932160000>,
+                              <3612672000>, <393216000>,
+                              <361267200>, <12288000>;
+       pinctrl-0 = <&pinctrl_sai1>;
+       pinctrl-names = "default";
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
+&sai3 {
+       assigned-clocks = <&scmi_clk IMX94_CLK_AUDIOPLL1_VCO>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL2_VCO>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL1>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL2>,
+                         <&scmi_clk IMX94_CLK_SAI3>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>,
+                                <&scmi_clk IMX94_CLK_AUDIOPLL1>;
+       assigned-clock-rates = <3932160000>,
+                              <3612672000>, <393216000>,
+                              <361267200>, <12288000>;
+       pinctrl-0 = <&pinctrl_sai3>;
+       pinctrl-names = "default";
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
 &scmi_iomuxc {
+
+       pinctrl_ioexpander_int2: ioexpanderint2grp {
+               fsl,pins = <
+                       IMX94_PAD_CCM_CLKO4__GPIO4_IO3          0x31e
+               >;
+       };
+
+       pinctrl_ioexpander_int: ioexpanderintgrp {
+               fsl,pins = <
+                       IMX94_PAD_GPIO_IO45__GPIO3_IO13         0x31e
+               >;
+       };
+
+       pinctrl_lpi2c3: lpi2c3grp {
+               fsl,pins = <
+                       IMX94_PAD_GPIO_IO16__LPI2C3_SDA         0x40000b9e
+                       IMX94_PAD_GPIO_IO17__LPI2C3_SCL         0x40000b9e
+               >;
+       };
+
+       pinctrl_lpi2c4: lpi2c4grp {
+               fsl,pins = <
+                       IMX94_PAD_GPIO_IO18__LPI2C4_SDA         0x40000b9e
+                       IMX94_PAD_GPIO_IO19__LPI2C4_SCL         0x40000b9e
+               >;
+       };
+
+       pinctrl_lpi2c6: lpi2c6grp {
+               fsl,pins = <
+                       IMX94_PAD_GPIO_IO29__LPI2C6_SDA         0x40000b9e
+                       IMX94_PAD_GPIO_IO28__LPI2C6_SCL         0x40000b9e
+               >;
+       };
+
+       pinctrl_pdm: pdmgrp {
+               fsl,pins = <
+                       IMX94_PAD_PDM_CLK__PDM_CLK                      0x31e
+                       IMX94_PAD_PDM_BIT_STREAM0__PDM_BIT_STREAM0      0x31e
+                       IMX94_PAD_PDM_BIT_STREAM1__PDM_BIT_STREAM1      0x31e
+               >;
+       };
+
+       pinctrl_sai1: sai1grp {
+               fsl,pins = <
+                       IMX94_PAD_SAI1_TXFS__SAI1_TX_SYNC       0x31e
+                       IMX94_PAD_SAI1_TXC__SAI1_TX_BCLK        0x31e
+                       IMX94_PAD_SAI1_TXD0__SAI1_TX_DATA0      0x31e
+                       IMX94_PAD_SAI1_RXD0__SAI1_RX_DATA0      0x31e
+                       IMX94_PAD_I2C2_SDA__SAI1_MCLK           0x31e
+               >;
+       };
+
+       pinctrl_sai3: sai3grp {
+               fsl,pins = <
+                       IMX94_PAD_GPIO_IO42__SAI3_TX_BCLK       0x31e
+                       IMX94_PAD_GPIO_IO56__SAI3_TX_SYNC       0x31e
+                       IMX94_PAD_GPIO_IO46__SAI3_RX_DATA0      0x31e
+                       IMX94_PAD_GPIO_IO47__SAI3_TX_DATA0      0x31e
+               >;
+       };
+
        pinctrl_uart1: uart1grp {
                fsl,pins = <
                        IMX94_PAD_UART1_TXD__LPUART1_TX         0x31e
index 9f4d0899a94da810cbe3ea99017e819d323c9780..46f6e0fbf2b09106e6e726ff8b61522d1359cfa4 100644 (file)
                  <0x60 &its 0x66 0x1>, //ENETC1 VF1
                  <0x80 &its 0x64 0x1>, //ENETC2 PF
                  <0xc0 &its 0x67 0x1>;
+       iommu-map = <0x0 &smmu 0x20 0x1>,
+                   <0x10 &smmu 0x21 0x1>,
+                   <0x20 &smmu 0x22 0x1>,
+                   <0x40 &smmu 0x23 0x1>,
+                   <0x50 &smmu 0x25 0x1>,
+                   <0x60 &smmu 0x26 0x1>,
+                   <0x80 &smmu 0x24 0x1>,
+                   <0xc0 &smmu 0x27 0x1>;
 };
 
 &netc_emdio {
 
 &usb3_phy {
        orientation-switch;
+       fsl,phy-pcs-tx-deemph-3p5db-attenuation-db = <17>;
+       fsl,phy-pcs-tx-swing-full-percent = <100>;
        fsl,phy-tx-preemp-amp-tune-microamp = <600>;
+       fsl,phy-tx-vboost-level-microvolt = <1156>;
        status = "okay";
 
        port {
index d7d845231312a6de642821cf6971e606b29ce603..9d034275c847606919af8ee4a80a00599abf4d8b 100644 (file)
                };
        };
 
+       flexcan1_phy: can-phy0 {
+               compatible = "nxp,tjr1443";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+               enable-gpios = <&i2c6_pcal6416 6 GPIO_ACTIVE_HIGH>;
+               standby-gpios = <&i2c6_pcal6416 5 GPIO_ACTIVE_LOW>;
+       };
+
+       flexcan2_phy: can-phy1 {
+               compatible = "nxp,tjr1443";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+               enable-gpios = <&i2c4_gpio_expander_21 4 GPIO_ACTIVE_HIGH>;
+               standby-gpios = <&i2c4_gpio_expander_21 3 GPIO_ACTIVE_LOW>;
+       };
+
+       reg_vref_1v8: 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>;
        };
 };
 
+&adc1 {
+       vref-supply = <&reg_vref_1v8>;
+       status = "okay";
+};
+
 &enetc_port0 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enetc0>;
        status = "okay";
 };
 
+&flexcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       phys = <&flexcan1_phy>;
+       status = "disabled";
+};
+
+&flexcan2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       phys = <&flexcan2_phy>;
+       status = "okay";
+};
+
 &flexspi1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_flexspi1>;
        };
 };
 
+&lpi2c2 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpi2c2>;
+       status = "okay";
+
+       adp5585: io-expander@34 {
+               compatible = "adi,adp5585-00", "adi,adp5585";
+               reg = <0x34>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-reserved-ranges = <5 1>;
+               #pwm-cells = <3>;
+       };
+};
+
+&lpi2c3 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpi2c3>;
+       status = "okay";
+
+       i2c3_gpio_expander_20: gpio@20 {
+               compatible = "nxp,pcal6408";
+               #gpio-cells = <2>;
+               gpio-controller;
+               reg = <0x20>;
+               vcc-supply = <&reg_3p3v>;
+       };
+};
+
 &lpi2c4 {
        clock-frequency = <400000>;
        pinctrl-names = "default";
        status = "okay";
 };
 
+&lpuart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5>;
+       status = "disabled";
+
+       bluetooth {
+               compatible = "nxp,88w8987-bt";
+       };
+};
+
+&lpspi7 {
+       num-cs = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpspi7>;
+       cs-gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
 &micfil {
        #sound-dai-cells = <0>;
        pinctrl-names = "default";
 
        ethphy0: ethernet-phy@1 {
                reg = <1>;
+               reset-gpios = <&i2c5_pcal6408 2 GPIO_ACTIVE_LOW>;
+               reset-assert-us = <10000>;
+               reset-deassert-us = <80000>;
                realtek,clkout-disable;
        };
 };
 
+&netc_timer {
+       status = "okay";
+};
+
 &pcie0 {
        pinctrl-0 = <&pinctrl_pcie0>;
        pinctrl-names = "default";
        status = "okay";
 };
 
+&tpm3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_tpm3>;
+       status = "okay";
+};
+
 &usb2 {
        dr_mode = "host";
        disable-over-current;
 };
 
 &usb3_phy {
+       fsl,phy-pcs-tx-deemph-3p5db-attenuation-db = <17>;
+       fsl,phy-pcs-tx-swing-full-percent = <100>;
        fsl,phy-tx-preemp-amp-tune-microamp = <600>;
+       fsl,phy-tx-vboost-level-microvolt = <1156>;
        orientation-switch;
        status = "okay";
 
                >;
        };
 
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       IMX95_PAD_PDM_CLK__AONMIX_TOP_CAN1_TX                   0x39e
+                       IMX95_PAD_PDM_BIT_STREAM0__AONMIX_TOP_CAN1_RX           0x39e
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO25__CAN2_TX                            0x39e
+                       IMX95_PAD_GPIO_IO27__CAN2_RX                            0x39e
+               >;
+       };
+
        pinctrl_flexspi1: flexspi1grp {
                fsl,pins = <
                        IMX95_PAD_XSPI1_SS0_B__FLEXSPI1_A_SS0_B                 0x3fe
                >;
        };
 
+       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_IO00__LPI2C3_SDA                         0x40000b9e
+                       IMX95_PAD_GPIO_IO01__LPI2C3_SCL                         0x40000b9e
+               >;
+       };
+
        pinctrl_lpi2c4: lpi2c4grp {
                fsl,pins = <
                        IMX95_PAD_GPIO_IO30__LPI2C4_SDA                 0x40000b9e
                >;
        };
 
+       pinctrl_lpspi7: lpspi7grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO04__GPIO2_IO_BIT4              0x3fe
+                       IMX95_PAD_GPIO_IO05__LPSPI7_SIN                 0x3fe
+                       IMX95_PAD_GPIO_IO06__LPSPI7_SOUT                0x3fe
+                       IMX95_PAD_GPIO_IO07__LPSPI7_SCK                 0x3fe
+               >;
+       };
+
        pinctrl_pcie0: pcie0grp {
                fsl,pins = <
                        IMX95_PAD_GPIO_IO32__HSIOMIX_TOP_PCIE1_CLKREQ_B         0x4000031e
                >;
        };
 
+       pinctrl_tpm3: tpm3grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO12__TPM3_CH2                   0x51e
+               >;
+       };
+
        pinctrl_tpm6: tpm6grp {
                fsl,pins = <
                        IMX95_PAD_GPIO_IO19__TPM6_CH2                   0x51e
                >;
        };
 
+       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
 
        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_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
                >;
        };
diff --git a/src/arm64/freescale/imx95-libra-rdk-fpsc.dts b/src/arm64/freescale/imx95-libra-rdk-fpsc.dts
new file mode 100644 (file)
index 0000000..26c2df9
--- /dev/null
@@ -0,0 +1,318 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 PHYTEC Messtechnik GmbH
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/leds-pca9532.h>
+#include <dt-bindings/pwm/pwm.h>
+
+#include "imx95-phycore-fpsc.dtsi"
+
+/ {
+       compatible = "phytec,imx95-libra-rdk-fpsc",
+               "phytec,imx95-phycore-fpsc", "fsl,imx95";
+       model = "PHYTEC Libra i.MX95 RDK FPSC";
+
+       aliases {
+               can1 = &flexcan2;
+               can2 = &flexcan1;
+               ethernet0 = &enetc_port0;
+               serial0 = &lpuart7;
+               serial1 = &lpuart8;
+       };
+
+       chosen {
+               stdout-path = &lpuart7;
+       };
+
+       backlight_lvds0: backlight0 {
+               compatible = "pwm-backlight";
+               pinctrl-0 = <&pinctrl_lvds0>;
+               power-supply = <&reg_vdd_12v0>;
+               status = "disabled";
+       };
+
+       transceiver1: can-phy {
+               compatible = "ti,tcan1043";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+               enable-gpios = <&gpio_expander 10 GPIO_ACTIVE_LOW>;
+       };
+
+       transceiver2: can-phy {
+               compatible = "ti,tcan1043";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+               enable-gpios = <&gpio_expander 9 GPIO_ACTIVE_LOW>;
+       };
+
+       panel0_lvds: panel-lvds0 {
+               backlight = <&backlight_lvds0>;
+               power-supply = <&reg_vdd_3v3>;
+               status = "disabled";
+       };
+
+       reg_vdd_12v0: regulator-vdd-12v0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <12000000>;
+               regulator-min-microvolt = <12000000>;
+               regulator-name = "VDD_12V0";
+       };
+
+       reg_vdd_1v8: regulator-vdd-1v8 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "VDD_1V8";
+       };
+
+       reg_vdd_3v3: regulator-vdd-3v3 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "VDD_3V3";
+       };
+
+       reg_vdd_5v0: regulator-vdd-5v0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "VDD_5V0";
+       };
+};
+
+&enetc_port0 {
+       phy-handle = <&ethphy0>;
+       status = "okay";
+};
+
+&enetc_port2 {
+       managed = "in-band-status";
+       phy-handle = <&ethphy2>;
+       phy-mode = "10gbase-r";
+};
+
+/* CAN FD */
+&flexcan1 {
+       phys = <&transceiver1>;
+       status = "okay";
+};
+
+&flexcan2 {
+       phys = <&transceiver2>;
+       status = "okay";
+};
+
+/* SPI-NOR */
+&flexspi1 {
+       pinctrl-0 = <&pinctrl_flexspi>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       spi_nor: flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <166000000>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <4>;
+               vcc-supply = <&reg_vdd_1v8>;
+       };
+};
+
+&gpio2 {
+       gpio-line-names = "", "", "", "", "",
+                         "", "", "", "", "",
+                         "", "", "", "", "",
+                         "", "RGMII2_nINT", "GPIO4", "RTC_INT", "",
+                         "LVDS1_BL_EN";
+};
+
+&lpi2c1 {
+       temperature-sensor@4f {
+               compatible = "nxp,p3t1755";
+               reg = <0x4f>;
+               vs-supply = <&reg_vdd_1v8>;
+       };
+};
+
+&lpi2c3 {
+       status = "okay";
+
+       leds@62 {
+               compatible = "nxp,pca9533";
+               reg = <0x62>;
+
+               led-1 {
+                       type = <PCA9532_TYPE_LED>;
+               };
+
+               led-2 {
+                       type = <PCA9532_TYPE_LED>;
+               };
+
+               led-3 {
+                       type = <PCA9532_TYPE_LED>;
+               };
+       };
+};
+
+&lpi2c4 {
+       status = "okay";
+
+       gpio_expander: gpio@20 {
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               gpio-line-names = "CSI1_CTRL1", "CSI1_CTRL2", "CSI1_CTRL3",
+                                 "CSI1_CTRL4", "CSI2_CTRL1", "CSI2_CTRL2",
+                                 "CSI2_CTRL3", "CSI2_CTRL4", "CLK_EN_AV",
+                                 "nCAN2_EN", "nCAN1_EN", "PCIE1_nWAKE",
+                                 "PCIE2_nWAKE", "PCIE2_nALERT_3V3",
+                                 "UART1_BT_RS_SEL", "UART1_RS232_485_SEL";
+               vcc-supply = <&reg_vdd_1v8>;
+
+               uart1_bt_rs_sel: bt-rs-hog {
+                       gpios = <14 GPIO_ACTIVE_HIGH>;
+                       gpio-hog;
+                       line-name = "UART1_BT_RS_SEL";
+                       output-low;
+               };
+       };
+};
+
+&lpi2c5 {
+       status = "okay";
+
+       eeprom@51 {
+               compatible = "atmel,24c02";
+               reg = <0x51>;
+               pagesize = <16>;
+               vcc-supply = <&reg_vdd_1v8>;
+       };
+};
+
+/* Used for M33 debug */
+&lpuart2 {
+       pinctrl-0 = <&pinctrl_lpuart2>;
+       pinctrl-names = "default";
+};
+
+/* A-55 debug UART */
+&lpuart7 {
+       status = "okay";
+};
+
+/* RS232/RS485/BT */
+&lpuart8 {
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&netc_emdio { /* RGMII2 */
+       ethphy0: ethernet-phy@1 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x1>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
+               enet-phy-lane-no-swap;
+               ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_1_50_NS>;
+               ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+       };
+
+       ethphy2: ethernet-phy@8 {
+               compatible = "ethernet-phy-ieee802.3-c45";
+               reg = <0x8>;
+               max-speed = <10000>; /* 10Gbit/s */
+               status = "disabled";
+       };
+};
+
+&pcie0 {
+       reset-gpio = <&gpio1 10 GPIO_ACTIVE_LOW>;
+       vpcie-supply = <&reg_vdd_3v3>;
+       status = "okay";
+};
+
+&pcie1 {
+       reset-gpio = <&gpio1 14 GPIO_ACTIVE_LOW>;
+       vpcie-supply = <&reg_vdd_3v3>;
+       status = "okay";
+};
+
+&rv3028 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rtc>;
+       interrupt-parent = <&gpio2>;
+       interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
+       aux-voltage-chargeable = <1>;
+       wakeup-source;
+       trickle-resistor-ohms = <3000>;
+};
+
+&scmi_iomuxc {
+       pinctrl_lpuart2: lpuart2grp { /* FPSC proprietary */
+               fsl,pins = <
+                       IMX95_PAD_UART2_TXD__AONMIX_TOP_LPUART2_TX      0x31e
+                       IMX95_PAD_UART2_RXD__AONMIX_TOP_LPUART2_RX      0x31e
+               >;
+       };
+
+       pinctrl_lvds0: lvds0grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO20__GPIO2_IO_BIT20     0x31e
+               >;
+       };
+
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO18__GPIO2_IO_BIT18     0x31e
+               >;
+       };
+
+       pinctrl_tpm4: tpm4grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO21__TPM4_CH1   0x51e
+               >;
+       };
+};
+
+&tpm4 {
+       pinctrl-0 = <&pinctrl_tpm4>;
+       pinctrl-names = "default";
+};
+
+&usb3 {
+       fsl,over-current-active-low;
+       fsl,power-active-low;
+       status = "okay";
+};
+
+&usb3_dwc3 {
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&usb3_phy {
+       vbus-supply = <&reg_vdd_5v0>;
+       status = "okay";
+};
+
+/* uSD Card */
+&usdhc2 {
+       status = "okay";
+};
diff --git a/src/arm64/freescale/imx95-phycore-fpsc.dtsi b/src/arm64/freescale/imx95-phycore-fpsc.dtsi
new file mode 100644 (file)
index 0000000..7519d5b
--- /dev/null
@@ -0,0 +1,656 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 PHYTEC Messtechnik GmbH
+ */
+
+#include <dt-bindings/net/ti-dp83867.h>
+#include "imx95.dtsi"
+
+/ {
+       model = "PHYTEC phyCORE-i.MX95 FPSC";
+       compatible = "phytec,imx95-phycore-fpsc", "fsl,imx95";
+
+       aliases {
+               ethernet1 = &enetc_port1;
+               i2c1 = &lpi2c2;
+               i2c2 = &lpi2c5;
+               i2c3 = &lpi2c3;
+               i2c4 = &lpi2c4;
+               i2c5 = &lpi2c1;
+               rtc0 = &rv3028;
+               rtc1 = &scmi_bbm;
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x00000000 0x80000000 0x00000001 0x00000000>;
+       };
+
+       reg_nvcc_aon: regulator-nvcc-aon {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "VDD_IO";
+       };
+
+       reg_usdhc2_vmmc: regulator-usdhc2 {
+               compatible = "regulator-fixed";
+               off-on-delay-us = <12000>;
+               pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>;
+               pinctrl-names = "default";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "VDDSW_SD2";
+               gpio = <&gpio3 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reserved-memory {
+               ranges;
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       alloc-ranges = <0 0x80000000 0 0x7f000000>;
+                       reusable;
+                       size = <0 0x3c000000>;
+                       linux,cma-default;
+               };
+       };
+};
+
+&enetc_port0 { /* FPSC RGMII2 */
+       phy-mode = "rgmii-id";
+       pinctrl-0 = <&pinctrl_enetc0>;
+       pinctrl-names = "default";
+};
+
+&enetc_port1 {
+       phy-handle = <&ethphy1>;
+       phy-mode = "rgmii-id";
+       pinctrl-0 = <&pinctrl_enetc1>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&flexcan1 { /* FPSC CAN1 */
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       pinctrl-names = "default";
+};
+
+&flexcan2 { /* FPSC CAN2 */
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       pinctrl-names = "default";
+};
+
+&flexspi1 { /* FPSC QSPI */
+       pinctrl-0 = <&pinctrl_flexspi>;
+       pinctrl-names = "default";
+};
+
+&gpio1 { /* FPSC GPIO */
+       gpio-line-names = "", "", "", "", "GPIO2",
+                         "GPIO1", "", "", "", "",
+                         "PCIE1_nPERST", "USB1_PWR_EN", "GPIO3", "USB2_PWR_EN", "PCIE2_nPERST";
+       pinctrl-0 = <&pinctrl_gpio1>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&gpio2 { /* FPSC GPIO */
+       gpio-line-names = "", "", "", "", "",
+                         "", "", "", "", "",
+                         "", "", "", "", "",
+                         "", "RGMII2_nINT", "GPIO4";
+       pinctrl-0 = <&pinctrl_gpio2>;
+       pinctrl-names = "default";
+};
+
+&gpio3 {
+       gpio-line-names = "", "", "", "", "",
+                         "", "", "SD2_RESET_B";
+};
+
+&gpio4 {
+       gpio-line-names = "ENET2_nINT";
+};
+
+&gpio5 {
+       gpio-line-names = "", "", "", "", "",
+                         "", "", "", "", "",
+                         "", "", "", "USB1_OC", "USB2_OC";
+};
+
+&lpi2c1 { /* FPSC I2C5 */
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c1>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       dram_sense: temperature-sensor@48 {
+               compatible = "ti,tmp102";
+               reg = <0x48>;
+               #thermal-sensor-cells = <1>;
+       };
+
+       emmc_sense: temperature-sensor@49 {
+               compatible = "ti,tmp102";
+               reg = <0x49>;
+               #thermal-sensor-cells = <1>;
+       };
+
+       ethphy_sense: temperature-sensor@4a {
+               compatible = "ti,tmp102";
+               reg = <0x4a>;
+               #thermal-sensor-cells = <1>;
+       };
+
+       pmic_sense: temperature-sensor@4b {
+               compatible = "ti,tmp102";
+               reg = <0x4b>;
+               #thermal-sensor-cells = <1>;
+       };
+
+       /* User EEPROM */
+       eeprom@50 {
+               compatible = "st,24c32", "atmel,24c32";
+               reg = <0x50>;
+               pagesize = <32>;
+               vcc-supply = <&reg_nvcc_aon>;
+       };
+
+       /* Factory EEPROM */
+       eeprom@51 {
+               compatible = "st,24c32", "atmel,24c32";
+               reg = <0x51>;
+               pagesize = <32>;
+               vcc-supply = <&reg_nvcc_aon>;
+       };
+
+       rv3028: rtc@52 {
+               compatible = "microcrystal,rv3028";
+               reg = <0x52>;
+       };
+
+       /* User EEPROM ID page */
+       eeprom@58 {
+               compatible = "st,24c32", "atmel,24c32";
+               reg = <0x58>;
+               pagesize = <32>;
+               vcc-supply = <&reg_nvcc_aon>;
+       };
+};
+
+&lpi2c2 { /* FPSC I2C1 */
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c2>;
+       pinctrl-names = "default";
+};
+
+&lpi2c3 { /* FPSC I2C3 */
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c3>;
+       pinctrl-names = "default";
+};
+
+&lpi2c4 { /* FPSC I2C4 */
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c4>;
+       pinctrl-names = "default";
+};
+
+&lpi2c5 { /* FPSC I2C2 */
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c5>;
+       pinctrl-names = "default";
+};
+
+&lpspi3 { /* FPSC SPI2 */
+       pinctrl-0 = <&pinctrl_lpspi3>;
+       pinctrl-names = "default";
+};
+
+&lpspi4 { /* FPSC SPI3 */
+       pinctrl-0 = <&pinctrl_lpspi4>;
+       pinctrl-names = "default";
+};
+
+&lpspi7 { /* FPSC SPI1 */
+       pinctrl-0 = <&pinctrl_lpspi7>;
+       pinctrl-names = "default";
+};
+
+&lpuart5 { /* FPSC UART2 */
+       pinctrl-0 = <&pinctrl_lpuart5>;
+       pinctrl-names = "default";
+};
+
+&lpuart7 { /* FPSC UART3 */
+       pinctrl-0 = <&pinctrl_lpuart7>;
+       pinctrl-names = "default";
+};
+
+&lpuart8 { /* FPSC UART1 */
+       pinctrl-0 = <&pinctrl_lpuart8>;
+       pinctrl-names = "default";
+};
+
+&netc_blk_ctrl {
+       status = "okay";
+};
+
+&netc_emdio { /* FPSC RGMII2 */
+       pinctrl-0 = <&pinctrl_emdio>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       ethphy1: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x0>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               enet-phy-lane-no-swap;
+               ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+               ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+       };
+};
+
+&netcmix_blk_ctrl {
+       status = "okay";
+};
+
+&pcie0 { /* FPSC PCIE1 */
+       pinctrl-0 = <&pinctrl_pcie0>;
+       pinctrl-names = "default";
+};
+
+&pcie1 { /* FPSC PCIE2 */
+       pinctrl-0 = <&pinctrl_pcie1>;
+       pinctrl-names = "default";
+};
+
+&sai5 {        /* FPSC SAI1 */
+       pinctrl-0 = <&pinctrl_sai5>;
+       pintrc-names = "default";
+};
+
+&scmi_iomuxc {
+       pinctrl_emdio: emdiogrp {
+               fsl,pins = <
+                       IMX95_PAD_ENET2_MDIO__NETCMIX_TOP_NETC_MDIO     0x97e   /* RGMII2_MDIO */
+                       IMX95_PAD_ENET2_MDC__NETCMIX_TOP_NETC_MDC       0x502   /* RGMII2_MDC */
+               >;
+       };
+
+       pinctrl_enetc0: enetc0grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO16__GPIO2_IO_BIT16                     0x31e   /* RGMII2_nINT */
+                       IMX95_PAD_CCM_CLKO3__NETCMIX_TOP_NETC_TMR_1588_TRIG2    0x31e   /* RGMII2_EVENT_IN */
+                       IMX95_PAD_CCM_CLKO4__NETCMIX_TOP_NETC_TMR_1588_PP2      0x31e   /* RGMII2_EVENT_OUT */
+
+                       IMX95_PAD_ENET1_TD3__NETCMIX_TOP_ETH0_RGMII_TD3         0x57e   /* RGMII2_TX_3 */
+                       IMX95_PAD_ENET1_TD2__NETCMIX_TOP_ETH0_RGMII_TD2         0x57e   /* RGMII2_TX_2 */
+                       IMX95_PAD_ENET1_TD1__NETCMIX_TOP_ETH0_RGMII_TD1         0x57e   /* RGMII2_TX_1 */
+                       IMX95_PAD_ENET1_TD0__NETCMIX_TOP_ETH0_RGMII_TD0         0x57e   /* RGMII2_TX_0 */
+                       IMX95_PAD_ENET1_TX_CTL__NETCMIX_TOP_ETH0_RGMII_TX_CTL   0x57e   /* RGMII2_TX_CTL */
+                       IMX95_PAD_ENET1_TXC__NETCMIX_TOP_ETH0_RGMII_TX_CLK      0x58e   /* RGMII2_TXC */
+                       IMX95_PAD_ENET1_RD3__NETCMIX_TOP_ETH0_RGMII_RD3         0x57e   /* RGMII2_RX_3 */
+                       IMX95_PAD_ENET1_RD2__NETCMIX_TOP_ETH0_RGMII_RD2         0x57e   /* RGMII2_RX_2 */
+                       IMX95_PAD_ENET1_RD1__NETCMIX_TOP_ETH0_RGMII_RD1         0x57e   /* RGMII2_RX_1 */
+                       IMX95_PAD_ENET1_RD0__NETCMIX_TOP_ETH0_RGMII_RD0         0x57e   /* RGMII2_RX_0 */
+                       IMX95_PAD_ENET1_RX_CTL__NETCMIX_TOP_ETH0_RGMII_RX_CTL   0x57e   /* RGMII2_RX_CTL */
+                       IMX95_PAD_ENET1_RXC__NETCMIX_TOP_ETH0_RGMII_RX_CLK      0x58e   /* RGMII2_RXC */
+               >;
+       };
+
+       pinctrl_enetc1: enetc1grp {
+               fsl,pins = <
+                       IMX95_PAD_ENET1_MDC__GPIO4_IO_BIT0                      0x31e
+                       IMX95_PAD_ENET2_TD0__NETCMIX_TOP_ETH1_RGMII_TD0         0x57e
+                       IMX95_PAD_ENET2_TD1__NETCMIX_TOP_ETH1_RGMII_TD1         0x57e
+                       IMX95_PAD_ENET2_TD2__NETCMIX_TOP_ETH1_RGMII_TD2         0x57e
+                       IMX95_PAD_ENET2_TD3__NETCMIX_TOP_ETH1_RGMII_TD3         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_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
+                       IMX95_PAD_ENET2_RX_CTL__NETCMIX_TOP_ETH1_RGMII_RX_CTL   0x57e
+                       IMX95_PAD_ENET2_RXC__NETCMIX_TOP_ETH1_RGMII_RX_CLK      0x58e
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       IMX95_PAD_PDM_CLK__AONMIX_TOP_CAN1_TX           0x51e   /* CAN1_TX */
+                       IMX95_PAD_PDM_BIT_STREAM0__AONMIX_TOP_CAN1_RX   0x51e   /* CAN1_RX */
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO25__CAN2_TX    0x51e   /* CAN2_TX */
+                       IMX95_PAD_GPIO_IO27__CAN2_RX    0x51e   /* CAN2_RX */
+               >;
+       };
+
+       pinctrl_flexspi: flexspigrp {
+               fsl,pins = <
+                       IMX95_PAD_XSPI1_SS0_B__FLEXSPI1_A_SS0_B         0x3fe   /* QSPI_CE */
+                       IMX95_PAD_XSPI1_SCLK__FLEXSPI1_A_SCLK           0x3fe   /* QSPI_CLK */
+                       IMX95_PAD_XSPI1_DATA0__FLEXSPI1_A_DATA_BIT0     0x3fe   /* QSPI_DATA_0 */
+                       IMX95_PAD_XSPI1_DATA1__FLEXSPI1_A_DATA_BIT1     0x3fe   /* QSPI_DATA_1 */
+                       IMX95_PAD_XSPI1_DATA2__FLEXSPI1_A_DATA_BIT2     0x3fe   /* QSPI_DATA_2 */
+                       IMX95_PAD_XSPI1_DATA3__FLEXSPI1_A_DATA_BIT3     0x3fe   /* QSPI_DATA_3 */
+                       IMX95_PAD_XSPI1_DQS__FLEXSPI1_A_DQS             0x3fe   /* QSPI_DQS */
+               >;
+       };
+
+       pinctrl_gpio1: gpio1grp {
+               fsl,pins = <
+                       IMX95_PAD_UART1_TXD__AONMIX_TOP_GPIO1_IO_BIT5   0x31e   /* GPIO1 */
+                       IMX95_PAD_UART1_RXD__AONMIX_TOP_GPIO1_IO_BIT4   0x31e   /* GPIO2 */
+                       IMX95_PAD_SAI1_TXC__AONMIX_TOP_GPIO1_IO_BIT12   0x31e   /* GPIO3 */
+               >;
+       };
+
+       pinctrl_gpio2: gpio2grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO17__GPIO2_IO_BIT17     0x31e   /* GPIO4 */
+               >;
+       };
+
+       pinctrl_lpi2c1: lpi2c1grp {
+               fsl,pins = <
+                       IMX95_PAD_I2C1_SCL__AONMIX_TOP_LPI2C1_SCL       0x40000b9e      /* I2C5_SCL */
+                       IMX95_PAD_I2C1_SDA__AONMIX_TOP_LPI2C1_SDA       0x40000b9e      /* I2C5_SDA */
+               >;
+       };
+
+       pinctrl_lpi2c2: lpi2c2grp {
+               fsl,pins = <
+                       IMX95_PAD_I2C2_SDA__AONMIX_TOP_LPI2C2_SDA       0x40000b9e      /* I2C1_SDA_DNU */
+                       IMX95_PAD_I2C2_SCL__AONMIX_TOP_LPI2C2_SCL       0x40000b9e      /* I2C1_SCL_DNU */
+               >;
+       };
+
+       pinctrl_lpi2c3: lpi2c3grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO28__LPI2C3_SDA 0x40000b9e      /* I2C3_SDA */
+                       IMX95_PAD_GPIO_IO29__LPI2C3_SCL 0x40000b9e      /* I2C3_SCL */
+               >;
+       };
+
+       pinctrl_lpi2c4: lpi2c4grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO30__LPI2C4_SDA 0x40000b9e      /* I2C4_SDA */
+                       IMX95_PAD_GPIO_IO31__LPI2C4_SCL 0x40000b9e      /* I2C4_SDL */
+               >;
+       };
+
+       pinctrl_lpi2c5: lpi2c5grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO22__LPI2C5_SDA 0x40000b9e      /* I2C2_SDA */
+                       IMX95_PAD_GPIO_IO23__LPI2C5_SCL 0x40000b9e      /* I2C2_SCL */
+               >;
+       };
+
+       pinctrl_lpspi3: lpspi3grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO11__LPSPI3_SCK         0x51e   /* SPI2_SCLK */
+                       IMX95_PAD_GPIO_IO10__LPSPI3_SOUT        0x51e   /* SPI2_MOSI */
+                       IMX95_PAD_GPIO_IO09__LPSPI3_SIN         0x51e   /* SPI2_MISO */
+                       IMX95_PAD_GPIO_IO08__LPSPI3_PCS0        0x51e   /* SPI2_CS */
+               >;
+       };
+
+       pinctrl_lpspi4: lpspi4grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO21__LPSPI4_SCK         0x51e   /* SPI3_SCLK */
+                       IMX95_PAD_GPIO_IO20__LPSPI4_SOUT        0x51e   /* SPI3_MOSI */
+                       IMX95_PAD_GPIO_IO19__LPSPI4_SIN         0x51e   /* SPI3_MISO */
+                       IMX95_PAD_GPIO_IO18__LPSPI4_PCS0        0x51e   /* SPI3_CS */
+               >;
+       };
+
+       pinctrl_lpspi7: lpspi7grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO07__LPSPI7_SCK         0x51e   /* SPI1_SCLK */
+                       IMX95_PAD_GPIO_IO06__LPSPI7_SOUT        0x51e   /* SPI1_MOSI */
+                       IMX95_PAD_GPIO_IO05__LPSPI7_SIN         0x51e   /* SPI1_MISO */
+                       IMX95_PAD_GPIO_IO04__LPSPI7_PCS0        0x51e   /* SPI1_CS */
+               >;
+       };
+
+       pinctrl_lpuart5: lpuart5grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO01__LPUART5_RX         0x51e   /* UART2_RXD */
+                       IMX95_PAD_GPIO_IO00__LPUART5_TX         0x51e   /* UART2_TXD */
+                       IMX95_PAD_GPIO_IO03__LPUART5_RTS_B      0x51e   /* UART2_RTS */
+                       IMX95_PAD_GPIO_IO02__LPUART5_CTS_B      0x51e   /* UART2_CTS */
+               >;
+       };
+
+       pinctrl_lpuart7: lpuart7grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO37__LPUART7_RX 0x31e   /* UART3_RXD */
+                       IMX95_PAD_GPIO_IO36__LPUART7_TX 0x31e   /* UART3_TXD */
+               >;
+       };
+
+       pinctrl_lpuart8: lpuart8grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO13__LPUART8_RX         0x51e   /* UART1_RXD */
+                       IMX95_PAD_GPIO_IO12__LPUART8_TX         0x51e   /* UART1_TXD */
+                       IMX95_PAD_GPIO_IO15__LPUART8_RTS_B      0x51e   /* UART1_RTS */
+                       IMX95_PAD_GPIO_IO14__LPUART8_CTS_B      0x51e   /* UART1_CTS */
+               >;
+       };
+
+       pinctrl_pcie0: pcie0grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO32__HSIOMIX_TOP_PCIE1_CLKREQ_B         0x31e   /* PCIE1_nCLKREQ */
+                       IMX95_PAD_PDM_BIT_STREAM1__AONMIX_TOP_GPIO1_IO_BIT10    0x31e   /* PCIE1_nPERST */
+               >;
+       };
+
+       pinctrl_pcie1: pcie1grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO35__HSIOMIX_TOP_PCIE2_CLKREQ_B 0x31e   /* PCIE2_nCLKREQ */
+                       IMX95_PAD_SAI1_RXD0__AONMIX_TOP_GPIO1_IO_BIT14  0x31e   /* PCIE2_nPERST */
+               >;
+       };
+
+       pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp {
+               fsl,pins = <
+                       IMX95_PAD_SD2_RESET_B__GPIO3_IO_BIT7    0x31e
+               >;
+       };
+
+       pinctrl_sai5: sai5grp {
+               fsl,pins = <
+                       IMX95_PAD_XSPI1_DQS__SAI5_RX_SYNC               0x51e   /* SAI1_RX_SYNC */
+                       IMX95_PAD_XSPI1_SS1_B__SAI5_RX_BCLK             0x51e   /* SAI1_RX_BCLK */
+                       IMX95_PAD_XSPI1_DATA7__SAI5_RX_DATA_BIT0        0x51e   /* SAI1_RX_DATA */
+                       IMX95_PAD_XSPI1_DATA5__SAI5_TX_SYNC             0x51e   /* SAI1_TX_SYNC */
+                       IMX95_PAD_XSPI1_DATA6__SAI5_TX_BCLK             0x51e   /* SAI1_TX_BCLK */
+                       IMX95_PAD_XSPI1_DATA4__SAI5_TX_DATA_BIT0        0x51e   /* SAI1_TX_DATA */
+               >;
+       };
+
+       pinctrl_tpm3: tpm3grp {
+             fsl,pins = <
+                     IMX95_PAD_GPIO_IO24__TPM3_CH3     0x51e   /* PWM1 */
+             >;
+       };
+
+       pinctrl_tpm5: tpm5grp {
+             fsl,pins = <
+                     IMX95_PAD_GPIO_IO26__TPM5_CH3     0x51e   /* PWM2 */
+             >;
+       };
+
+       pinctrl_usbc: usbcgrp {
+               fsl,pins = <
+                       IMX95_PAD_SAI1_TXFS__AONMIX_TOP_GPIO1_IO_BIT11  0x51e   /* USB1_PWR_EN */
+                       IMX95_PAD_GPIO_IO33__GPIO5_IO_BIT13             0x51e   /* USB1_OC */
+               >;
+       };
+
+       pinctrl_usb2: usb2grp {
+               fsl,pins = <
+                       IMX95_PAD_SAI1_TXD0__AONMIX_TOP_GPIO1_IO_BIT13  0x51e   /* USB2_PWR_EN */
+                       IMX95_PAD_GPIO_IO34__GPIO5_IO_BIT14             0x51e   /* USB2_OC */
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       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_CMD__USDHC1_CMD                   0x138e
+                       IMX95_PAD_SD1_CLK__USDHC1_CLK                   0x158e
+                       IMX95_PAD_SD1_STROBE__USDHC1_STROBE             0x158e
+               >;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+               fsl,pins = <
+                       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_CMD__USDHC1_CMD                   0x138e
+                       IMX95_PAD_SD1_CLK__USDHC1_CLK                   0x158e
+                       IMX95_PAD_SD1_STROBE__USDHC1_STROBE             0x158e
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+               fsl,pins = <
+                       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_CMD__USDHC1_CMD                   0x13fe
+                       IMX95_PAD_SD1_CLK__USDHC1_CLK                   0x15fe
+                       IMX95_PAD_SD1_STROBE__USDHC1_STROBE             0x15fe
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       IMX95_PAD_SD2_CD_B__USDHC2_CD_B         0x31e   /* CD */
+                       IMX95_PAD_SD2_CLK__USDHC2_CLK           0x158e  /* CLK */
+                       IMX95_PAD_SD2_CMD__USDHC2_CMD           0x138e  /* CMD */
+                       IMX95_PAD_SD2_DATA0__USDHC2_DATA0       0x138e  /* DATA0 */
+                       IMX95_PAD_SD2_DATA1__USDHC2_DATA1       0x138e  /* DATA1 */
+                       IMX95_PAD_SD2_DATA2__USDHC2_DATA2       0x138e  /* DATA2 */
+                       IMX95_PAD_SD2_DATA3__USDHC2_DATA3       0x138e  /* DATA3 */
+                       IMX95_PAD_SD2_VSELECT__USDHC2_VSELECT   0x51e
+
+               >;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <
+                       IMX95_PAD_SD2_CD_B__USDHC2_CD_B         0x31e   /* CD */
+                       IMX95_PAD_SD2_CLK__USDHC2_CLK           0x158e  /* CLK */
+                       IMX95_PAD_SD2_CMD__USDHC2_CMD           0x138e  /* CMD */
+                       IMX95_PAD_SD2_DATA0__USDHC2_DATA0       0x138e  /* DATA0 */
+                       IMX95_PAD_SD2_DATA1__USDHC2_DATA1       0x138e  /* DATA1 */
+                       IMX95_PAD_SD2_DATA2__USDHC2_DATA2       0x138e  /* DATA2 */
+                       IMX95_PAD_SD2_DATA3__USDHC2_DATA3       0x138e  /* DATA3 */
+                       IMX95_PAD_SD2_VSELECT__USDHC2_VSELECT   0x51e
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+               fsl,pins = <
+                       IMX95_PAD_SD2_CD_B__USDHC2_CD_B         0x31e   /* CD */
+                       IMX95_PAD_SD2_CLK__USDHC2_CLK           0x15fe  /* CLK */
+                       IMX95_PAD_SD2_CMD__USDHC2_CMD           0x13fe  /* CMD */
+                       IMX95_PAD_SD2_DATA0__USDHC2_DATA0       0x13fe  /* DATA0 */
+                       IMX95_PAD_SD2_DATA1__USDHC2_DATA1       0x13fe  /* DATA1 */
+                       IMX95_PAD_SD2_DATA2__USDHC2_DATA2       0x13fe  /* DATA2 */
+                       IMX95_PAD_SD2_DATA3__USDHC2_DATA3       0x13fe  /* DATA3 */
+                       IMX95_PAD_SD2_VSELECT__USDHC2_VSELECT   0x51e
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       IMX95_PAD_SD3_CLK__USDHC3_CLK           0x158e  /* SDIO_CLK */
+                       IMX95_PAD_SD3_CMD__USDHC3_CMD           0x138e  /* SDIO_CMD */
+                       IMX95_PAD_SD3_DATA0__USDHC3_DATA0       0x138e  /* SDIO_DATA0 */
+                       IMX95_PAD_SD3_DATA1__USDHC3_DATA1       0x138e  /* SDIO_DATA1 */
+                       IMX95_PAD_SD3_DATA2__USDHC3_DATA2       0x138e  /* SDIO_DATA2 */
+                       IMX95_PAD_SD3_DATA3__USDHC3_DATA3       0x138e  /* SDIO_DATA3 */
+               >;
+       };
+};
+
+&tpm3 { /* FPSC PWM1 */
+       pinctrl-0 = <&pinctrl_tpm3>;
+       pinctrl-names = "default";
+};
+
+&tpm5 {        /* FPSC PWM2 */
+       pinctrl-0 = <&pinctrl_tpm5>;
+       pinctrl-names = "default";
+};
+
+&usb3 { /* FPSC USB1 */
+       pinctrl-0 = <&pinctrl_usbc>;
+       pinctrl-names = "default";
+};
+
+&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";
+       status = "okay";
+};
+
+&usdhc2 { /* FPSC SDCARD */
+       bus-width = <4>;
+       disable-wp;
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc2>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       sd-uhs-sdr104;
+       vmmc-supply = <&reg_usdhc2_vmmc>;
+};
+
+&usdhc3 { /* FPSC SDIO */
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-names = "default";
+};
index 5aecdd9b62ff657fc746f5ecfa750173b8da9b5e..8296888bce594707be2d8ca3b9c3d16e860981cc 100644 (file)
@@ -3,6 +3,7 @@
  * Copyright 2024 NXP
  */
 
+#include <dt-bindings/clock/nxp,imx95-clock.h>
 #include <dt-bindings/dma/fsl-edma.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
                        };
 
                        i3c2: i3c@42520000 {
-                               compatible = "silvaco,i3c-master-v1";
+                               compatible = "nxp,imx95-i3c", "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";
+                               clock-names = "pclk", "fast_clk";
                                status = "disabled";
                        };
 
                                 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&scmi_iomuxc 0 4 32>;
+                       ngpios = <32>;
                };
 
                gpio3: gpio@43820000 {
                        clock-names = "gpio", "port";
                        gpio-ranges = <&scmi_iomuxc 0 104 8>, <&scmi_iomuxc 8 74 18>,
                                      <&scmi_iomuxc 26 42 2>, <&scmi_iomuxc 28 0 4>;
+                       ngpios = <32>;
                };
 
                gpio4: gpio@43840000 {
                                 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&scmi_iomuxc 0 46 28>, <&scmi_iomuxc 28 44 2>;
+                       ngpios = <30>;
                };
 
                gpio5: gpio@43850000 {
                                 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&scmi_iomuxc 0 92 12>, <&scmi_iomuxc 12 36 6>;
+                       ngpios = <18>;
                };
 
                aips1: bus@44000000 {
                        };
 
                        i3c1: i3c@44330000 {
-                               compatible = "silvaco,i3c-master-v1";
+                               compatible = "nxp,imx95-i3c", "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";
+                               clock-names = "pclk", "fast_clk";
                                status = "disabled";
                        };
 
                                 <&scmi_clk IMX95_CLK_M33>;
                        clock-names = "gpio", "port";
                        gpio-ranges = <&scmi_iomuxc 0 112 16>;
+                       ngpios = <16>;
                        status = "disabled";
                };
 
                        status = "disabled";
                };
 
+               vpu_blk_ctrl: clock-controller@4c410000 {
+                       compatible = "nxp,imx95-vpu-csr", "syscon";
+                       reg = <0x0 0x4c410000 0x0 0x10000>;
+                       #clock-cells = <1>;
+                       clocks = <&scmi_clk IMX95_CLK_VPUAPB>;
+                       power-domains = <&scmi_devpd IMX95_PD_VPU>;
+                       assigned-clocks = <&scmi_clk IMX95_CLK_VPUAPB>,
+                                         <&scmi_clk IMX95_CLK_VPU>,
+                                         <&scmi_clk IMX95_CLK_VPUJPEG>;
+                       assigned-clock-parents = <&scmi_clk IMX95_CLK_SYSPLL1_PFD1_DIV2>,
+                                                <&scmi_clk IMX95_CLK_SYSPLL1_PFD2>,
+                                                <&scmi_clk IMX95_CLK_SYSPLL1_PFD0>;
+                       assigned-clock-rates = <133333333>, <667000000>, <500000000>;
+               };
+
+               jpegdec: jpegdec@4c500000 {
+                       compatible = "nxp,imx95-jpgdec", "nxp,imx8qxp-jpgdec";
+                       reg = <0x0 0x4C500000 0x0 0x00050000>;
+                       interrupts = <GIC_SPI 295 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 296 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&scmi_clk IMX95_CLK_VPU>,
+                                <&vpu_blk_ctrl IMX95_CLK_VPUBLK_JPEG_DEC>;
+                       assigned-clocks = <&vpu_blk_ctrl IMX95_CLK_VPUBLK_JPEG_DEC>;
+                       assigned-clock-parents = <&scmi_clk IMX95_CLK_VPUJPEG>;
+                       power-domains = <&scmi_devpd IMX95_PD_VPU>;
+               };
+
+               jpegenc: jpegenc@4c550000 {
+                       compatible = "nxp,imx95-jpgenc", "nxp,imx8qxp-jpgenc";
+                       reg = <0x0 0x4C550000 0x0 0x00050000>;
+                       interrupts = <GIC_SPI 291 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 292 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 294 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&scmi_clk IMX95_CLK_VPU>,
+                                <&vpu_blk_ctrl IMX95_CLK_VPUBLK_JPEG_ENC>;
+                       assigned-clocks = <&vpu_blk_ctrl IMX95_CLK_VPUBLK_JPEG_ENC>;
+                       assigned-clock-parents = <&scmi_clk IMX95_CLK_VPUJPEG>;
+                       power-domains = <&scmi_devpd IMX95_PD_VPU>;
+               };
+
                netcmix_blk_ctrl: syscon@4c810000 {
                        compatible = "nxp,imx95-netcmix-blk-ctrl", "syscon";
                        reg = <0x0 0x4c810000 0x0 0x8>;
                                          <0x90 &its 0x65 0x1>, //ENETC2 VF0
                                          <0xa0 &its 0x66 0x1>, //ENETC2 VF1
                                          <0xc0 &its 0x67 0x1>; //NETC Timer
+                               iommu-map = <0x0 &smmu 0x20 0x1>,
+                                           <0x10 &smmu 0x21 0x1>,
+                                           <0x20 &smmu 0x22 0x1>,
+                                           <0x40 &smmu 0x23 0x1>,
+                                           <0x80 &smmu 0x24 0x1>,
+                                           <0x90 &smmu 0x25 0x1>,
+                                           <0xa0 &smmu 0x26 0x1>,
+                                           <0xc0 &smmu 0x27 0x1>;
                                         /* ENETC0~2 and Timer BAR0 - non-prefetchable memory */
                                ranges = <0x82000000 0x0 0x4cc00000  0x0 0x4cc00000  0x0 0xe0000
                                         /* Timer BAR2 - prefetchable memory */
index 7ee1228a50f4f9bfa46edc62d956b47b906326f5..79daba930ad648fc8ae524f77639504d6edcdd65 100644 (file)
                regulator-max-microvolt = <3300000>;
        };
 
-       sound {
+       sound: sound {
                compatible = "fsl,imx-audio-tlv320aic32x4";
                model = "tqm-tlv320aic32";
                ssi-controller = <&sai3>;
index ea1456d361a35b0521d8217b001cdc08d2d359d9..09d2fbbe1d8c4f70d756bf6507b73caa200721e8 100644 (file)
                #size-cells = <1>;
                ranges = <0 0 0 0x80000000>;
 
+               rtc0: rtc@40060000 {
+                       compatible = "nxp,s32g2-rtc";
+                       reg = <0x40060000 0x1000>;
+                       interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 54>, <&clks 55>;
+                       clock-names = "ipg", "source0";
+               };
+
                pinctrl: pinctrl@4009c240 {
                        compatible = "nxp,s32g2-siul2-pinctrl";
                                /* MSCR0-MSCR101 registers on siul2_0 */
                        status = "disabled";
                };
 
+               usbmisc: usbmisc@44064200 {
+                       #index-cells = <1>;
+                       compatible = "nxp,s32g2-usbmisc";
+                       reg = <0x44064200 0x200>;
+               };
+
+               usbotg: usb@44064000 {
+                       compatible = "nxp,s32g2-usb";
+                       reg = <0x44064000 0x200>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>, /* OTG Core */
+                                        <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>; /* OTG Wakeup */
+                       clocks = <&clks 94>, <&clks 95>;
+                       fsl,usbmisc = <&usbmisc 0>;
+                       ahb-burst-config = <0x3>;
+                       tx-burst-size-dword = <0x10>;
+                       rx-burst-size-dword = <0x10>;
+                       phy_type = "ulpi";
+                       dr_mode = "host";
+                       maximum-speed = "high-speed";
+                       status = "disabled";
+               };
+
+               spi0: spi@401d4000 {
+                       compatible = "nxp,s32g2-dspi";
+                       reg = <0x401d4000 0x1000>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <8>;
+                       bus-num = <0>;
+                       dmas = <&edma0 0 7>, <&edma0 0 8>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               spi1: spi@401d8000 {
+                       compatible = "nxp,s32g2-dspi";
+                       reg = <0x401d8000 0x1000>;
+                       interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <5>;
+                       bus-num = <1>;
+                       dmas = <&edma0 0 10>, <&edma0 0 11>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               spi2: spi@401dc000 {
+                       compatible = "nxp,s32g2-dspi";
+                       reg = <0x401dc000 0x1000>;
+                       interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <5>;
+                       bus-num = <2>;
+                       dmas = <&edma0 0 13>, <&edma0 0 14>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
                i2c0: i2c@401e4000 {
                        compatible = "nxp,s32g2-i2c";
                        reg = <0x401e4000 0x1000>;
                        status = "disabled";
                };
 
+               spi3: spi@402c8000 {
+                       compatible = "nxp,s32g2-dspi";
+                       reg = <0x402c8000 0x1000>;
+                       interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <5>;
+                       bus-num = <3>;
+                       dmas = <&edma0 1 7>, <&edma0 1 8>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               spi4: spi@402cc000 {
+                       compatible = "nxp,s32g2-dspi";
+                       reg = <0x402cc000 0x1000>;
+                       interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <5>;
+                       bus-num = <4>;
+                       dmas = <&edma0 1 10>, <&edma0 1 11>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               spi5: spi@402d0000 {
+                       compatible = "nxp,s32g2-dspi";
+                       reg = <0x402d0000 0x1000>;
+                       interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <5>;
+                       bus-num = <5>;
+                       dmas = <&edma0 1 13>, <&edma0 1 14>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
                i2c3: i2c@402d8000 {
                        compatible = "nxp,s32g2-i2c";
                        reg = <0x402d8000 0x1000>;
index 991dbfbfa2033c3759afa88be29ed4f454f0e20e..39effbe8217cf9d2e203e7a5c2a9d2c8be04c09f 100644 (file)
                #size-cells = <1>;
                ranges = <0 0 0 0x80000000>;
 
+               rtc0: rtc@40060000 {
+                       compatible = "nxp,s32g3-rtc",
+                                    "nxp,s32g2-rtc";
+                       reg = <0x40060000 0x1000>;
+                       interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 54>, <&clks 55>;
+                       clock-names = "ipg", "source0";
+               };
+
                pinctrl: pinctrl@4009c240 {
                        compatible = "nxp,s32g2-siul2-pinctrl";
                                /* MSCR0-MSCR101 registers on siul2_0 */
                        status = "disabled";
                };
 
+               usbmisc: usbmisc@44064200 {
+                       #index-cells = <1>;
+                       compatible = "nxp,s32g3-usbmisc";
+                       reg = <0x44064200 0x200>;
+               };
+
+                usbotg: usb@44064000 {
+                        compatible = "nxp,s32g3-usb", "nxp,s32g2-usb";
+                        reg = <0x44064000 0x200>;
+                        interrupt-parent = <&gic>;
+                        interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>, /* OTG Core */
+                                     <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>; /* OTG Wakeup */
+                        clocks = <&clks 94>, <&clks 95>;
+                        fsl,usbmisc = <&usbmisc 0>;
+                        ahb-burst-config = <0x3>;
+                        tx-burst-size-dword = <0x10>;
+                        rx-burst-size-dword = <0x10>;
+                        phy_type = "ulpi";
+                        dr_mode = "host";
+                        maximum-speed = "high-speed";
+                        status = "disabled";
+                };
+
+               spi0: spi@401d4000 {
+                       compatible = "nxp,s32g3-dspi", "nxp,s32g2-dspi";
+                       reg = <0x401d4000 0x1000>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <8>;
+                       bus-num = <0>;
+                       dmas = <&edma0 0 7>, <&edma0 0 8>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               spi1: spi@401d8000 {
+                       compatible = "nxp,s32g3-dspi", "nxp,s32g2-dspi";
+                       reg = <0x401d8000 0x1000>;
+                       interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <5>;
+                       bus-num = <1>;
+                       dmas = <&edma0 0 10>, <&edma0 0 11>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               spi2: spi@401dc000 {
+                       compatible = "nxp,s32g3-dspi", "nxp,s32g2-dspi";
+                       reg = <0x401dc000 0x1000>;
+                       interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <5>;
+                       bus-num = <2>;
+                       dmas = <&edma0 0 13>, <&edma0 0 14>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
                i2c0: i2c@401e4000 {
                        compatible = "nxp,s32g3-i2c",
                                     "nxp,s32g2-i2c";
                        status = "disabled";
                };
 
+               spi3: spi@402c8000 {
+                       compatible = "nxp,s32g3-dspi", "nxp,s32g2-dspi";
+                       reg = <0x402c8000 0x1000>;
+                       interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <5>;
+                       bus-num = <3>;
+                       dmas = <&edma0 1 7>, <&edma0 1 8>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               spi4: spi@402cc000 {
+                       compatible = "nxp,s32g3-dspi", "nxp,s32g2-dspi";
+                       reg = <0x402cc000 0x1000>;
+                       interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <5>;
+                       bus-num = <4>;
+                       dmas = <&edma0 1 10>, <&edma0 1 11>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               spi5: spi@402d0000 {
+                       compatible = "nxp,s32g3-dspi", "nxp,s32g2-dspi";
+                       reg = <0x402d0000 0x1000>;
+                       interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 26>;
+                       clock-names = "dspi";
+                       spi-num-chipselects = <5>;
+                       bus-num = <5>;
+                       dmas = <&edma0 1 13>, <&edma0 1 14>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
                i2c3: i2c@402d8000 {
                        compatible = "nxp,s32g3-i2c",
                                     "nxp,s32g2-i2c";
index d26af0fb8be7b0a0b904c3125c368ffb1421606b..f1969cdcef19e33da3bf7a38bbc32892b5517eb1 100644 (file)
                        pinmux = <0x2d40>, <0x2d30>;
                };
        };
+
+       dspi1_pins: dspi1-pins {
+               dspi1-grp0 {
+                       pinmux = <0x72>;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <150>;
+                       bias-pull-up;
+               };
+
+               dspi1-grp1 {
+                       pinmux = <0x62>;
+                       output-enable;
+                       slew-rate = <150>;
+               };
+
+               dspi1-grp2 {
+                       pinmux = <0x83>;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <150>;
+               };
+
+               dspi1-grp3 {
+                       pinmux = <0x5F0>;
+                       input-enable;
+                       slew-rate = <150>;
+                       bias-pull-up;
+               };
+
+               dspi1-grp4 {
+                       pinmux = <0x3D92>,
+                                <0x3DA2>,
+                                <0x3DB2>;
+               };
+       };
+
+       dspi5_pins: dspi5-pins {
+               dspi5-grp0 {
+                       pinmux = <0x93>;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <150>;
+               };
+
+               dspi5-grp1 {
+                       pinmux = <0xA0>;
+                       input-enable;
+                       slew-rate = <150>;
+                       bias-pull-up;
+               };
+
+               dspi5-grp2 {
+                       pinmux = <0x3ED2>,
+                                <0x3EE2>,
+                                <0x3EF2>;
+               };
+
+               dspi5-grp3 {
+                       pinmux = <0xB3>;
+                       output-enable;
+                       slew-rate = <150>;
+               };
+
+               dspi5-grp4 {
+                       pinmux = <0xC3>;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <150>;
+                       bias-pull-up;
+               };
+       };
 };
 
 &can0 {
        pinctrl-1 = <&i2c4_gpio_pins>;
        status = "okay";
 };
+
+&spi1 {
+       pinctrl-0 = <&dspi1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&spi5 {
+       pinctrl-0 = <&dspi5_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
index 4587e1cb88357fbd73fc7f8bb09dd8f55ed920fb..3bc3335c92482adc111efca90ace0a95f48bd7be 100644 (file)
                        pinmux = <0x2d40>, <0x2d30>;
                };
        };
+
+       dspi1_pins: dspi1-pins {
+               dspi1-grp0 {
+                       pinmux = <0x72>;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <150>;
+                       bias-pull-up;
+               };
+
+               dspi1-grp1 {
+                       pinmux = <0x62>;
+                       output-enable;
+                       slew-rate = <150>;
+               };
+
+               dspi1-grp2 {
+                       pinmux = <0x83>;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <150>;
+               };
+
+               dspi1-grp3 {
+                       pinmux = <0x5F0>;
+                       input-enable;
+                       slew-rate = <150>;
+                       bias-pull-up;
+               };
+
+               dspi1-grp4 {
+                       pinmux = <0x3D92>,
+                                <0x3DA2>,
+                                <0x3DB2>;
+               };
+       };
+
+       dspi5_pins: dspi5-pins {
+               dspi5-grp0 {
+                       pinmux = <0x93>;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <150>;
+               };
+
+               dspi5-grp1 {
+                       pinmux = <0xA0>;
+                       input-enable;
+                       slew-rate = <150>;
+                       bias-pull-up;
+               };
+
+               dspi5-grp2 {
+                       pinmux = <0x3ED2>,
+                                <0x3EE2>,
+                                <0x3EF2>;
+               };
+
+               dspi5-grp3 {
+                       pinmux = <0xB3>;
+                       output-enable;
+                       slew-rate = <150>;
+               };
+
+               dspi5-grp4 {
+                       pinmux = <0xC3>;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <150>;
+                       bias-pull-up;
+               };
+       };
 };
 
 &can0 {
        };
 };
 
+&spi1 {
+       pinctrl-0 = <&dspi1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&spi5 {
+       pinctrl-0 = <&dspi5_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
 &i2c2 {
        pinctrl-names = "default", "gpio";
        pinctrl-0 = <&i2c2_pins>;
index 2471bb109e8e511c542ae020d6a872e49ff83547..9d44f488c0836ff8dfe3e40004b7e1ee8ea5e972 100644 (file)
 #include <dt-bindings/net/ti-dp83867.h>
 
 / {
-       sfp1: sfp1 {
-               compatible = "sff,sfp";
-               i2c-bus = <&sfp1_i2c>;
-               mod-def0-gpios = <&gpioexp2 2 GPIO_ACTIVE_LOW>;
-               los-gpios = <&gpioexp2 3 GPIO_ACTIVE_HIGH>;
-               tx-fault-gpios = <&gpioexp2 0 GPIO_ACTIVE_HIGH>;
-               tx-disable-gpios = <&gpioexp2 1 GPIO_ACTIVE_HIGH>;
-       };
 
-       sfp2: sfp2 {
-               compatible = "sff,sfp";
-               i2c-bus = <&sfp2_i2c>;
-               mod-def0-gpios = <&gpioexp2 10 GPIO_ACTIVE_LOW>;
-               los-gpios = <&gpioexp2 11 GPIO_ACTIVE_HIGH>;
-               tx-fault-gpios = <&gpioexp2 8 GPIO_ACTIVE_HIGH>;
-               tx-disable-gpios = <&gpioexp2 9 GPIO_ACTIVE_HIGH>;
-       };
 };
 
 &dpmac1 {
index 65b4ed28a3d4c2531126a32cd6334225a5a162b6..444bbf5115968575aa1d2dfe1454f5bfc070497c 100644 (file)
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
        };
+
+       sfp1: sfp1 {
+               compatible = "sff,sfp";
+               i2c-bus = <&sfp1_i2c>;
+               mod-def0-gpios = <&gpioexp2 2 GPIO_ACTIVE_LOW>;
+               los-gpios = <&gpioexp2 3 GPIO_ACTIVE_HIGH>;
+               tx-fault-gpios = <&gpioexp2 0 GPIO_ACTIVE_HIGH>;
+               tx-disable-gpios = <&gpioexp2 1 GPIO_ACTIVE_HIGH>;
+               status = "disabled";
+       };
+
+       sfp2: sfp2 {
+               compatible = "sff,sfp";
+               i2c-bus = <&sfp2_i2c>;
+               mod-def0-gpios = <&gpioexp2 10 GPIO_ACTIVE_LOW>;
+               los-gpios = <&gpioexp2 11 GPIO_ACTIVE_HIGH>;
+               tx-fault-gpios = <&gpioexp2 8 GPIO_ACTIVE_HIGH>;
+               tx-disable-gpios = <&gpioexp2 9 GPIO_ACTIVE_HIGH>;
+               status = "disabled";
+       };
 };
 
 &duart0 {
@@ -69,6 +89,7 @@
                reg = <0x70>;
                #address-cells = <1>;
                #size-cells = <0>;
+               vdd-supply = <&reg_3v3>;
 
                i2c@0 {
                        reg = <0x0>;
index 138f8778afde6a7f9d1bf0e54fb4b21fc09e545d..7da1bfd83cca25a89d30fd284488ae9bb51c3372 100644 (file)
@@ -8,6 +8,14 @@
  */
 
 / {
+       reg_vcc1v8: regulator-vcc1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+       };
+
        reg_vcc3v3: regulator-vcc3v3 {
                compatible = "regulator-fixed";
                regulator-name = "VCC3V3";
index a77a504effeab6b487ea0ef4c733f3ed80cad5be..c1e66db0f4c524809d4334b86ef741f834a9b896 100644 (file)
                f2s_free_clk: f2s-free-clk {
                        #clock-cells = <0>;
                        compatible = "fixed-clock";
+                       clock-frequency = <100000000>;
                };
 
                osc1: osc1 {
index bb0bcc6875dc9d9b8599bca77669c1065941d31f..e83fdc92621efeafa6c3645e7a026b2460dd04da 100644 (file)
  * Copyright (C) 2016, LG Electronics
  */
 
-#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 
-/ {
-       #address-cells = <2>;
-       #size-cells = <2>;
+#include "lg131x.dtsi"
 
+/ {
        compatible = "lge,lg1312";
-       interrupt-parent = <&gic>;
-
-       cpus {
-               #address-cells = <2>;
-               #size-cells = <0>;
-
-               cpu0: cpu@0 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a53";
-                       reg = <0x0 0x0>;
-                       next-level-cache = <&L2_0>;
-               };
-               cpu1: cpu@1 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a53";
-                       reg = <0x0 0x1>;
-                       enable-method = "psci";
-                       next-level-cache = <&L2_0>;
-               };
-               cpu2: cpu@2 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a53";
-                       reg = <0x0 0x2>;
-                       enable-method = "psci";
-                       next-level-cache = <&L2_0>;
-               };
-               cpu3: cpu@3 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a53";
-                       reg = <0x0 0x3>;
-                       enable-method = "psci";
-                       next-level-cache = <&L2_0>;
-               };
-               L2_0: l2-cache0 {
-                       compatible = "cache";
-                       cache-level = <2>;
-                       cache-unified;
-               };
-       };
-
-       psci {
-               compatible = "arm,psci-0.2", "arm,psci";
-               method = "smc";
-               cpu_suspend = <0x84000001>;
-               cpu_off = <0x84000002>;
-               cpu_on = <0x84000003>;
-       };
-
-       gic: interrupt-controller@c0001000 {
-               #interrupt-cells = <3>;
-               compatible = "arm,gic-400";
-               interrupt-controller;
-               reg = <0x0 0xc0001000 0x1000>,
-                     <0x0 0xc0002000 0x2000>,
-                     <0x0 0xc0004000 0x2000>,
-                     <0x0 0xc0006000 0x2000>;
-       };
-
-       pmu {
-               compatible = "arm,cortex-a53-pmu";
-               interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-affinity = <&cpu0>,
-                                    <&cpu1>,
-                                    <&cpu2>,
-                                    <&cpu3>;
-       };
-
-       timer {
-               compatible = "arm,armv8-timer";
-               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(0x0f) |
-                             IRQ_TYPE_LEVEL_LOW)>,
-                            <GIC_PPI 14 (GIC_CPU_MASK_RAW(0x0f) |
-                             IRQ_TYPE_LEVEL_LOW)>,
-                            <GIC_PPI 11 (GIC_CPU_MASK_RAW(0x0f) |
-                             IRQ_TYPE_LEVEL_LOW)>,
-                            <GIC_PPI 10 (GIC_CPU_MASK_RAW(0x0f) |
-                             IRQ_TYPE_LEVEL_LOW)>;
-       };
-
-       clk_bus: clk_bus {
-               #clock-cells = <0>;
-
-               compatible = "fixed-clock";
-               clock-frequency = <198000000>;
-               clock-output-names = "BUSCLK";
-       };
 
        soc {
                #address-cells = <2>;
                        mac-address = [ 00 00 00 00 00 00 ];
                };
        };
-
-       amba {
-               #address-cells = <2>;
-               #size-cells = <1>;
-
-               compatible = "simple-bus";
-               interrupt-parent = <&gic>;
-               ranges;
-
-               timers: timer@fd100000 {
-                       compatible = "arm,sp804", "arm,primecell";
-                       reg = <0x0 0xfd100000 0x1000>;
-                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>, <&clk_bus>, <&clk_bus>;
-                       clock-names = "timer0clk", "timer1clk", "apb_pclk";
-               };
-               wdog: watchdog@fd200000 {
-                       compatible = "arm,sp805", "arm,primecell";
-                       reg = <0x0 0xfd200000 0x1000>;
-                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>, <&clk_bus>;
-                       clock-names = "wdog_clk", "apb_pclk";
-               };
-               uart0: serial@fe000000 {
-                       compatible = "arm,pl011", "arm,primecell";
-                       reg = <0x0 0xfe000000 0x1000>;
-                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               uart1: serial@fe100000 {
-                       compatible = "arm,pl011", "arm,primecell";
-                       reg = <0x0 0xfe100000 0x1000>;
-                       interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               uart2: serial@fe200000 {
-                       compatible = "arm,pl011", "arm,primecell";
-                       reg = <0x0 0xfe200000 0x1000>;
-                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               spi0: spi@fe800000 {
-                       compatible = "arm,pl022", "arm,primecell";
-                       reg = <0x0 0xfe800000 0x1000>;
-                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>, <&clk_bus>;
-                       clock-names = "sspclk", "apb_pclk";
-               };
-               spi1: spi@fe900000 {
-                       compatible = "arm,pl022", "arm,primecell";
-                       reg = <0x0 0xfe900000 0x1000>;
-                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>, <&clk_bus>;
-                       clock-names = "sspclk", "apb_pclk";
-               };
-               dmac0: dma-controller@c1128000 {
-                       compatible = "arm,pl330", "arm,primecell";
-                       reg = <0x0 0xc1128000 0x1000>;
-                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       #dma-cells = <1>;
-               };
-               gpio0: gpio@fd400000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd400000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio1: gpio@fd410000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd410000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio2: gpio@fd420000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd420000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio3: gpio@fd430000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd430000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-               };
-               gpio4: gpio@fd440000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd440000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio5: gpio@fd450000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd450000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio6: gpio@fd460000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd460000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio7: gpio@fd470000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd470000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio8: gpio@fd480000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd480000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio9: gpio@fd490000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd490000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio10: gpio@fd4a0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4a0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio11: gpio@fd4b0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4b0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-               };
-               gpio12: gpio@fd4c0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4c0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio13: gpio@fd4d0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4d0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio14: gpio@fd4e0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4e0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio15: gpio@fd4f0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4f0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio16: gpio@fd500000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd500000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio17: gpio@fd510000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd510000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-               };
-       };
 };
index c07d670bc4659d18c4bd7b11062d193dcaa1797e..92fa5694cad1045e923d9ef92da306eef205fa6d 100644 (file)
  * Copyright (C) 2016, LG Electronics
  */
 
-#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 
-/ {
-       #address-cells = <2>;
-       #size-cells = <2>;
+#include "lg131x.dtsi"
 
+/ {
        compatible = "lge,lg1313";
-       interrupt-parent = <&gic>;
-
-       cpus {
-               #address-cells = <2>;
-               #size-cells = <0>;
-
-               cpu0: cpu@0 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a53";
-                       reg = <0x0 0x0>;
-                       next-level-cache = <&L2_0>;
-               };
-               cpu1: cpu@1 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a53";
-                       reg = <0x0 0x1>;
-                       enable-method = "psci";
-                       next-level-cache = <&L2_0>;
-               };
-               cpu2: cpu@2 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a53";
-                       reg = <0x0 0x2>;
-                       enable-method = "psci";
-                       next-level-cache = <&L2_0>;
-               };
-               cpu3: cpu@3 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a53";
-                       reg = <0x0 0x3>;
-                       enable-method = "psci";
-                       next-level-cache = <&L2_0>;
-               };
-               L2_0: l2-cache0 {
-                       compatible = "cache";
-                       cache-level = <2>;
-                       cache-unified;
-               };
-       };
-
-       psci {
-               compatible = "arm,psci-0.2", "arm,psci";
-               method = "smc";
-               cpu_suspend = <0x84000001>;
-               cpu_off = <0x84000002>;
-               cpu_on = <0x84000003>;
-       };
-
-       gic: interrupt-controller@c0001000 {
-               #interrupt-cells = <3>;
-               compatible = "arm,gic-400";
-               interrupt-controller;
-               reg = <0x0 0xc0001000 0x1000>,
-                     <0x0 0xc0002000 0x2000>,
-                     <0x0 0xc0004000 0x2000>,
-                     <0x0 0xc0006000 0x2000>;
-       };
-
-       pmu {
-               compatible = "arm,cortex-a53-pmu";
-               interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-affinity = <&cpu0>,
-                                    <&cpu1>,
-                                    <&cpu2>,
-                                    <&cpu3>;
-       };
-
-       timer {
-               compatible = "arm,armv8-timer";
-               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(0x0f) |
-                             IRQ_TYPE_LEVEL_LOW)>,
-                            <GIC_PPI 14 (GIC_CPU_MASK_RAW(0x0f) |
-                             IRQ_TYPE_LEVEL_LOW)>,
-                            <GIC_PPI 11 (GIC_CPU_MASK_RAW(0x0f) |
-                             IRQ_TYPE_LEVEL_LOW)>,
-                            <GIC_PPI 10 (GIC_CPU_MASK_RAW(0x0f) |
-                             IRQ_TYPE_LEVEL_LOW)>;
-       };
-
-       clk_bus: clk_bus {
-               #clock-cells = <0>;
-
-               compatible = "fixed-clock";
-               clock-frequency = <198000000>;
-               clock-output-names = "BUSCLK";
-       };
 
        soc {
                #address-cells = <2>;
                        mac-address = [ 00 00 00 00 00 00 ];
                };
        };
-
-       amba {
-               #address-cells = <2>;
-               #size-cells = <1>;
-
-               compatible = "simple-bus";
-               interrupt-parent = <&gic>;
-               ranges;
-
-               timers: timer@fd100000 {
-                       compatible = "arm,sp804", "arm,primecell";
-                       reg = <0x0 0xfd100000 0x1000>;
-                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>, <&clk_bus>, <&clk_bus>;
-                       clock-names = "timer0clk", "timer1clk", "apb_pclk";
-               };
-               wdog: watchdog@fd200000 {
-                       compatible = "arm,sp805", "arm,primecell";
-                       reg = <0x0 0xfd200000 0x1000>;
-                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>, <&clk_bus>;
-                       clock-names = "wdog_clk", "apb_pclk";
-               };
-               uart0: serial@fe000000 {
-                       compatible = "arm,pl011", "arm,primecell";
-                       reg = <0x0 0xfe000000 0x1000>;
-                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               uart1: serial@fe100000 {
-                       compatible = "arm,pl011", "arm,primecell";
-                       reg = <0x0 0xfe100000 0x1000>;
-                       interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               uart2: serial@fe200000 {
-                       compatible = "arm,pl011", "arm,primecell";
-                       reg = <0x0 0xfe200000 0x1000>;
-                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               spi0: spi@fe800000 {
-                       compatible = "arm,pl022", "arm,primecell";
-                       reg = <0x0 0xfe800000 0x1000>;
-                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>, <&clk_bus>;
-                       clock-names = "sspclk", "apb_pclk";
-               };
-               spi1: spi@fe900000 {
-                       compatible = "arm,pl022", "arm,primecell";
-                       reg = <0x0 0xfe900000 0x1000>;
-                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>, <&clk_bus>;
-                       clock-names = "sspclk", "apb_pclk";
-               };
-               dmac0: dma-controller@c1128000 {
-                       compatible = "arm,pl330", "arm,primecell";
-                       reg = <0x0 0xc1128000 0x1000>;
-                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       #dma-cells = <1>;
-               };
-               gpio0: gpio@fd400000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd400000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio1: gpio@fd410000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd410000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio2: gpio@fd420000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd420000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio3: gpio@fd430000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd430000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-               };
-               gpio4: gpio@fd440000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd440000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio5: gpio@fd450000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd450000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio6: gpio@fd460000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd460000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio7: gpio@fd470000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd470000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio8: gpio@fd480000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd480000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio9: gpio@fd490000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd490000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio10: gpio@fd4a0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4a0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio11: gpio@fd4b0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4b0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-               };
-               gpio12: gpio@fd4c0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4c0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio13: gpio@fd4d0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4d0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio14: gpio@fd4e0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4e0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio15: gpio@fd4f0000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd4f0000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio16: gpio@fd500000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd500000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-                       status = "disabled";
-               };
-               gpio17: gpio@fd510000 {
-                       #gpio-cells = <2>;
-                       compatible = "arm,pl061", "arm,primecell";
-                       gpio-controller;
-                       reg = <0x0 0xfd510000 0x1000>;
-                       clocks = <&clk_bus>;
-                       clock-names = "apb_pclk";
-               };
-       };
 };
diff --git a/src/arm64/lg/lg131x.dtsi b/src/arm64/lg/lg131x.dtsi
new file mode 100644 (file)
index 0000000..4cb1e45
--- /dev/null
@@ -0,0 +1,333 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for lg131x SoCs
+ *
+ * Copyright (C) 2016, LG Electronics
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       interrupt-parent = <&gic>;
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x0>;
+                       next-level-cache = <&L2_0>;
+               };
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x1>;
+                       enable-method = "psci";
+                       next-level-cache = <&L2_0>;
+               };
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x2>;
+                       enable-method = "psci";
+                       next-level-cache = <&L2_0>;
+               };
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x3>;
+                       enable-method = "psci";
+                       next-level-cache = <&L2_0>;
+               };
+               L2_0: l2-cache0 {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+               };
+       };
+
+       psci {
+               compatible = "arm,psci-0.2", "arm,psci";
+               method = "smc";
+               cpu_suspend = <0x84000001>;
+               cpu_off = <0x84000002>;
+               cpu_on = <0x84000003>;
+       };
+
+       gic: interrupt-controller@c0001000 {
+               #interrupt-cells = <3>;
+               compatible = "arm,gic-400";
+               interrupt-controller;
+               reg = <0x0 0xc0001000 0x1000>,
+                     <0x0 0xc0002000 0x2000>,
+                     <0x0 0xc0004000 0x2000>,
+                     <0x0 0xc0006000 0x2000>;
+       };
+
+       pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>,
+                                    <&cpu1>,
+                                    <&cpu2>,
+                                    <&cpu3>;
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(0x0f) |
+                             IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_RAW(0x0f) |
+                             IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_RAW(0x0f) |
+                             IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_RAW(0x0f) |
+                             IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       clk_bus: clk_bus {
+               #clock-cells = <0>;
+
+               compatible = "fixed-clock";
+               clock-frequency = <198000000>;
+               clock-output-names = "BUSCLK";
+       };
+
+       amba {
+               #address-cells = <2>;
+               #size-cells = <1>;
+
+               compatible = "simple-bus";
+               interrupt-parent = <&gic>;
+               ranges;
+
+               timers: timer@fd100000 {
+                       compatible = "arm,sp804", "arm,primecell";
+                       reg = <0x0 0xfd100000 0x1000>;
+                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_bus>, <&clk_bus>, <&clk_bus>;
+                       clock-names = "timer0clk", "timer1clk", "apb_pclk";
+               };
+               wdog: watchdog@fd200000 {
+                       compatible = "arm,sp805", "arm,primecell";
+                       reg = <0x0 0xfd200000 0x1000>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_bus>, <&clk_bus>;
+                       clock-names = "wdog_clk", "apb_pclk";
+               };
+               uart0: serial@fe000000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x0 0xfe000000 0x1000>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_bus>, <&clk_bus>;
+                       clock-names = "uartclk", "apb_pclk";
+                       status = "disabled";
+               };
+               uart1: serial@fe100000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x0 0xfe100000 0x1000>;
+                       interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_bus>, <&clk_bus>;
+                       clock-names = "uartclk", "apb_pclk";
+                       status = "disabled";
+               };
+               uart2: serial@fe200000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x0 0xfe200000 0x1000>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_bus>, <&clk_bus>;
+                       clock-names = "uartclk", "apb_pclk";
+                       status = "disabled";
+               };
+               spi0: spi@fe800000 {
+                       compatible = "arm,pl022", "arm,primecell";
+                       reg = <0x0 0xfe800000 0x1000>;
+                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_bus>, <&clk_bus>;
+                       clock-names = "sspclk", "apb_pclk";
+               };
+               spi1: spi@fe900000 {
+                       compatible = "arm,pl022", "arm,primecell";
+                       reg = <0x0 0xfe900000 0x1000>;
+                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_bus>, <&clk_bus>;
+                       clock-names = "sspclk", "apb_pclk";
+               };
+               dmac0: dma-controller@c1128000 {
+                       compatible = "arm,pl330", "arm,primecell";
+                       reg = <0x0 0xc1128000 0x1000>;
+                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <1>;
+               };
+               gpio0: gpio@fd400000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd400000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio1: gpio@fd410000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd410000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio2: gpio@fd420000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd420000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio3: gpio@fd430000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd430000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+               };
+               gpio4: gpio@fd440000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd440000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio5: gpio@fd450000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd450000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio6: gpio@fd460000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd460000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio7: gpio@fd470000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd470000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio8: gpio@fd480000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd480000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio9: gpio@fd490000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd490000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio10: gpio@fd4a0000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd4a0000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio11: gpio@fd4b0000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd4b0000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+               };
+               gpio12: gpio@fd4c0000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd4c0000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio13: gpio@fd4d0000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd4d0000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio14: gpio@fd4e0000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd4e0000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio15: gpio@fd4f0000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd4f0000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio16: gpio@fd500000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd500000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+               gpio17: gpio@fd510000 {
+                       #gpio-cells = <2>;
+                       compatible = "arm,pl061", "arm,primecell";
+                       gpio-controller;
+                       reg = <0x0 0xfd510000 0x1000>;
+                       clocks = <&clk_bus>;
+                       clock-names = "apb_pclk";
+               };
+       };
+};
index 0d4a5fd9503f29b5f251909de7768b8d17c497f0..f2d278d171eb1959b709fa4d7a9a75f2f6c3c2f7 100644 (file)
        /* CPS Lane 1 - U32 */
        sata-port@0 {
                phys = <&cp1_comphy1 0>;
+               status = "okay";
        };
 
        /* CPS Lane 3 - U31 */
        sata-port@1 {
                phys = <&cp1_comphy3 1>;
+               status = "okay";
        };
 };
 
index ad0ab34b66028c53b8a18b3e8ee0c0aec869759f..bd42bfbe408bbe2a4d58dbd40204bcfb3c126312 100644 (file)
 
 /* SRDS #0 - SATA on M.2 connector */
 &cp0_sata0 {
-       phys = <&cp0_comphy0 1>;
        status = "okay";
 
-       /* only port 1 is available */
-       /delete-node/ sata-port@0;
+       sata-port@1 {
+               phys = <&cp0_comphy0 1>;
+               status = "okay";
+       };
 };
 
 /* microSD */
index 47234d0858dd2195bb1485f25768ad3c757b7ac2..338853d3b179bb5cb742e975bb830fdb9d62d4cc 100644 (file)
 
 /* SRDS #1 - SATA on M.2 (J44) */
 &cp1_sata0 {
-       phys = <&cp1_comphy1 0>;
        status = "okay";
 
        /* only port 0 is available */
-       /delete-node/ sata-port@1;
+       sata-port@0 {
+               phys = <&cp1_comphy1 0>;
+               status = "okay";
+       };
 };
 
 &cp1_syscon0 {
index 0f53745a6fa0d8cbd3ab9cdc28a972ed748c275f..6f237d3542b9102695f8a48457f43340da994a2c 100644 (file)
 /* SRDS #0,#1,#2,#3 - PCIe */
 &cp0_pcie0 {
        num-lanes = <4>;
-       phys = <&cp0_comphy0 0>, <&cp0_comphy1 0>, <&cp0_comphy2 0>, <&cp0_comphy3 0>;
+       /*
+        * The mvebu-comphy driver does not currently know how to pass correct
+        * lane-count to ATF while configuring the serdes lanes.
+        * Rely on bootloader configuration only.
+        *
+        * phys = <&cp0_comphy0 0>, <&cp0_comphy1 0>, <&cp0_comphy2 0>, <&cp0_comphy3 0>;
+        */
        status = "okay";
 };
 
 /* SRDS #0,#1 - PCIe */
 &cp1_pcie0 {
        num-lanes = <2>;
-       phys = <&cp1_comphy0 0>, <&cp1_comphy1 0>;
+       /*
+        * The mvebu-comphy driver does not currently know how to pass correct
+        * lane-count to ATF while configuring the serdes lanes.
+        * Rely on bootloader configuration only.
+        *
+        * phys = <&cp1_comphy0 0>, <&cp1_comphy1 0>;
+        */
        status = "okay";
 };
 
        status = "okay";
 
        /* only port 1 is available */
-       /delete-node/ sata-port@0;
-
        sata-port@1 {
                phys = <&cp1_comphy3 1>;
+               status = "okay";
        };
 };
 
        status = "okay";
 
        /* only port 1 is available */
-       /delete-node/ sata-port@0;
-
        sata-port@1 {
+               status = "okay";
                phys = <&cp2_comphy3 1>;
        };
 };
index afc041c1c448c3e49e1c35d817e91e75db6cfad6..bb2bb47fd77c12f1461b5b9f6ef5567a32cc0153 100644 (file)
        pinctrl-0 = <&ap_mmc0_pins>;
        pinctrl-names = "default";
        vqmmc-supply = <&v_1_8>;
+       /*
+        * Not stable in HS modes - phy needs "more calibration", so disable
+        * UHS (by preventing voltage switch), SDR104, SDR50 and DDR50 modes.
+        */
+       no-1-8-v;
+       no-sd;
+       no-sdio;
+       non-removable;
        status = "okay";
 };
 
diff --git a/src/arm64/marvell/mmp/pxa1908-samsung-coreprimevelte.dts b/src/arm64/marvell/mmp/pxa1908-samsung-coreprimevelte.dts
new file mode 100644 (file)
index 0000000..47a4f01
--- /dev/null
@@ -0,0 +1,331 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include "pxa1908.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/linux-event-codes.h>
+
+/ {
+       model = "Samsung Galaxy Core Prime VE LTE";
+       compatible = "samsung,coreprimevelte", "marvell,pxa1908";
+
+       aliases {
+               mmc0 = &sdh2; /* eMMC */
+               mmc1 = &sdh0; /* SD card */
+               serial0 = &uart0;
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               stdout-path = "serial0:115200n8";
+
+               fb0: framebuffer@17177000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0 0x17177000 0 (480 * 800 * 4)>;
+                       width = <480>;
+                       height = <800>;
+                       stride = <(480 * 4)>;
+                       format = "a8r8g8b8";
+               };
+       };
+
+       /* Bootloader fills this in */
+       memory@0 {
+               device_type = "memory";
+               reg = <0 0 0 0>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               framebuffer@17000000 {
+                       reg = <0 0x17000000 0 0x1800000>;
+                       no-map;
+               };
+
+               gpu@9000000 {
+                       reg = <0 0x9000000 0 0x1000000>;
+               };
+
+               /* Communications processor, aka modem */
+               cp@5000000 {
+                       reg = <0 0x5000000 0 0x3000000>;
+               };
+
+               cm3@a000000 {
+                       reg = <0 0xa000000 0 0x80000>;
+               };
+
+               seclog@8000000 {
+                       reg = <0 0x8000000 0 0x100000>;
+               };
+
+               ramoops@8100000 {
+                       compatible = "ramoops";
+                       reg = <0 0x8100000 0 0x40000>;
+                       record-size = <0x8000>;
+                       console-size = <0x20000>;
+                       max-reason = <5>;
+               };
+       };
+
+       i2c-muic {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio 30 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio 29 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               i2c-gpio,delay-us = <3>;
+               i2c-gpio,timeout-ms = <100>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_muic_pins>;
+
+               muic: extcon@14 {
+                       compatible = "siliconmitus,sm5504-muic";
+                       reg = <0x14>;
+                       interrupt-parent = <&gpio>;
+                       interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_keys_pins>;
+               autorepeat;
+
+               key-home {
+                       label = "Home";
+                       linux,code = <KEY_HOME>;
+                       gpios = <&gpio 50 GPIO_ACTIVE_LOW>;
+               };
+
+               key-volup {
+                       label = "Volume Up";
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+               };
+
+               key-voldown {
+                       label = "Volume Down";
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&smmu {
+       status = "okay";
+};
+
+&pmx {
+       pinctrl-single,gpio-range = <&range 55 55 0>,
+                                   <&range 110 32 0>,
+                                   <&range 52 1 0>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&board_pins_0 &board_pins_1 &board_pins_2>;
+
+       board_pins_0: board-pins-0 {
+               pinctrl-single,pins = <
+                       0x160 0
+                       0x164 0
+                       0x168 0
+                       0x16c 0
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0x8000 0x8000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0x8000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0x288 0x388>;
+       };
+
+       board_pins_1: board-pins-1 {
+               pinctrl-single,pins = <
+                       0x44 1
+                       0x48 1
+                       0x20 1
+                       0x18 1
+                       0x14 1
+                       0x10 1
+                       0xc 1
+                       0x8 1
+                       0x68 1
+                       0x58 0
+                       0x54 0
+                       0x7c 0
+                       0x6c 0
+                       0x70 0
+                       0x4c 1
+                       0x50 1
+                       0xac 0
+                       0x90 0
+                       0x8c 0
+                       0x88 0
+                       0x84 0
+                       0xc8 0
+                       0x128 0
+                       0x190 0
+                       0x194 0
+                       0x1a0 0
+                       0x114 0
+                       0x118 0
+                       0x1d8 0
+                       0x1e4 0
+                       0xe8 0
+                       0x100 0
+                       0x204 0
+                       0x210 0
+                       0x218 0
+               >;
+               pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xc000>;
+               pinctrl-single,low-power-mode = <0x288 0x388>;
+       };
+
+       board_pins_2: board-pins-2 {
+               pinctrl-single,pins = <
+                       0x260 0
+                       0x264 0
+                       0x268 0
+                       0x26c 0
+                       0x270 0
+                       0x274 0
+                       0x78 0
+                       0x74 0
+                       0xb0 1
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       uart0_pins: uart0-pins {
+               pinctrl-single,pins = <
+                       0x198 6
+                       0x19c 6
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       gpio_keys_pins: gpio-keys-pins {
+               pinctrl-single,pins = <
+                       0x11c 0
+                       0x120 0
+                       0x1a4 0
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0xa0000 0x8000 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       i2c_muic_pins: i2c-muic-pins {
+               pinctrl-single,pins = <
+                       0x154 0
+                       0x150 0
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0x288 0x388>;
+       };
+
+       sdh0_pins_0: sdh0-pins-0 {
+               pinctrl-single,pins = <
+                       0x108 0
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       sdh0_pins_1: sdh0-pins-1 {
+               pinctrl-single,pins = <
+                       0x94 0
+                       0x98 0
+                       0x9c 0
+                       0xa0 0
+                       0xa4 0
+               >;
+               pinctrl-single,drive-strength = <0x800 0x1800>;
+               pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       sdh0_pins_2: sdh0-pins-2 {
+               pinctrl-single,pins = <
+                       0xa8 0
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0x208 0x388>;
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+};
+
+&twsi0 {
+       status = "okay";
+};
+
+&twsi1 {
+       status = "okay";
+};
+
+&twsi2 {
+       status = "okay";
+};
+
+&twsi3 {
+       status = "okay";
+};
+
+&usb {
+       extcon = <&muic>, <&muic>;
+};
+
+&sdh2 {
+       /* Disabled for now because initialization fails with -ETIMEDOUT. */
+       status = "disabled";
+       bus-width = <8>;
+       non-removable;
+       mmc-ddr-1_8v;
+};
+
+&sdh0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdh0_pins_0 &sdh0_pins_1 &sdh0_pins_2>;
+       cd-gpios = <&gpio 11 0>;
+       cd-inverted;
+       bus-width = <4>;
+       wp-inverted;
+};
diff --git a/src/arm64/marvell/mmp/pxa1908.dtsi b/src/arm64/marvell/mmp/pxa1908.dtsi
new file mode 100644 (file)
index 0000000..cf2b910
--- /dev/null
@@ -0,0 +1,300 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/dts-v1/;
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/marvell,pxa1908.h>
+
+/ {
+       model = "Marvell Armada PXA1908";
+       compatible = "marvell,pxa1908";
+       #address-cells = <2>;
+       #size-cells = <2>;
+       interrupt-parent = <&gic>;
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0 0>;
+                       enable-method = "psci";
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0 1>;
+                       enable-method = "psci";
+               };
+
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0 2>;
+                       enable-method = "psci";
+               };
+
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0 3>;
+                       enable-method = "psci";
+               };
+       };
+
+       pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
+                       <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+                       <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
+                       <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+       };
+
+       psci {
+               compatible = "arm,psci-0.2";
+               method = "smc";
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                       <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                       <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                       <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               smmu: iommu@c0010000 {
+                       compatible = "arm,mmu-400";
+                       reg = <0 0xc0010000 0 0x10000>;
+                       #global-interrupts = <1>;
+                       #iommu-cells = <1>;
+                       interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               gic: interrupt-controller@d1df9000 {
+                       compatible = "arm,gic-400";
+                       reg = <0 0xd1df9000 0 0x1000>,
+                               <0 0xd1dfa000 0 0x2000>,
+                               /* The subsequent registers are guesses. */
+                               <0 0xd1dfc000 0 0x2000>,
+                               <0 0xd1dfe000 0 0x2000>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+               };
+
+               apb@d4000000 {
+                       compatible = "simple-bus";
+                       reg = <0 0xd4000000 0 0x200000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0 0 0xd4000000 0x200000>;
+
+                       pdma: dma-controller@0 {
+                               compatible = "marvell,pdma-1.0";
+                               reg = <0 0x10000>;
+                               interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+                               dma-channels = <30>;
+                               #dma-cells = <2>;
+                       };
+
+                       twsi1: i2c@10800 {
+                               compatible = "mrvl,mmp-twsi";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x10800 0x64>;
+                               interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbc PXA1908_CLK_TWSI1>;
+                               mrvl,i2c-fast-mode;
+                               status = "disabled";
+                       };
+
+                       twsi0: i2c@11000 {
+                               compatible = "mrvl,mmp-twsi";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x11000 0x64>;
+                               interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbc PXA1908_CLK_TWSI0>;
+                               mrvl,i2c-fast-mode;
+                               status = "disabled";
+                       };
+
+                       twsi3: i2c@13800 {
+                               compatible = "mrvl,mmp-twsi";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x13800 0x64>;
+                               interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbc PXA1908_CLK_TWSI3>;
+                               mrvl,i2c-fast-mode;
+                               status = "disabled";
+                       };
+
+                       apbc: clock-controller@15000 {
+                               compatible = "marvell,pxa1908-apbc";
+                               reg = <0x15000 0x1000>;
+                               #clock-cells = <1>;
+                       };
+
+                       uart0: serial@17000 {
+                               compatible = "mrvl,mmp-uart", "intel,xscale-uart";
+                               reg = <0x17000 0x1000>;
+                               interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbc PXA1908_CLK_UART0>;
+                               reg-shift = <2>;
+                       };
+
+                       uart1: serial@18000 {
+                               compatible = "mrvl,mmp-uart", "intel,xscale-uart";
+                               reg = <0x18000 0x1000>;
+                               interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbc PXA1908_CLK_UART1>;
+                               reg-shift = <2>;
+                       };
+
+                       gpio: gpio@19000 {
+                               compatible = "marvell,mmp-gpio";
+                               reg = <0x19000 0x800>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               clocks = <&apbc PXA1908_CLK_GPIO>;
+                               interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "gpio_mux";
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               ranges = <0 0x19000 0x800>;
+
+                               gpio@0 {
+                                       reg = <0x0 0x4>;
+                               };
+
+                               gpio@4 {
+                                       reg = <0x4 0x4>;
+                               };
+
+                               gpio@8 {
+                                       reg = <0x8 0x4>;
+                               };
+
+                               gpio@100 {
+                                       reg = <0x100 0x4>;
+                               };
+                       };
+
+                       pmx: pinmux@1e000 {
+                               compatible = "marvell,pxa1908-padconf", "pinconf-single";
+                               reg = <0x1e000 0x330>;
+
+                               #pinctrl-cells = <1>;
+                               pinctrl-single,register-width = <32>;
+                               pinctrl-single,function-mask = <7>;
+
+                               range: gpio-range {
+                                       #pinctrl-single,gpio-range-cells = <3>;
+                               };
+                       };
+
+                       uart2: serial@36000 {
+                               compatible = "mrvl,mmp-uart", "intel,xscale-uart";
+                               reg = <0x36000 0x1000>;
+                               interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbcp PXA1908_CLK_UART2>;
+                               reg-shift = <2>;
+                       };
+
+                       twsi2: i2c@37000 {
+                               compatible = "mrvl,mmp-twsi";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x37000 0x64>;
+                               interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbcp PXA1908_CLK_TWSI2>;
+                               mrvl,i2c-fast-mode;
+                               status = "disabled";
+                       };
+
+                       apbcp: clock-controller@3b000 {
+                               compatible = "marvell,pxa1908-apbcp";
+                               reg = <0x3b000 0x1000>;
+                               #clock-cells = <1>;
+                       };
+
+                       mpmu: clock-controller@50000 {
+                               compatible = "marvell,pxa1908-mpmu";
+                               reg = <0x50000 0x1000>;
+                               #clock-cells = <1>;
+                       };
+               };
+
+               axi@d4200000 {
+                       compatible = "simple-bus";
+                       reg = <0 0xd4200000 0 0x200000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0 0 0xd4200000 0x200000>;
+
+                       usbphy: phy@7000 {
+                               compatible = "marvell,pxa1928-usb-phy";
+                               reg = <0x7000 0x200>;
+                               clocks = <&apmu PXA1908_CLK_USB>;
+                               #phy-cells = <0>;
+                       };
+
+                       usb: usb@8000 {
+                               compatible = "chipidea,usb2";
+                               reg = <0x8000 0x200>;
+                               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apmu PXA1908_CLK_USB>;
+                               phys = <&usbphy>;
+                               phy-names = "usb-phy";
+                       };
+
+                       sdh0: mmc@80000 {
+                               compatible = "mrvl,pxav3-mmc";
+                               reg = <0x80000 0x120>;
+                               interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apmu PXA1908_CLK_SDH0>;
+                               clock-names = "io";
+                               mrvl,clk-delay-cycles = <31>;
+                       };
+
+                       sdh1: mmc@80800 {
+                               compatible = "mrvl,pxav3-mmc";
+                               reg = <0x80800 0x120>;
+                               interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apmu PXA1908_CLK_SDH1>;
+                               clock-names = "io";
+                               mrvl,clk-delay-cycles = <31>;
+                       };
+
+                       sdh2: mmc@81000 {
+                               compatible = "mrvl,pxav3-mmc";
+                               reg = <0x81000 0x120>;
+                               interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apmu PXA1908_CLK_SDH2>;
+                               clock-names = "io";
+                               mrvl,clk-delay-cycles = <31>;
+                       };
+
+                       apmu: clock-controller@82800 {
+                               compatible = "marvell,pxa1908-apmu";
+                               reg = <0x82800 0x400>;
+                               #clock-cells = <1>;
+                       };
+               };
+       };
+};
index 81ba045e0e0eaf2ef77962f659e528e20fd04cb9..5fd222df440d81f33ceffd501a746b75b956b04d 100644 (file)
@@ -3,6 +3,7 @@
 /dts-v1/;
 
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
 #include <dt-bindings/regulator/richtek,rt5190a-regulator.h>
 
 #include "mt7988a.dtsi"
                status = "okay";
        };
 
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               led_green: led-green {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&pio 79 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+
+               led_blue: led-blue {
+                       function = LED_FUNCTION_WPS;
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&pio 63 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+       };
+
+
        reg_1p8v: regulator-1p8v {
                compatible = "regulator-fixed";
                regulator-name = "fixed-1.8V";
        };
 };
 
+&cci {
+       proc-supply = <&rt5190_buck3>;
+};
+
 &cpu0 {
        proc-supply = <&rt5190_buck3>;
 };
 };
 
 &pio {
-       mdio0_pins: mdio0-pins {
-               mux {
-                       function = "eth";
-                       groups = "mdc_mdio0";
-               };
-
-               conf {
-                       pins = "SMI_0_MDC", "SMI_0_MDIO";
-                       drive-strength = <8>;
-               };
-       };
-
        i2c0_pins: i2c0-g0-pins {
                mux {
                        function = "i2c";
                };
        };
 
-       i2c1_sfp_pins: i2c1-sfp-g0-pins {
-               mux {
-                       function = "i2c";
-                       groups = "i2c1_sfp";
-               };
-       };
-
-       i2c2_0_pins: i2c2-g0-pins {
-               mux {
-                       function = "i2c";
-                       groups = "i2c2_0";
-               };
-       };
-
        i2c2_1_pins: i2c2-g1-pins {
                mux {
                        function = "i2c";
                };
        };
 
-       gbe0_led1_pins: gbe0-led1-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe0_led1";
-               };
-       };
-
-       gbe1_led1_pins: gbe1-led1-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe1_led1";
-               };
-       };
-
-       gbe2_led1_pins: gbe2-led1-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe2_led1";
-               };
-       };
-
-       gbe3_led1_pins: gbe3-led1-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe3_led1";
-               };
-       };
-
        i2p5gbe_led0_pins: 2p5gbe-led0-pins {
                mux {
                        function = "led";
                };
        };
 
-       i2p5gbe_led1_pins: 2p5gbe-led1-pins {
-               mux {
-                       function = "led";
-                       groups = "2p5gbe_led1";
-               };
-       };
-
        mmc0_pins_emmc_45: mmc0-emmc-45-pins {
                mux {
                        function = "flash";
                };
        };
 
-       snfi_pins: snfi-pins {
-               mux {
-                       function = "flash";
-                       groups = "snfi";
-               };
-       };
-
-       spi0_pins: spi0-pins {
-               mux {
-                       function = "spi";
-                       groups = "spi0";
-               };
-       };
-
        spi0_flash_pins: spi0-flash-pins {
                mux {
                        function = "spi";
                        groups = "spi0", "spi0_wp_hold";
                };
        };
-
-       spi2_pins: spi2-pins {
-               mux {
-                       function = "spi";
-                       groups = "spi2";
-               };
-       };
-
-       spi2_flash_pins: spi2-flash-pins {
-               mux {
-                       function = "spi";
-                       groups = "spi2", "spi2_wp_hold";
-               };
-       };
 };
 
 &pwm {
index c46b31f8d6531fe2260ca7ca5b81c17090d08610..560ec86dbec021daff493bea1faf276b2ab56316 100644 (file)
        #address-cells = <2>;
        #size-cells = <2>;
 
+       cci: cci {
+               compatible = "mediatek,mt7988-cci", "mediatek,mt8183-cci";
+               clocks = <&mcusys CLK_MCU_BUS_DIV_SEL>,
+                        <&topckgen CLK_TOP_XTAL>;
+               clock-names = "cci", "intermediate";
+               operating-points-v2 = <&cci_opp>;
+       };
+
+       cci_opp: opp-table-cci {
+               compatible = "operating-points-v2";
+               opp-shared;
+               opp-480000000 {
+                       opp-hz = /bits/ 64 <480000000>;
+                       opp-microvolt = <850000>;
+               };
+               opp-660000000 {
+                       opp-hz = /bits/ 64 <660000000>;
+                       opp-microvolt = <850000>;
+               };
+               opp-900000000 {
+                       opp-hz = /bits/ 64 <900000000>;
+                       opp-microvolt = <850000>;
+               };
+               opp-1080000000 {
+                       opp-hz = /bits/ 64 <1080000000>;
+                       opp-microvolt = <900000>;
+               };
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
@@ -25,6 +54,7 @@
                                 <&topckgen CLK_TOP_XTAL>;
                        clock-names = "cpu", "intermediate";
                        operating-points-v2 = <&cluster0_opp>;
+                       mediatek,cci = <&cci>;
                };
 
                cpu1: cpu@1 {
@@ -36,6 +66,7 @@
                                 <&topckgen CLK_TOP_XTAL>;
                        clock-names = "cpu", "intermediate";
                        operating-points-v2 = <&cluster0_opp>;
+                       mediatek,cci = <&cci>;
                };
 
                cpu2: cpu@2 {
@@ -47,6 +78,7 @@
                                 <&topckgen CLK_TOP_XTAL>;
                        clock-names = "cpu", "intermediate";
                        operating-points-v2 = <&cluster0_opp>;
+                       mediatek,cci = <&cci>;
                };
 
                cpu3: cpu@3 {
@@ -58,6 +90,7 @@
                                 <&topckgen CLK_TOP_XTAL>;
                        clock-names = "cpu", "intermediate";
                        operating-points-v2 = <&cluster0_opp>;
+                       mediatek,cci = <&cci>;
                };
 
                cluster0_opp: opp-table-0 {
index 6d1d8877b43f24d65a90401226e14a200778ee57..122a57c3780b69ac25bb114193814f68dac43791 100644 (file)
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
+
+               afe_dma_mem: audio-dma-pool {
+                       compatible = "shared-dma-pool";
+                       size = <0 0x100000>;
+                       alignment = <0 0x10>;
+                       no-map;
+               };
+
                vpu_dma_reserved: vpu-dma-mem@b7000000 {
                        compatible = "shared-dma-pool";
                        reg = <0 0xb7000000 0 0x500000>;
                                          <&topckgen CLK_TOP_AUD_2_SEL>;
                        assigned-clock-parents = <&topckgen CLK_TOP_APLL1>,
                                                 <&topckgen CLK_TOP_APLL2>;
+                       memory-region = <&afe_dma_mem>;
                };
 
                mmc0: mmc@11230000 {
index ecc6c4d6f1cdff3f297d96cf67bf53917fa01d31..400c61d1103561db6ee0fb2d2e1c157529d03206 100644 (file)
                #size-cells = <2>;
                ranges;
 
+               afe_dma_mem: audio-dma-pool {
+                       compatible = "shared-dma-pool";
+                       size = <0 0x100000>;
+                       alignment = <0 0x10>;
+                       no-map;
+               };
+
                scp_mem_reserved: memory@50000000 {
                        compatible = "shared-dma-pool";
                        reg = <0 0x50000000 0 0x2900000>;
        };
 };
 
+&afe {
+       memory-region = <&afe_dma_mem>;
+};
+
 &auxadc {
        status = "okay";
 };
diff --git a/src/arm64/mediatek/mt8186-corsola-squirtle.dts b/src/arm64/mediatek/mt8186-corsola-squirtle.dts
new file mode 100644 (file)
index 0000000..f721ad4
--- /dev/null
@@ -0,0 +1,107 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2024 Google LLC
+ */
+
+/dts-v1/;
+#include "mt8186-corsola-voltorb.dtsi"
+
+/ {
+       model = "Google squirtle board";
+       compatible = "google,squirtle", "mediatek,mt8186";
+       chassis-type = "convertible";
+};
+
+&i2c1 {
+       touchscreen@10 {
+               compatible = "elan,ekth6915";
+               reg = <0x10>;
+               interrupts-extended = <&pio 12 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&touchscreen_pins>;
+               reset-gpios = <&pio 60 GPIO_ACTIVE_LOW>;
+               vcc33-supply = <&pp3300_s3>;
+               status = "fail-needs-probe";
+       };
+
+       touchscreen@16 {
+               compatible = "elan,ekth8d18", "elan,ekth6a12nay";
+               reg = <0x16>;
+               interrupts-extended = <&pio 12 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&touchscreen_pins>;
+               reset-gpios = <&pio 60 GPIO_ACTIVE_LOW>;
+               vcc33-supply = <&pp3300_s3>;
+               status = "fail-needs-probe";
+       };
+};
+
+&i2c2 {
+       trackpad@68 {
+               compatible = "hid-over-i2c";
+               reg = <0x68>;
+               hid-descr-addr = <0x20>;
+               interrupts-extended = <&pio 11 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&trackpad_pin>;
+               vdd-supply = <&pp3300_s3>;
+               wakeup-source;
+               status = "fail-needs-probe";
+       };
+};
+
+&i2c5 {
+       clock-frequency = <400000>;
+
+       /delete-node/ codec@1a;
+
+       rt5650: codec@1a {
+               compatible = "realtek,rt5650";
+               reg = <0x1a>;
+               interrupts-extended = <&pio 17 IRQ_TYPE_EDGE_BOTH>;
+               avdd-supply = <&mt6366_vio18_reg>;
+               cpvdd-supply = <&mt6366_vio18_reg>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&speaker_codec_pins_default>;
+               cbj-sleeve-gpios = <&pio 150 GPIO_ACTIVE_HIGH>;
+               #sound-dai-cells = <0>;
+               realtek,dmic1-data-pin = <2>;
+               realtek,jd-mode = <2>;
+       };
+};
+
+&sound {
+       compatible = "mediatek,mt8186-mt6366-rt5650-sound";
+       model = "mt8186_rt5650";
+
+       audio-routing =
+               "Headphone", "HPOL",
+               "Headphone", "HPOR",
+               "HDMI1", "TX";
+
+       hs-playback-dai-link {
+               codec {
+                       sound-dai = <&rt5650>;
+               };
+       };
+
+       hs-capture-dai-link {
+               codec {
+                       sound-dai = <&rt5650>;
+               };
+       };
+
+       spk-hdmi-playback-dai-link {
+               codec {
+                       sound-dai = <&it6505dptx>;
+               };
+       };
+};
+
+&speaker_codec {
+       status = "disabled";
+};
+
+&trackpad_steelix {
+       status = "disabled";
+};
index e74e886a00cbef4ba4025fe7101ca68a77069524..8a196dc9a96b8d0b369f71aa561b9386a57514ce 100644 (file)
        i2c-scl-internal-delay-ns = <22000>;
 
        /* second source component */
-       trackpad@2c {
+       trackpad_steelix: trackpad@2c {
                compatible = "hid-over-i2c";
                reg = <0x2c>;
                hid-descr-addr = <0x20>;
                interrupts-extended = <&pio 11 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&trackpad_pin>;
                vdd-supply = <&pp3300_s3>;
                wakeup-source;
+               status = "fail-needs-probe";
        };
 };
 
                };
        };
 };
+
+&trackpad {
+       status = "fail-needs-probe";
+};
index c3ae6f9616c8fd43db4d9acb43e32aa131aabca8..4dbf2cb73a81e15d1ac1afc73cf1b6174c950331 100644 (file)
@@ -17,6 +17,8 @@
                compatible = "hid-over-i2c";
                reg = <0x15>;
                interrupts-extended = <&pio 11 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&trackpad_pin>;
                hid-descr-addr = <0x0001>;
                vdd-supply = <&pp3300_s3>;
                wakeup-source;
index 447b57b12b415a3c1111c04b3ab33ce377ac32bd..ee5bc2cd9e9feb913eed9565b8f22c75c82518ac 100644 (file)
@@ -19,6 +19,8 @@
                compatible = "hid-over-i2c";
                reg = <0x15>;
                interrupts-extended = <&pio 11 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&trackpad_pin>;
                hid-descr-addr = <0x0001>;
                vdd-supply = <&pp3300_s3>;
                wakeup-source;
diff --git a/src/arm64/mediatek/mt8186-corsola-voltorb-sku589824.dts b/src/arm64/mediatek/mt8186-corsola-voltorb-sku589824.dts
deleted file mode 100644 (file)
index d16834e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0 OR MIT)
-/*
- * Copyright 2022 Google LLC
- */
-
-/dts-v1/;
-#include "mt8186-corsola-voltorb.dtsi"
-
-/ {
-       model = "Google Voltorb sku589824 board";
-       compatible = "google,voltorb-sku589824", "google,voltorb",
-                    "mediatek,mt8186";
-};
similarity index 76%
rename from src/arm64/mediatek/mt8186-corsola-voltorb-sku589825.dts
rename to src/arm64/mediatek/mt8186-corsola-voltorb.dts
index 45e57f7706cc121eecebd92537b7ffad8d4b8d7c..cc805408a8b7a3897a7f8c8db54cfadb396c13f6 100644 (file)
@@ -7,9 +7,8 @@
 #include "mt8186-corsola-voltorb.dtsi"
 
 / {
-       model = "Google Voltorb sku589825 board";
-       compatible = "google,voltorb-sku589825", "google,voltorb",
-                    "mediatek,mt8186";
+       model = "Google Voltorb board";
+       compatible = "google,voltorb", "mediatek,mt8186";
 };
 
 &i2c1 {
index fc78a79d96e97b014fe06c7e91e7c23f0a8b52f3..ff20376a44d7a511d208f07f89107c123a4d6f11 100644 (file)
                #size-cells = <2>;
                ranges;
 
+               afe_dma_mem: audio-dma-pool {
+                       compatible = "shared-dma-pool";
+                       size = <0 0x100000>;
+                       alignment = <0 0x10>;
+                       no-map;
+               };
+
                adsp_dma_mem: memory@61000000 {
                        compatible = "shared-dma-pool";
                        reg = <0 0x61000000 0 0x100000>;
 };
 
 &afe {
+       memory-region = <&afe_dma_mem>;
        status = "okay";
 };
 
 
 &i2c2 {
        pinctrl-names = "default";
-       /*
-        * Trackpad pin put here to work around second source components
-        * sharing the pinmux in steelix designs.
-        */
-       pinctrl-0 = <&i2c2_pins>, <&trackpad_pin>;
+       pinctrl-0 = <&i2c2_pins>;
        clock-frequency = <400000>;
        i2c-scl-internal-delay-ns = <10000>;
        status = "okay";
 
-       trackpad@15 {
+       trackpad: trackpad@15 {
                compatible = "elan,ekth3000";
                reg = <0x15>;
                interrupts-extended = <&pio 11 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&trackpad_pin>;
                vcc-supply = <&pp3300_s3>;
                wakeup-source;
        };
index 8c485c3ced2c818af3d0ea64c92ba72590f1d7ce..163960f58db5c3224d58d84ad80c7c961a4d43e2 100644 (file)
        trackpad@2c {
                compatible = "hid-over-i2c";
                reg = <0x2c>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&trackpad_pins>;
                hid-descr-addr = <0x20>;
                interrupts-extended = <&pio 15 IRQ_TYPE_LEVEL_LOW>;
                wakeup-source;
+               status = "fail-needs-probe";
        };
 };
+
+&trackpad {
+       status = "fail-needs-probe";
+};
index dd0d07fbe61a8499e9440c0dfa26803e3f84aed9..0b4664f044a159e389da7db05725ca8729fb4fa7 100644 (file)
                #size-cells = <2>;
                ranges;
 
+               afe_dma_mem: audio-dma-pool {
+                       compatible = "shared-dma-pool";
+                       size = <0 0x100000>;
+                       alignment = <0 0x10>;
+                       no-map;
+               };
+
                scp_mem_reserved: scp@50000000 {
                        compatible = "shared-dma-pool";
                        reg = <0 0x50000000 0 0x2900000>;
        };
 };
 
+&afe {
+       memory-region = <&afe_dma_mem>;
+};
+
 &dsi0 {
        status = "okay";
 };
        clock-frequency = <400000>;
        clock-stretch-ns = <12600>;
        pinctrl-names = "default";
-       pinctrl-0 = <&i2c2_pins>, <&trackpad_pins>;
+       pinctrl-0 = <&i2c2_pins>;
 
-       trackpad@15 {
+       trackpad: trackpad@15 {
                compatible = "elan,ekth3000";
                reg = <0x15>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&trackpad_pins>;
                interrupts-extended = <&pio 15 IRQ_TYPE_LEVEL_LOW>;
                vcc-supply = <&pp3300_u>;
                wakeup-source;
index dd065b1bf94a3d6893a82d4d998c138bf6b76526..8877953ce292b686eca3f7c030cd48bcc87a6917 100644 (file)
                        status = "disabled";
                };
 
+               ufshci: ufshci@11270000 {
+                       compatible = "mediatek,mt8195-ufshci";
+                       reg = <0 0x11270000 0 0x2300>;
+                       interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH 0>;
+                       phys = <&ufsphy>;
+                       clocks = <&infracfg_ao CLK_INFRA_AO_AES_UFSFDE>,
+                                <&infracfg_ao CLK_INFRA_AO_AES>,
+                                <&infracfg_ao CLK_INFRA_AO_UFS_TICK>,
+                                <&infracfg_ao CLK_INFRA_AO_UNIPRO_SYS>,
+                                <&infracfg_ao CLK_INFRA_AO_UNIPRO_TICK>,
+                                <&infracfg_ao CLK_INFRA_AO_UFS_MP_SAP_B>,
+                                <&infracfg_ao CLK_INFRA_AO_UFS_TX_SYMBOL>,
+                                <&infracfg_ao CLK_INFRA_AO_PERI_UFS_MEM_SUB>;
+                       clock-names = "ufs", "ufs_aes", "ufs_tick",
+                                       "unipro_sysclk", "unipro_tick",
+                                       "unipro_mp_bclk", "ufs_tx_symbol",
+                                       "ufs_mem_sub";
+                       freq-table-hz = <0 0>, <0 0>, <0 0>,
+                                       <0 0>, <0 0>, <0 0>,
+                                       <0 0>, <0 0>;
+
+                       mediatek,ufs-disable-mcq;
+                       status = "disabled";
+               };
+
                lvts_mcu: thermal-sensor@11278000 {
                        compatible = "mediatek,mt8195-lvts-mcu";
                        reg = <0 0x11278000 0 0x1000>;
index cf1a3759451ff899ce9e63e5a00f192fb483f6e5..7ac8b8d0349455922a73f35db607b2b27cad23d7 100644 (file)
                                <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
 };
 
+/*
+ * Please note that overriding compatibles is a discouraged practice and is a
+ * clear indication of nodes not being, well, compatible!
+ *
+ * This is a special case, where the GPU is the same as MT8188, but with one
+ * of the cores fused out in this lower-binned SoC.
+ */
+&gpu {
+       compatible = "mediatek,mt8370-mali", "arm,mali-valhall-jm";
+
+       power-domains = <&spm MT8188_POWER_DOMAIN_MFG2>,
+                       <&spm MT8188_POWER_DOMAIN_MFG3>;
+
+       power-domain-names = "core0", "core1";
+};
+
 &ppi_cluster0 {
        affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
 };
index eaf45d42cd347a2bd2db8af9ecef8f83f70c9183..a2cdecd2b9034e2f295d817e846d6ed1845e686a 100644 (file)
                        linux,keycodes = <KEY_POWER>;
                        wakeup-source;
                };
+
+               home {
+                       linux,keycodes = <KEY_HOME>;
+               };
        };
 };
 
index be5e5f339e811728e91b1ffec45ada25f9b0208b..cf8cd37f570845a836a97564fd64a6a9a0e4e4d0 100644 (file)
                        reg = <0 0x54600000 0x0 0x200000>;
                };
 
-               snd_dma_mem: memory@60000000 {
+               adsp_mem: memory@60000000 {
                        compatible = "shared-dma-pool";
-                       reg = <0 0x60000000 0 0x1100000>;
+                       reg = <0 0x60000000 0 0xf00000>;
+                       no-map;
+               };
+
+               afe_dma_mem: memory@60f00000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x60f00000 0 0x100000>;
+                       no-map;
+               };
+
+               adsp_dma_mem: memory@61000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x61000000 0 0x100000>;
                        no-map;
                };
 
        };
 };
 
+&adsp {
+       memory-region = <&adsp_dma_mem>, <&adsp_mem>;
+       status = "okay";
+};
+
+&afe {
+       memory-region = <&afe_dma_mem>;
+       status = "okay";
+};
+
 &disp_pwm0 {
        pinctrl-names = "default";
        pinctrl-0 = <&disp_pwm0_pins>;
 
 &pmic {
        interrupts-extended = <&pio 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;
+               };
+
+               home {
+                       linux,keycodes = <KEY_HOME>;
+               };
+       };
 };
 
 &scp {
        status = "okay";
 };
 
+&sound {
+       compatible = "mediatek,mt8195_mt6359";
+       model = "mt8395-evk";
+       pinctrl-names = "default";
+       pinctrl-0 = <&audio_default_pins>;
+       audio-routing =
+               "Headphone", "Headphone L",
+               "Headphone", "Headphone R";
+       mediatek,adsp = <&adsp>;
+       status = "okay";
+
+       headphone-dai-link {
+               link-name = "DL_SRC_BE";
+
+               codec {
+                       sound-dai = <&pmic 0>;
+               };
+       };
+};
+
 &spi1 {
        pinctrl-0 = <&spi1_pins>;
        pinctrl-names = "default";
index fead4dde590dfff3f7d28a47c2b883462a6e51eb..acd3137d2464aef4224df62fe840ff6fe4db37ca 100644 (file)
                        #interrupt-cells = <3>;
                        interrupt-controller;
                        #address-cells = <0>;
-                       ppi-partitions {
-                               ppi_cluster0: interrupt-partition-0 {
-                                       affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
-                               };
-                       };
                };
        };
 
diff --git a/src/arm64/nvidia/tegra264-p3834-0008.dtsi b/src/arm64/nvidia/tegra264-p3834-0008.dtsi
new file mode 100644 (file)
index 0000000..94ace67
--- /dev/null
@@ -0,0 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+
+#include "tegra264-p3834.dtsi"
+
+/ {
+       compatible = "nvidia,p3834-0008", "nvidia,tegra264";
+};
diff --git a/src/arm64/nvidia/tegra264-p3834.dtsi b/src/arm64/nvidia/tegra264-p3834.dtsi
new file mode 100644 (file)
index 0000000..06795c8
--- /dev/null
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+
+#include "tegra264.dtsi"
+
+/ {
+       compatible = "nvidia,p3834", "nvidia,tegra264";
+
+       aliases {
+       };
+
+       bus@0 {
+               serial@c4e0000 {
+                       status = "okay";
+               };
+
+               serial@c5a0000 {
+                       status = "okay";
+               };
+       };
+
+       bus@8100000000 {
+               iommu@5000000 {
+                       status = "okay";
+               };
+
+               iommu@6000000 {
+                       status = "okay";
+               };
+       };
+};
diff --git a/src/arm64/nvidia/tegra264-p3971-0089+p3834-0008.dts b/src/arm64/nvidia/tegra264-p3971-0089+p3834-0008.dts
new file mode 100644 (file)
index 0000000..3a6f4b7
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+/dts-v1/;
+
+// module files must be included first
+#include "tegra264-p3834-0008.dtsi"
+#include "tegra264-p3971-0089+p3834.dtsi"
+
+/ {
+       model = "NVIDIA P3971-0089+P3834-0008 Engineering Reference Platform";
+       compatible = "nvidia,p3971-0089+p3834-0008", "nvidia,p3834-0008", "nvidia,tegra264";
+};
diff --git a/src/arm64/nvidia/tegra264-p3971-0089+p3834.dtsi b/src/arm64/nvidia/tegra264-p3971-0089+p3834.dtsi
new file mode 100644 (file)
index 0000000..46cfa8f
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+
+#include "tegra264-p3971-0089.dtsi"
+
+/ {
+       aliases {
+               serial0 = &{/bus@0/serial@c4e0000};
+               serial1 = &{/bus@0/serial@c5a0000};
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
diff --git a/src/arm64/nvidia/tegra264-p3971-0089.dtsi b/src/arm64/nvidia/tegra264-p3971-0089.dtsi
new file mode 100644 (file)
index 0000000..e8576cf
--- /dev/null
@@ -0,0 +1,3 @@
+// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+
+#include "tegra264-p3971.dtsi"
diff --git a/src/arm64/nvidia/tegra264-p3971.dtsi b/src/arm64/nvidia/tegra264-p3971.dtsi
new file mode 100644 (file)
index 0000000..6b6259b
--- /dev/null
@@ -0,0 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+
+/ {
+};
diff --git a/src/arm64/nvidia/tegra264.dtsi b/src/arm64/nvidia/tegra264.dtsi
new file mode 100644 (file)
index 0000000..e02659e
--- /dev/null
@@ -0,0 +1,412 @@
+// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+
+#include <dt-bindings/clock/nvidia,tegra264.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/mailbox/tegra186-hsp.h>
+#include <dt-bindings/memory/nvidia,tegra264.h>
+#include <dt-bindings/reset/nvidia,tegra264.h>
+
+/ {
+       compatible = "nvidia,tegra264";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               shmem_bpmp: shmem@86070000 {
+                       compatible = "nvidia,tegra264-bpmp-shmem";
+                       reg = <0x0 0x86070000 0x0 0x2000>;
+                       no-map;
+               };
+       };
+
+       /* SYSTEM MMIO */
+       bus@0 {
+               compatible = "simple-bus";
+
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               ranges = <0x00 0x00000000 0x00 0x00000000 0x01 0x00000000>;
+
+               misc@100000 {
+                       compatible = "nvidia,tegra234-misc";
+                       reg = <0x0 0x00100000 0x0 0x0f000>,
+                             <0x0 0x0c140000 0x0 0x10000>;
+               };
+
+               timer@8000000 {
+                       compatible = "nvidia,tegra234-timer";
+                       reg = <0x0 0x08000000 0x0 0x140000>;
+                       interrupts = <GIC_SPI 773 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 774 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 775 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 776 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               gpcdma: dma-controller@8400000 {
+                       compatible = "nvidia,tegra264-gpcdma", "nvidia,tegra186-gpcdma";
+                       reg = <0x0 0x08400000 0x0 0x210000>;
+                       interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 588 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 589 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 591 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 594 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 595 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 596 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 598 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 599 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 600 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 609 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 610 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 611 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 612 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 613 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 614 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 615 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       iommus = <&smmu1 0x00000800>;
+                       dma-coherent;
+                       dma-channel-mask = <0xfffffffe>;
+                       status = "disabled";
+               };
+
+               hsp_top: hsp@8800000 {
+                       compatible = "nvidia,tegra264-hsp";
+                       reg = <0x0 0x08800000 0x0 0xd0000>;
+                       interrupts = <GIC_SPI 620 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 622 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 623 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 624 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 625 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 626 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 637 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 638 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 639 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "doorbell", "shared0", "shared1", "shared2",
+                                         "shared3", "shared4", "shared5", "shared6",
+                                         "shared7";
+                       #mbox-cells = <2>;
+               };
+
+               rtc: rtc@c2c0000 {
+                       compatible = "nvidia,tegra264-rtc", "nvidia,tegra20-rtc";
+                       reg = <0x0 0x0c2c0000 0x0 0x10000>;
+                       interrupt-parent = <&pmc>;
+                       interrupts = <65 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&bpmp TEGRA264_CLK_CLK_S>;
+                       clock-names = "rtc";
+                       status = "disabled";
+               };
+
+               serial@c4e0000 {
+                       compatible = "nvidia,tegra264-utc";
+                       reg = <0x0 0x0c4e0000 0x0 0x8000>,
+                             <0x0 0x0c4e8000 0x0 0x8000>;
+                       reg-names = "tx", "rx";
+                       interrupts = <GIC_SPI 515 IRQ_TYPE_LEVEL_HIGH>;
+                       rx-threshold = <4>;
+                       tx-threshold = <4>;
+                       status = "disabled";
+               };
+
+               serial@c5a0000 {
+                       compatible = "nvidia,tegra264-utc";
+                       reg = <0x0 0x0c5a0000 0x0 0x8000>,
+                             <0x0 0x0c5a8000 0x0 0x8000>;
+                       reg-names = "tx", "rx";
+                       interrupts = <GIC_SPI 527 IRQ_TYPE_LEVEL_HIGH>;
+                       rx-threshold = <4>;
+                       tx-threshold = <4>;
+                       status = "disabled";
+               };
+
+               uart0: serial@c5f0000 {
+                       compatible = "arm,sbsa-uart";
+                       reg = <0x0 0x0c5f0000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 514 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               pmc: pmc@c800000 {
+                       compatible = "nvidia,tegra264-pmc";
+                       reg = <0x0 0x0c800000 0x0 0x100000>,
+                             <0x0 0x0c990000 0x0 0x10000>,
+                             <0x0 0x0ca00000 0x0 0x10000>,
+                             <0x0 0x0c980000 0x0 0x10000>,
+                             <0x0 0x0c9c0000 0x0 0x40000>;
+                       reg-names = "pmc", "wake", "aotag", "scratch", "misc";
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+               };
+       };
+
+       /* TOP_MMIO */
+       bus@8100000000 {
+               compatible = "simple-bus";
+
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               ranges = <0x00 0x00000000 0x81 0x00000000 0x01 0x00000000>, /* MMIO */
+                        <0x01 0x00000000 0x00 0x20000000 0x00 0x40000000>, /* non-prefetchable memory (32-bit) */
+                        <0x02 0x00000000 0xd0 0x00000000 0x08 0x80000000>; /* ECAM, prefetchable memory, I/O */
+
+               smmu1: iommu@5000000 {
+                       compatible = "arm,smmu-v3";
+                       reg = <0x00 0x5000000 0x0 0x200000>;
+                       interrupts = <GIC_SPI 12 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 13 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "eventq", "gerror";
+                       status = "disabled";
+
+                       #iommu-cells = <1>;
+                       dma-coherent;
+               };
+
+               smmu2: iommu@6000000 {
+                       compatible = "arm,smmu-v3";
+                       reg = <0x00 0x6000000 0x0 0x200000>;
+                       interrupts = <GIC_SPI 1 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 2 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "eventq", "gerror";
+                       status = "disabled";
+
+                       #iommu-cells = <1>;
+                       dma-coherent;
+               };
+
+               mc: memory-controller@8020000 {
+                       compatible = "nvidia,tegra264-mc";
+                       reg = <0x00 0x8020000 0x0 0x20000>, /* MC broadcast */
+                             <0x00 0x8040000 0x0 0x20000>, /* MC  0 */
+                             <0x00 0x8060000 0x0 0x20000>, /* MC  1 */
+                             <0x00 0x8080000 0x0 0x20000>, /* MC  2 */
+                             <0x00 0x80a0000 0x0 0x20000>, /* MC  3 */
+                             <0x00 0x80c0000 0x0 0x20000>, /* MC  4 */
+                             <0x00 0x80e0000 0x0 0x20000>, /* MC  5 */
+                             <0x00 0x8100000 0x0 0x20000>, /* MC  6 */
+                             <0x00 0x8120000 0x0 0x20000>, /* MC  7 */
+                             <0x00 0x8140000 0x0 0x20000>, /* MC  8 */
+                             <0x00 0x8160000 0x0 0x20000>, /* MC  9 */
+                             <0x00 0x8180000 0x0 0x20000>, /* MC 10 */
+                             <0x00 0x81a0000 0x0 0x20000>, /* MC 11 */
+                             <0x00 0x81c0000 0x0 0x20000>, /* MC 12 */
+                             <0x00 0x81e0000 0x0 0x20000>, /* MC 13 */
+                             <0x00 0x8200000 0x0 0x20000>, /* MC 14 */
+                             <0x00 0x8220000 0x0 0x20000>; /* MC 15 */
+                       reg-names = "broadcast", "ch0", "ch1", "ch2", "ch3",
+                                   "ch4", "ch5", "ch6", "ch7", "ch8", "ch9",
+                                   "ch10", "ch11", "ch12", "ch13", "ch14",
+                                   "ch15";
+                       interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 694 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 903 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>;
+                       #interconnect-cells = <1>;
+
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+
+                       /* limit the DMA range for memory clients to [39:0] */
+                       dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
+
+                       emc: external-memory-controller@8800000 {
+                               compatible = "nvidia,tegra264-emc";
+                               reg = <0x00 0x8800000 0x0 0x20000>,
+                                     <0x00 0x8890000 0x0 0x20000>;
+                               interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&bpmp TEGRA264_CLK_EMC>;
+                               clock-names = "emc";
+
+                               #interconnect-cells = <0>;
+                               nvidia,bpmp = <&bpmp>;
+                       };
+               };
+
+               smmu0: iommu@a000000 {
+                       compatible = "arm,smmu-v3";
+                       reg = <0x00 0xa000000 0x0 0x200000>;
+                       interrupts = <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "eventq", "gerror";
+                       status = "disabled";
+
+                       #iommu-cells = <1>;
+                       dma-coherent;
+               };
+
+               smmu4: iommu@b000000 {
+                       compatible = "arm,smmu-v3";
+                       reg = <0x00 0xb000000 0x0 0x200000>;
+                       interrupts = <GIC_SPI 30 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 31 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "eventq", "gerror";
+                       status = "disabled";
+
+                       #iommu-cells = <1>;
+                       dma-coherent;
+               };
+
+               gic: interrupt-controller@46000000 {
+                       compatible = "arm,gic-v3";
+                       reg = <0x00 0x46000000 0x0 0x010000>, /* GICD */
+                             <0x00 0x46080000 0x0 0x400000>; /* GICR */
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
+
+                       redistributor-stride = <0x0 0x40000>;
+                       #redistributor-regions = <1>;
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+
+                       ranges = <0x0 0x0 0x00 0x46000000 0x0 0x1000000>;
+
+                       its: msi-controller@40000 {
+                               compatible = "arm,gic-v3-its";
+                               reg = <0x0 0x40000 0x0 0x40000>;
+                               #msi-cells = <1>;
+                               msi-controller;
+                       };
+               };
+       };
+
+       /* DISP_USB MMIO */
+       bus@8800000000 {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               ranges = <0x00 0x00000000 0x88 0x00000000 0x01 0x00000000>;
+
+               smmu3: iommu@6000000 {
+                       compatible = "arm,smmu-v3";
+                       reg = <0x00 0x6000000 0x0 0x200000>;
+                       interrupts = <GIC_SPI 225 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 226 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "eventq", "gerror";
+                       status = "disabled";
+
+                       #iommu-cells = <1>;
+                       dma-coherent;
+               };
+       };
+
+       /* UPHY MMIO */
+       bus@a800000000 {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               ranges = <0x00 0x00000000 0xa8 0x00000000 0x40 0x00000000>, /* MMIO, ECAM, prefetchable memory, I/O */
+                        <0x80 0x00000000 0x00 0x20000000 0x00 0x40000000>; /* non-prefetchable memory (32-bit) */
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "arm,armv8";
+                       device_type = "cpu";
+                       reg = <0x00000>;
+                       status = "okay";
+
+                       enable-method = "psci";
+
+                       i-cache-size = <65536>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <65536>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+               };
+
+               cpu1: cpu@1 {
+                       compatible = "arm,armv8";
+                       device_type = "cpu";
+                       reg = <0x10000>;
+                       status = "okay";
+
+                       enable-method = "psci";
+
+                       i-cache-size = <65536>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <65536>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+               };
+       };
+
+       bpmp: bpmp {
+               compatible = "nvidia,tegra264-bpmp", "nvidia,tegra186-bpmp";
+               mboxes = <&hsp_top TEGRA_HSP_MBOX_TYPE_DB
+                                  TEGRA_HSP_DB_MASTER_BPMP>;
+               memory-region = <&shmem_bpmp>;
+               #clock-cells = <1>;
+               #reset-cells = <1>;
+               #power-domain-cells = <1>;
+
+               i2c {
+                       compatible = "nvidia,tegra186-bpmp-i2c";
+                       nvidia,bpmp-bus-id = <5>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               thermal {
+                       compatible = "nvidia,tegra186-bpmp-thermal";
+                       #thermal-sensor-cells = <1>;
+               };
+       };
+
+       pmu {
+               compatible = "arm,armv8-pmuv3";
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
+               status = "okay";
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               status = "okay";
+               method = "smc";
+       };
+
+       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>,
+                            <GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
+               status = "okay";
+       };
+};
similarity index 89%
rename from src/arm64/qcom/apq8016-sbc-d3-camera-mezzanine.dts
rename to src/arm64/qcom/apq8016-sbc-d3-camera-mezzanine.dtso
index f9cbf8c1d6891108e208f4626aa7667c74ee413b..d739ece6b44ff25960f92088a4023ef794215712 100644 (file)
@@ -5,10 +5,12 @@
  */
 
 /dts-v1/;
+/plugin/;
 
-#include "apq8016-sbc.dts"
+#include <dt-bindings/clock/qcom,gcc-msm8916.h>
+#include <dt-bindings/gpio/gpio.h>
 
-/ {
+&{/} {
        camera_vdddo_1v8: regulator-camera-vdddo {
                compatible = "regulator-fixed";
                regulator-name = "camera_vdddo";
@@ -38,6 +40,9 @@
        status = "okay";
 
        ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
                port@0 {
                        reg = <0>;
                        csiphy0_ep: endpoint {
@@ -53,6 +58,9 @@
 };
 
 &cci_i2c0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
        camera@3b {
                compatible = "ovti,ov5640";
                reg = <0x3b>;
index 7f0faf26b7079596e0f8451cc3d05a76d231c2b9..bfe59b0208415902c69fd0c0c7565d97997d4207 100644 (file)
                        ranges = <0x81000000 0x0 0x00000000 0x0 0x20200000 0x0 0x10000>,
                                 <0x82000000 0x0 0x20220000 0x0 0x20220000 0x0 0xfde0000>;
 
-                       interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "msi";
+                       interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
 
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
index 78e1992b749573ea899e4d639eedf437cab19d59..fffb47ec244899cf45984adbe8c4f9820bef5c5f 100644 (file)
                        ranges = <0x81000000 0x0 0x00000000 0x10200000 0x0 0x10000>,   /* I/O */
                                 <0x82000000 0x0 0x10220000 0x10220000 0x0 0xfde0000>; /* MEM */
 
-                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "msi";
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 0 142
                        ranges = <0x81000000 0x0 0x00000000 0x20200000 0x0 0x10000>,   /* I/O */
                                 <0x82000000 0x0 0x20220000 0x20220000 0x0 0xfde0000>; /* MEM */
 
-                       interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "msi";
+                       interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 0 75
diff --git a/src/arm64/qcom/msm8976-longcheer-l9360.dts b/src/arm64/qcom/msm8976-longcheer-l9360.dts
new file mode 100644 (file)
index 0000000..e524d58
--- /dev/null
@@ -0,0 +1,490 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025, André Apitzsch <git@apitzsch.eu>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+
+#include "msm8976.dtsi"
+#include "pm8004.dtsi"
+#include "pm8950.dtsi"
+
+/ {
+       model = "BQ Aquaris X5 Plus (Longcheer L9360)";
+       compatible = "longcheer,l9360", "qcom,msm8976";
+       chassis-type = "handset";
+
+       aliases {
+               mmc0 = &sdhc_1; /* SDC1 eMMC slot */
+               mmc1 = &sdhc_2; /* SDC2 SD card slot */
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               framebuffer0: framebuffer@83200000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0x0 0x83200000 0x0 (1080 * 1920 * 3)>;
+                       width = <1080>;
+                       height = <1920>;
+                       stride = <(1080 * 3)>;
+                       format = "r8g8b8";
+
+                       power-domains = <&gcc MDSS_GDSC>;
+
+                       clocks = <&gcc GCC_MDSS_AHB_CLK>,
+                                <&gcc GCC_MDSS_AXI_CLK>,
+                                <&gcc GCC_MDSS_VSYNC_CLK>,
+                                <&gcc GCC_MDSS_MDP_CLK>,
+                                <&gcc GCC_MDSS_BYTE0_CLK>,
+                                <&gcc GCC_MDSS_PCLK0_CLK>,
+                                <&gcc GCC_MDSS_ESC0_CLK>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&hall_sensor_default>, <&volume_up_default>;
+               pinctrl-names = "default";
+
+               event-hall-sensor {
+                       label = "Hall Effect Sensor";
+                       gpios = <&tlmm 107 GPIO_ACTIVE_HIGH>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       linux,can-disable;
+                       wakeup-source;
+               };
+
+               key-volume-up {
+                       label = "Volume Up";
+                       gpios = <&tlmm 113 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       gpios = <&tlmm 101 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_WHITE>;
+                       default-state = "off";
+                       function = LED_FUNCTION_KBD_BACKLIGHT;
+
+                       pinctrl-0 = <&button_backlight_default>;
+                       pinctrl-names = "default";
+               };
+       };
+
+       reg_ts_vdd: regulator-vdd-ts {
+               compatible = "regulator-fixed";
+               regulator-name = "regulator-vdd-ts";
+
+               gpio = <&tlmm 33 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reserved-memory {
+               framebuffer@83000000 {
+                       reg = <0x0 0x83000000 0x0 0x2800000>;
+                       no-map;
+               };
+       };
+
+       vph_pwr: regulator-vph-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "vph-pwr";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+};
+
+&blsp1_i2c2 {
+       status = "okay";
+
+       led-controller@30 {
+               compatible = "kinetic,ktd2026";
+               reg = <0x30>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               multi-led {
+                       color = <LED_COLOR_ID_RGB>;
+                       function = LED_FUNCTION_STATUS;
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       led@0 {
+                               reg = <0>;
+                               color = <LED_COLOR_ID_RED>;
+                       };
+
+                       led@1 {
+                               reg = <1>;
+                               color = <LED_COLOR_ID_GREEN>;
+                       };
+
+                       led@2 {
+                               reg = <2>;
+                               color = <LED_COLOR_ID_BLUE>;
+                       };
+               };
+       };
+};
+
+&blsp1_i2c4 {
+       status = "okay";
+
+       nfc@28 {
+               compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
+               reg = <0x28>;
+
+               interrupts-extended = <&tlmm 140 IRQ_TYPE_EDGE_RISING>;
+
+               enable-gpios = <&tlmm 122 GPIO_ACTIVE_HIGH>;
+               firmware-gpios = <&tlmm 109 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&nfc_default>;
+               pinctrl-1 = <&nfc_sleep>;
+               pinctrl-names = "default", "sleep";
+       };
+};
+
+&blsp2_i2c2 {
+       status = "okay";
+
+       touchscreen@20 {
+               reg = <0x20>;
+               compatible = "syna,rmi4-i2c";
+
+               interrupts-extended = <&tlmm 65 IRQ_TYPE_EDGE_FALLING>;
+
+               pinctrl-0 = <&ts_int_default>, <&ts_reset_default>;
+               pinctrl-1 = <&ts_int_sleep>, <&ts_reset_sleep>;
+               pinctrl-names = "default", "sleep";
+
+               vdd-supply = <&pm8950_l6>;
+               vio-supply = <&reg_ts_vdd>;
+
+               reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
+
+               syna,reset-delay-ms = <200>;
+               syna,startup-delay-ms = <200>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               rmi4-f01@1 {
+                       reg = <0x1>;
+                       syna,nosleep-mode = <1>;
+               };
+
+               rmi4-f12@12 {
+                       reg = <0x12>;
+                       syna,sensor-type = <1>;
+               };
+       };
+};
+
+&blsp2_uart2 {
+       status = "okay";
+};
+
+&gcc {
+       vdd_gfx-supply = <&pm8004_s5>;
+};
+
+&pm8004_spmi_regulators {
+       vdd_s2-supply = <&vph_pwr>;
+       vdd_s5-supply = <&vph_pwr>;
+
+       /* Cluster 1 supply */
+       pm8004_s2: s2 {
+               /* regulator-min-microvolt = <500000>; */
+               /* Set .95V to prevent unstabilities until CPR for this SoC is done */
+               regulator-min-microvolt = <950000>;
+               regulator-max-microvolt = <1165000>;
+               regulator-name = "vdd_apc1";
+               /* Set always on until the CPU PLL is done */
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       pm8004_s5: s5 {
+               regulator-min-microvolt = <950000>;
+               regulator-max-microvolt = <1165000>;
+               regulator-enable-ramp-delay = <500>;
+               regulator-name = "vdd_gfx";
+               /* Hack this on until the gpu driver is ready for it */
+               regulator-always-on;
+       };
+};
+
+&pm8950_resin {
+       linux,code = <KEY_VOLUMEDOWN>;
+       status = "okay";
+};
+
+&pm8950_spmi_regulators {
+       vdd_s5-supply = <&vph_pwr>;
+
+       /* Cluster 0 supply */
+       pm8950_spmi_s5: s5 {
+               /* Set .95V to prevent unstabilities until CPR for this SoC is done */
+               /* regulator-min-microvolt = <500000>; */
+               regulator-min-microvolt = <950000>;
+               regulator-max-microvolt = <1165000>;
+               regulator-name = "vdd_apc0";
+               /* Set always on until the CPU PLL is done */
+               regulator-always-on;
+               regulator-boot-on;
+       };
+};
+
+&rpm_requests {
+       pm8950_regulators: regulators {
+               compatible = "qcom,rpm-pm8950-regulators";
+
+               vdd_s1-supply = <&vph_pwr>;
+               vdd_s2-supply = <&vph_pwr>;
+               vdd_s3-supply = <&vph_pwr>;
+               vdd_s4-supply = <&vph_pwr>;
+               vdd_s6-supply = <&vph_pwr>;
+               vdd_l1_l19-supply = <&pm8950_s3>;
+               vdd_l2_l23-supply = <&pm8950_s3>;
+               vdd_l3-supply = <&pm8950_s3>;
+               vdd_l5_l6_l7_l16-supply = <&pm8950_s4>;
+               vdd_l8_l11_l12_l17_l22-supply = <&vph_pwr>;
+
+               pm8950_s1: s1 {
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1162500>;
+               };
+
+               pm8950_s3: s3 {
+                       regulator-min-microvolt = <1325000>;
+                       regulator-max-microvolt = <1325000>;
+               };
+
+               pm8950_s4: s4 {
+                       regulator-min-microvolt = <2050000>;
+                       regulator-max-microvolt = <2050000>;
+               };
+
+               pm8950_l1: l1 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+
+               pm8950_l2: l2 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+
+               pm8950_l3: l3 {
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1100000>;
+               };
+
+               pm8950_l5: l5 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               pm8950_l6: l6 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               pm8950_l7: l7 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               pm8950_l8: l8 {
+                       regulator-min-microvolt = <2900000>;
+                       regulator-max-microvolt = <2900000>;
+               };
+
+               pm8950_l9: l9 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3300000>;
+               };
+
+               pm8950_l10: l10 {
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+               };
+
+               pm8950_l11: l11 {
+                       regulator-min-microvolt = <2950000>;
+                       regulator-max-microvolt = <2950000>;
+               };
+
+               pm8950_l12: l12 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2950000>;
+               };
+
+               pm8950_l13: l13 {
+                       regulator-min-microvolt = <3075000>;
+                       regulator-max-microvolt = <3075000>;
+               };
+
+               pm8950_l14: l14 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <3300000>;
+               };
+
+               pm8950_l15: l15 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <3300000>;
+               };
+
+               pm8950_l16: l16 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               pm8950_l17: l17 {
+                       regulator-min-microvolt = <2850000>;
+                       regulator-max-microvolt = <2850000>;
+               };
+
+               pm8950_l19: l19 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1350000>;
+               };
+
+               pm8950_l22: l22 {
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+               };
+
+               pm8950_l23: l23 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+       };
+};
+
+&sdhc_1 {
+       bus-width = <8>;
+       non-removable;
+       vmmc-supply = <&pm8950_l8>;
+       vqmmc-supply = <&pm8950_l5>;
+       status = "okay";
+};
+
+&sdhc_2 {
+       bus-width = <4>;
+       cd-gpios = <&tlmm 100 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&pm8950_l11>;
+       vqmmc-supply = <&pm8950_l12>;
+
+       pinctrl-0 = <&sdc2_default>, <&sdc2_cd_default>;
+       pinctrl-1 = <&sdc2_sleep>, <&sdc2_cd_sleep>;
+       pinctrl-names = "default", "sleep";
+
+       status = "okay";
+};
+
+&tlmm {
+       gpio-reserved-ranges = <0 4>;
+
+       button_backlight_default: button-backlight-default-state {
+               pins = "gpio101";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       hall_sensor_default: hall-sensor-default-state {
+               pins = "gpio107";
+               function = "gpio";
+               drive-strength = <6>;
+               bias-pull-up;
+       };
+
+       nfc_default: nfc-default-state {
+               pins = "gpio122", "gpio140";
+               function = "gpio";
+               drive-strength = <6>;
+               bias-pull-up;
+       };
+
+       nfc_sleep: nfc-sleep-state {
+               int-pins {
+                       pins = "gpio140";
+                       function = "gpio";
+                       drive-strength = <6>;
+                       bias-pull-up;
+               };
+               ven-pins {
+                       pins = "gpio122";
+                       function = "gpio";
+                       drive-strength = <6>;
+                       bias-disable;
+               };
+       };
+
+       sdc2_cd_default: sdc2-cd-default-state {
+               pins = "gpio100";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       sdc2_cd_sleep: sdc2-cd-sleep-state {
+               pins = "gpio100";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       ts_int_default: ts-int-state {
+               pins = "gpio65";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       ts_int_sleep: ts-int-state {
+               pins = "gpio65";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       ts_reset_default: ts-reset-state {
+               pins = "gpio64";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-up;
+       };
+
+       ts_reset_sleep: ts-sleep-state {
+               pins = "gpio64";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       volume_up_default: volume-up-default-state {
+               pins = "gpio113";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+};
+
+&xo_board {
+       clock-frequency = <19200000>;
+};
index e2ac2fd6882fcf47e846a92d45e0fcb9beba633a..f9962512f243d6c1af4931787f4602554c63bb39 100644 (file)
                                bias-disable;
                        };
 
+                       sdc2_default: sdc2-default-state {
+                               clk-pins {
+                                       pins = "sdc2_clk";
+                                       bias-disable;
+                                       drive-strength = <16>;
+                               };
+                               cmd-pins {
+                                       pins = "sdc2_cmd";
+                                       bias-pull-up;
+                                       drive-strength = <10>;
+                               };
+                               data-pins {
+                                       pins = "sdc2_data";
+                                       bias-pull-up;
+                                       drive-strength = <10>;
+                               };
+                       };
+
+                       sdc2_sleep: sdc2-sleep-state {
+                               clk-pins {
+                                       pins = "sdc2_clk";
+                                       bias-disable;
+                                       drive-strength = <2>;
+                               };
+                               cmd-pins {
+                                       pins = "sdc2_cmd";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
+                               data-pins {
+                                       pins = "sdc2_data";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
+                       };
+
                        wcss_wlan_default: wcss-wlan-default-state  {
                                wcss-wlan2-pins {
                                        pins = "gpio40";
                        clock-names = "bam_clk";
                        #dma-cells = <1>;
                        qcom,ee = <0>;
+                       qcom,controlled-remotely;
                };
 
                blsp1_uart1: serial@78af000 {
                        clock-names = "bam_clk";
                        #dma-cells = <1>;
                        qcom,ee = <0>;
+                       qcom,controlled-remotely;
                };
 
                blsp2_uart2: serial@7af0000 {
index ede851fbf628428f5740ca8add65ffc05360cc62..f91605de49095820b811ac5a81cb43eaa136b9f1 100644 (file)
 
                                device_type = "pci";
 
-                               interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-names = "msi";
+                               interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 411 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 412 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "msi0",
+                                                 "msi1",
+                                                 "msi2",
+                                                 "msi3",
+                                                 "msi4",
+                                                 "msi5",
+                                                 "msi6",
+                                                 "msi7";
                                #interrupt-cells = <1>;
                                interrupt-map-mask = <0 0 0 0x7>;
                                interrupt-map = <0 0 0 1 &intc 0 244 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
 
                                device_type = "pci";
 
-                               interrupts = <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-names = "msi";
+                               interrupts = <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 414 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 415 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 416 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 417 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 420 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "msi0",
+                                                 "msi1",
+                                                 "msi2",
+                                                 "msi3",
+                                                 "msi4",
+                                                 "msi5",
+                                                 "msi6",
+                                                 "msi7";
                                #interrupt-cells = <1>;
                                interrupt-map-mask = <0 0 0 0x7>;
                                interrupt-map = <0 0 0 1 &intc 0 272 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
 
                                device_type = "pci";
 
-                               interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-names = "msi";
+                               interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "msi0",
+                                                 "msi1",
+                                                 "msi2",
+                                                 "msi3",
+                                                 "msi4",
+                                                 "msi5",
+                                                 "msi6",
+                                                 "msi7";
                                #interrupt-cells = <1>;
                                interrupt-map-mask = <0 0 0 0x7>;
                                interrupt-map = <0 0 0 1 &intc 0 142 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
index 58cee37cb8eecbdd43a474d548dcae1606aba6c7..0b0a9379cb05b01ebb17cef9fe7d22d56790efd3 100644 (file)
                                 <0x02000000 0x0 0x1b300000 0x1b300000 0x0 0xd00000>;
 
                        #interrupt-cells = <1>;
-                       interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "msi";
+                       interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 411 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 412 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 0 135 IRQ_TYPE_LEVEL_HIGH>,
                                        <0 0 0 2 &intc 0 0 136 IRQ_TYPE_LEVEL_HIGH>,
index f49ac1c1f8a3ee652d70fab1bb1ad03a5eec7c3c..fa24b77a31a7504020390522fabb0b783d897366 100644 (file)
                        #iommu-cells = <2>;
                };
 
+               camss: camss@5c6e000 {
+                       compatible = "qcom,qcm2290-camss";
+
+                       reg = <0x0 0x5c6e000 0x0 0x1000>,
+                             <0x0 0x5c75000 0x0 0x1000>,
+                             <0x0 0x5c52000 0x0 0x1000>,
+                             <0x0 0x5c53000 0x0 0x1000>,
+                             <0x0 0x5c66000 0x0 0x400>,
+                             <0x0 0x5c68000 0x0 0x400>,
+                             <0x0 0x5c11000 0x0 0x1000>,
+                             <0x0 0x5c6f000 0x0 0x4000>,
+                             <0x0 0x5c76000 0x0 0x4000>;
+                       reg-names = "csid0",
+                                   "csid1",
+                                   "csiphy0",
+                                   "csiphy1",
+                                   "csitpg0",
+                                   "csitpg1",
+                                   "top",
+                                   "vfe0",
+                                   "vfe1";
+
+                       clocks = <&gcc GCC_CAMERA_AHB_CLK>,
+                                <&gcc GCC_CAMSS_AXI_CLK>,
+                                <&gcc GCC_CAMSS_NRT_AXI_CLK>,
+                                <&gcc GCC_CAMSS_RT_AXI_CLK>,
+                                <&gcc GCC_CAMSS_TFE_0_CSID_CLK>,
+                                <&gcc GCC_CAMSS_TFE_1_CSID_CLK>,
+                                <&gcc GCC_CAMSS_CPHY_0_CLK>,
+                                <&gcc GCC_CAMSS_CSI0PHYTIMER_CLK>,
+                                <&gcc GCC_CAMSS_CPHY_1_CLK>,
+                                <&gcc GCC_CAMSS_CSI1PHYTIMER_CLK>,
+                                <&gcc GCC_CAMSS_TOP_AHB_CLK>,
+                                <&gcc GCC_CAMSS_TFE_0_CLK>,
+                                <&gcc GCC_CAMSS_TFE_0_CPHY_RX_CLK>,
+                                <&gcc GCC_CAMSS_TFE_1_CLK>,
+                                <&gcc GCC_CAMSS_TFE_1_CPHY_RX_CLK> ;
+                       clock-names = "ahb",
+                                     "axi",
+                                     "camnoc_nrt_axi",
+                                     "camnoc_rt_axi",
+                                     "csi0",
+                                     "csi1",
+                                     "csiphy0",
+                                     "csiphy0_timer",
+                                     "csiphy1",
+                                     "csiphy1_timer",
+                                     "top_ahb",
+                                     "vfe0",
+                                     "vfe0_cphy_rx",
+                                     "vfe1",
+                                     "vfe1_cphy_rx";
+
+                       interrupts = <GIC_SPI 210 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 212 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 72 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 73 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 309 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 310 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 211 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 213 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "csid0",
+                                         "csid1",
+                                         "csiphy0",
+                                         "csiphy1",
+                                         "csitpg0",
+                                         "csitpg1",
+                                         "vfe0",
+                                         "vfe1";
+
+                       interconnects = <&bimc MASTER_APPSS_PROC RPM_ACTIVE_TAG
+                                        &config_noc SLAVE_CAMERA_CFG RPM_ACTIVE_TAG>,
+                                       <&mmrt_virt MASTER_CAMNOC_HF RPM_ALWAYS_TAG
+                                        &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>,
+                                       <&mmnrt_virt MASTER_CAMNOC_SF RPM_ALWAYS_TAG
+                                        &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>;
+                       interconnect-names = "ahb",
+                                            "hf_mnoc",
+                                            "sf_mnoc";
+
+                       iommus = <&apps_smmu 0x400 0x0>,
+                                <&apps_smmu 0x800 0x0>,
+                                <&apps_smmu 0x820 0x0>,
+                                <&apps_smmu 0x840 0x0>;
+
+                       power-domains = <&gcc GCC_CAMSS_TOP_GDSC>;
+
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                               };
+                       };
+               };
+
                mdss: display-subsystem@5e00000 {
                        compatible = "qcom,qcm2290-mdss";
                        reg = <0x0 0x05e00000 0x0 0x1000>;
index 2b5aa3c66867676bda59ff82b902b6e4974126f8..a6652e4817d1c218c7981b04daeb035e2852ac1a 100644 (file)
        status = "okay";
 };
 
+&remoteproc_adsp {
+       firmware-name = "qcom/qcs615/adsp.mbn";
+
+       status = "okay";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/qcs615/cdsp.mbn";
+
+       status = "okay";
+};
+
 &rpmhcc {
        clocks = <&xo_board_clk>;
 };
index bb8b6c3ebd03f086b44493024ce782acf6f9e1ed..bfbb210354922766a03fe05e6d117ea21d118081 100644 (file)
                qcom,bcm-voters = <&apps_bcm_voter>;
        };
 
+       smp2p-adsp {
+               compatible = "qcom,smp2p";
+               qcom,smem = <443>, <429>;
+               interrupts = <GIC_SPI 172 IRQ_TYPE_EDGE_RISING>;
+               /* On this platform, bit 26 (normally SLPI) is repurposed for ADSP */
+               mboxes = <&apss_shared 26>;
+
+               qcom,local-pid = <0>;
+               qcom,remote-pid = <2>;
+
+               adsp_smp2p_out: master-kernel {
+                       qcom,entry-name = "master-kernel";
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               adsp_smp2p_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       smp2p-cdsp {
+               compatible = "qcom,smp2p";
+               qcom,smem = <94>, <432>;
+               interrupts = <GIC_SPI 576 IRQ_TYPE_EDGE_RISING>;
+               mboxes = <&apss_shared 6>;
+
+               qcom,local-pid = <0>;
+               qcom,remote-pid = <5>;
+
+               cdsp_smp2p_out: master-kernel {
+                       qcom,entry-name = "master-kernel";
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               cdsp_smp2p_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+       };
+
        qup_opp_table: opp-table-qup {
                compatible = "operating-points-v2";
                opp-shared;
                        no-map;
                        hwlocks = <&tcsr_mutex 3>;
                };
+
+               rproc_cdsp_mem: rproc-cdsp@93b00000 {
+                       reg = <0x0 0x93b00000 0x0 0x1e00000>;
+                       no-map;
+               };
+
+               rproc_adsp_mem: rproc-adsp@95900000 {
+                       reg = <0x0 0x95900000 0x0 0x1e00000>;
+                       no-map;
+               };
        };
 
        soc: soc@0 {
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
+                       status = "disabled";
 
                        in-ports {
                                port {
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
+
+                       /* Not all required clocks can be enabled from the OS */
+                       status = "fail";
                };
 
                cti@6c20000 {
                        clock-names = "apb_pclk";
                };
 
+               remoteproc_cdsp: remoteproc@8300000 {
+                       compatible = "qcom,qcs615-cdsp-pas", "qcom,sm8150-cdsp-pas";
+                       reg = <0x0 0x08300000 0x0 0x4040>;
+
+                       interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>,
+                                             <&cdsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&cdsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&cdsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+                                             <&cdsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog",
+                                         "fatal",
+                                         "ready",
+                                         "handover",
+                                         "stop-ack";
+
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "xo";
+
+                       power-domains = <&rpmhpd RPMHPD_CX>;
+                       power-domain-names = "cx";
+
+                       memory-region = <&rproc_cdsp_mem>;
+
+                       qcom,qmp = <&aoss_qmp>;
+
+                       qcom,smem-states = <&cdsp_smp2p_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       status = "disabled";
+
+                       glink-edge {
+                               interrupts = <GIC_SPI 574 IRQ_TYPE_EDGE_RISING>;
+                               mboxes = <&apss_shared 4>;
+                               label = "cdsp";
+                               qcom,remote-pid = <5>;
+                       };
+               };
+
                pmu@90b6300 {
                        compatible = "qcom,qcs615-cpu-bwmon", "qcom,sdm845-bwmon";
                        reg = <0x0 0x090b6300 0x0 0x600>;
                        reg = <0x0 0x0c3f0000 0x0 0x400>;
                };
 
+               sram@14680000 {
+                       compatible = "qcom,qcs615-imem", "syscon", "simple-mfd";
+                       reg = <0x0 0x14680000 0x0 0x2c000>;
+                       ranges = <0 0 0x14680000 0x2c000>;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       pil-reloc@2a94c {
+                               compatible = "qcom,pil-reloc-info";
+                               reg = <0x2a94c 0xc8>;
+                       };
+               };
+
                apps_smmu: iommu@15000000 {
                        compatible = "qcom,qcs615-smmu-500", "qcom,smmu-500", "arm,mmu-500";
                        reg = <0x0 0x15000000 0x0 0x80000>;
                                maximum-speed = "high-speed";
                        };
                };
+
+               remoteproc_adsp: remoteproc@62400000 {
+                       compatible = "qcom,qcs615-adsp-pas", "qcom,sm8150-adsp-pas";
+                       reg = <0x0 0x62400000 0x0 0x4040>;
+
+                       interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
+                                             <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+                                             <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog",
+                                         "fatal",
+                                         "ready",
+                                         "handover",
+                                         "stop-ack";
+
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "xo";
+
+                       power-domains = <&rpmhpd RPMHPD_CX>;
+                       power-domain-names = "cx";
+
+                       memory-region = <&rproc_adsp_mem>;
+
+                       qcom,qmp = <&aoss_qmp>;
+
+                       qcom,smem-states = <&adsp_smp2p_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       status = "disabled";
+
+                       glink_edge: glink-edge {
+                               interrupts = <GIC_SPI 170 IRQ_TYPE_EDGE_RISING>;
+                               mboxes = <&apss_shared 24>;
+                               label = "lpass";
+                               qcom,remote-pid = <2>;
+                       };
+               };
        };
 
        arch_timer: timer {
index 3ff8f398cad31a36fa46060855b075c8c2020aa7..8c166ead912c589c01d2bc7d13fa1b6892f6252b 100644 (file)
        };
 };
 
+&iris {
+       status = "okay";
+};
+
 &qupv3_id_0 {
        status = "okay";
 };
index 009f9658a4fa8b14e1a81a47622298d1aadafcdb..7ada029c32c1f2d0488a3fd1be603887c64bf4f9 100644 (file)
                        };
                };
 
+               iris: video-codec@aa00000 {
+                       compatible = "qcom,qcs8300-iris";
+
+                       reg = <0x0 0x0aa00000 0x0 0xf0000>;
+                       interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+
+                       power-domains = <&videocc VIDEO_CC_MVS0C_GDSC>,
+                                       <&videocc VIDEO_CC_MVS0_GDSC>,
+                                       <&rpmhpd RPMHPD_MX>,
+                                       <&rpmhpd RPMHPD_MMCX>;
+                       power-domain-names = "venus",
+                                            "vcodec0",
+                                            "mxc",
+                                            "mmcx";
+
+                       operating-points-v2 = <&iris_opp_table>;
+
+                       clocks = <&gcc GCC_VIDEO_AXI0_CLK>,
+                                <&videocc VIDEO_CC_MVS0C_CLK>,
+                                <&videocc VIDEO_CC_MVS0_CLK>;
+                       clock-names = "iface",
+                                     "core",
+                                     "vcodec0_core";
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mmss_noc MASTER_VIDEO_P0 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 0x0880 0x0400>,
+                                <&apps_smmu 0x0887 0x0400>;
+                       dma-coherent;
+
+                       status = "disabled";
+
+                       iris_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-366000000 {
+                                       opp-hz = /bits/ 64 <366000000>;
+                                       required-opps = <&rpmhpd_opp_svs_l1>,
+                                                       <&rpmhpd_opp_svs_l1>;
+                               };
+
+                               opp-444000000 {
+                                       opp-hz = /bits/ 64 <444000000>;
+                                       required-opps = <&rpmhpd_opp_nom>,
+                                                       <&rpmhpd_opp_nom>;
+                               };
+
+                               opp-533000000 {
+                                       opp-hz = /bits/ 64 <533000000>;
+                                       required-opps = <&rpmhpd_opp_turbo>,
+                                                       <&rpmhpd_opp_turbo>;
+                               };
+
+                               opp-560000000 {
+                                       opp-hz = /bits/ 64 <560000000>;
+                                       required-opps = <&rpmhpd_opp_turbo_l1>,
+                                                       <&rpmhpd_opp_turbo_l1>;
+                               };
+                       };
+               };
+
                videocc: clock-controller@abf0000 {
                        compatible = "qcom,qcs8300-videocc";
                        reg = <0x0 0x0abf0000 0x0 0x10000>;
index 5fe331923dd3cd31ff2be047a2228e1c4104e80e..771baf7e09e65c1f38654748094f6453f197127e 100644 (file)
@@ -9,10 +9,6 @@
 #include <dt-bindings/clock/qcom,camcc-sm8250.h>
 #include <dt-bindings/gpio/gpio.h>
 
-&camcc {
-       status = "okay";
-};
-
 &camss {
        vdda-phy-supply = <&vreg_l5a_0p88>;
        vdda-pll-supply = <&vreg_l9a_1p2>;
index 3ae416ab66e8b30e52529934f0379a581c6c1e32..63b3031cfcc15fe2cce58c0fb7502b19f058b80c 100644 (file)
                stdout-path = "serial0:115200n8";
        };
 
+       vreg_12p0: vreg-12p0-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VREG_12P0";
+
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+       };
+
+       vreg_5p0: vreg-5p0-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VREG_5P0";
+
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+
+               vin-supply = <&vreg_12p0>;
+       };
+
+       vreg_1p8: vreg-1p8-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VREG_1P8";
+
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               vin-supply = <&vreg_5p0>;
+       };
+
+       vreg_1p0: vreg-1p0-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VREG_1P0";
+
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1000000>;
+               regulator-max-microvolt = <1000000>;
+
+               vin-supply = <&vreg_1p8>;
+       };
+
+       vreg_3p0: vreg-3p0-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VREG_3P0";
+
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+
+               vin-supply = <&vreg_12p0>;
+       };
+
        vreg_conn_1p8: vreg_conn_1p8 {
                compatible = "regulator-fixed";
                regulator-name = "vreg_conn_1p8";
                        };
                };
        };
+
+       dp-dsi0-connector {
+               compatible = "dp-connector";
+               label = "DSI0";
+               type = "full-size";
+
+               port {
+                       dp_dsi0_connector_in: endpoint {
+                               remote-endpoint = <&dsi2dp_bridge0_out>;
+                       };
+               };
+       };
+
+       dp-dsi1-connector {
+               compatible = "dp-connector";
+               label = "DSI1";
+               type = "full-size";
+
+               port {
+                       dp_dsi1_connector_in: endpoint {
+                               remote-endpoint = <&dsi2dp_bridge1_out>;
+                       };
+               };
+       };
 };
 
 &apps_rsc {
 
 &i2c18 {
        clock-frequency = <400000>;
+
+       status = "okay";
+
+       io_expander: gpio@74 {
+               compatible = "ti,tca9539";
+               reg = <0x74>;
+               interrupts-extended = <&tlmm 98 IRQ_TYPE_EDGE_BOTH>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               reset-gpios = <&tlmm 97 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&io_expander_intr_active>,
+                           <&io_expander_reset_active>;
+               pinctrl-names = "default";
+       };
+
+       i2c-mux@70 {
+               compatible = "nxp,pca9543";
+               #address-cells = <1>;
+
+               #size-cells = <0>;
+               reg = <0x70>;
+
+               i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       bridge@58 {
+                               compatible = "analogix,anx7625";
+                               reg = <0x58>;
+                               interrupts-extended = <&io_expander 2 IRQ_TYPE_EDGE_FALLING>;
+                               enable-gpios = <&io_expander 1 GPIO_ACTIVE_HIGH>;
+                               reset-gpios = <&io_expander 0 GPIO_ACTIVE_HIGH>;
+                               vdd10-supply = <&vreg_1p0>;
+                               vdd18-supply = <&vreg_1p8>;
+                               vdd33-supply = <&vreg_3p0>;
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dsi2dp_bridge0_in: endpoint {
+                                                       remote-endpoint = <&mdss0_dsi0_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+
+                                               dsi2dp_bridge0_out: endpoint {
+                                                       remote-endpoint = <&dp_dsi0_connector_in>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+
+               i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       bridge@58 {
+                               compatible = "analogix,anx7625";
+                               reg = <0x58>;
+                               interrupts-extended = <&io_expander 10 IRQ_TYPE_EDGE_FALLING>;
+                               enable-gpios = <&io_expander 9 GPIO_ACTIVE_HIGH>;
+                               reset-gpios = <&io_expander 8 GPIO_ACTIVE_HIGH>;
+                               vdd10-supply = <&vreg_1p0>;
+                               vdd18-supply = <&vreg_1p8>;
+                               vdd33-supply = <&vreg_3p0>;
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dsi2dp_bridge1_in: endpoint {
+                                                       remote-endpoint = <&mdss0_dsi1_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+
+                                               dsi2dp_bridge1_out: endpoint {
+                                                       remote-endpoint = <&dp_dsi1_connector_in>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+       };
+
+};
+
+&iris {
+       firmware-name = "qcom/vpu/vpu30_p4_s6.mbn";
+
        status = "okay";
 };
 
        status = "okay";
 };
 
+&mdss0_dsi0 {
+       vdda-supply = <&vreg_l1c>;
+
+       status = "okay";
+};
+
+&mdss0_dsi0_out {
+       data-lanes = <0 1 2 3>;
+       remote-endpoint = <&dsi2dp_bridge0_in>;
+};
+
+&mdss0_dsi0_phy {
+       vdds-supply = <&vreg_l4a>;
+
+       status = "okay";
+};
+
+&mdss0_dsi1 {
+       vdda-supply = <&vreg_l1c>;
+
+       status = "okay";
+};
+
+&mdss0_dsi1_out {
+       data-lanes = <0 1 2 3>;
+       remote-endpoint = <&dsi2dp_bridge1_in>;
+};
+
+&mdss0_dsi1_phy {
+       vdds-supply = <&vreg_l4a>;
+
+       status = "okay";
+};
+
 &pmm8654au_0_gpios {
        gpio-line-names = "DS_EN",
                          "POFF_COMPLETE",
                };
        };
 
+       io_expander_intr_active: io-expander-intr-active-state {
+               pins = "gpio98";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       io_expander_reset_active: io-expander-reset-active-state {
+               pins = "gpio97";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-high;
+       };
+
        pcie0_default_state: pcie0-default-state {
                perst-pins {
                        pins = "gpio2";
index 45f536633f6449e6ce6bb0109b5446968921f684..fed34717460f060e6a9dfdd4e29ca4025c401b83 100644 (file)
@@ -6,11 +6,14 @@
 
 #include <dt-bindings/interconnect/qcom,icc.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
 #include <dt-bindings/clock/qcom,sa8775p-dispcc.h>
 #include <dt-bindings/clock/qcom,sa8775p-gcc.h>
 #include <dt-bindings/clock/qcom,sa8775p-gpucc.h>
+#include <dt-bindings/clock/qcom,sa8775p-videocc.h>
 #include <dt-bindings/dma/qcom-gpi.h>
+#include <dt-bindings/interconnect/qcom,osm-l3.h>
 #include <dt-bindings/interconnect/qcom,sa8775p-rpmh.h>
 #include <dt-bindings/mailbox/qcom-ipcc.h>
 #include <dt-bindings/firmware/qcom,scm.h>
                        next-level-cache = <&l2_0>;
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3_cl0 MASTER_EPSS_L3_APPS
+                                        &epss_l3_cl0 SLAVE_EPSS_L3_SHARED>;
                        l2_0: l2-cache {
                                compatible = "cache";
                                cache-level = <2>;
                        next-level-cache = <&l2_1>;
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3_cl0 MASTER_EPSS_L3_APPS
+                                        &epss_l3_cl0 SLAVE_EPSS_L3_SHARED>;
                        l2_1: l2-cache {
                                compatible = "cache";
                                cache-level = <2>;
                        next-level-cache = <&l2_2>;
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3_cl0 MASTER_EPSS_L3_APPS
+                                        &epss_l3_cl0 SLAVE_EPSS_L3_SHARED>;
                        l2_2: l2-cache {
                                compatible = "cache";
                                cache-level = <2>;
                        next-level-cache = <&l2_3>;
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3_cl0 MASTER_EPSS_L3_APPS
+                                        &epss_l3_cl0 SLAVE_EPSS_L3_SHARED>;
                        l2_3: l2-cache {
                                compatible = "cache";
                                cache-level = <2>;
                        next-level-cache = <&l2_4>;
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       operating-points-v2 = <&cpu4_opp_table>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3_cl1 MASTER_EPSS_L3_APPS
+                                        &epss_l3_cl1 SLAVE_EPSS_L3_SHARED>;
                        l2_4: l2-cache {
                                compatible = "cache";
                                cache-level = <2>;
                        next-level-cache = <&l2_5>;
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       operating-points-v2 = <&cpu4_opp_table>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3_cl1 MASTER_EPSS_L3_APPS
+                                        &epss_l3_cl1 SLAVE_EPSS_L3_SHARED>;
                        l2_5: l2-cache {
                                compatible = "cache";
                                cache-level = <2>;
                        next-level-cache = <&l2_6>;
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       operating-points-v2 = <&cpu4_opp_table>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3_cl1 MASTER_EPSS_L3_APPS
+                                        &epss_l3_cl1 SLAVE_EPSS_L3_SHARED>;
                        l2_6: l2-cache {
                                compatible = "cache";
                                cache-level = <2>;
                        next-level-cache = <&l2_7>;
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       operating-points-v2 = <&cpu4_opp_table>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3_cl1 MASTER_EPSS_L3_APPS
+                                        &epss_l3_cl1 SLAVE_EPSS_L3_SHARED>;
                        l2_7: l2-cache {
                                compatible = "cache";
                                cache-level = <2>;
                };
        };
 
+       cpu0_opp_table: opp-table-cpu0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-1267200000 {
+                       opp-hz = /bits/ 64 <1267200000>;
+                       opp-peak-kBps = <(1555200 * 4) (921600 * 32)>;
+               };
+
+               opp-1363200000 {
+                       opp-hz = /bits/ 64 <1363200000>;
+                       opp-peak-kBps = <(1555200 * 4) (921600 * 32)>;
+               };
+
+               opp-1459200000 {
+                       opp-hz = /bits/ 64 <1459200000>;
+                       opp-peak-kBps = <(1555200 * 4) (921600 * 32)>;
+               };
+
+               opp-1536000000 {
+                       opp-hz = /bits/ 64 <1536000000>;
+                       opp-peak-kBps = <(1555200 * 4) (921600 * 32)>;
+               };
+
+               opp-1632000000 {
+                       opp-hz = /bits/ 64 <1632000000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-1708800000 {
+                       opp-hz = /bits/ 64 <1708800000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-1785600000 {
+                       opp-hz = /bits/ 64 <1785600000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-1862400000 {
+                       opp-hz = /bits/ 64 <1862400000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-1939200000 {
+                       opp-hz = /bits/ 64 <1939200000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-2016000000 {
+                       opp-hz = /bits/ 64 <2016000000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-2112000000 {
+                       opp-hz = /bits/ 64 <2112000000>;
+                       opp-peak-kBps = <(2092800 * 4) (1555200 * 32)>;
+               };
+
+               opp-2188800000 {
+                       opp-hz = /bits/ 64 <2188800000>;
+                       opp-peak-kBps = <(2092800 * 4) (1555200 * 32)>;
+               };
+
+               opp-2265600000 {
+                       opp-hz = /bits/ 64 <2265600000>;
+                       opp-peak-kBps = <(2092800 * 4) (1555200 * 32)>;
+               };
+
+               opp-2361600000 {
+                       opp-hz = /bits/ 64 <2361600000>;
+                       opp-peak-kBps = <(3196800 * 4) (1612800 * 32)>;
+               };
+
+               opp-2457600000 {
+                       opp-hz = /bits/ 64 <2457600000>;
+                       opp-peak-kBps = <(3196800 * 4) (1612800 * 32)>;
+               };
+
+               opp-2553600000 {
+                       opp-hz = /bits/ 64 <2553600000>;
+                       opp-peak-kBps = <(3196800 * 4) (1708800 * 32)>;
+               };
+       };
+
+       cpu4_opp_table: opp-table-cpu4 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-1267200000 {
+                       opp-hz = /bits/ 64 <1267200000>;
+                       opp-peak-kBps = <(1555200 * 4) (921600 * 32)>;
+               };
+
+               opp-1363200000 {
+                       opp-hz = /bits/ 64 <1363200000>;
+                       opp-peak-kBps = <(1555200 * 4) (921600 * 32)>;
+               };
+
+               opp-1459200000 {
+                       opp-hz = /bits/ 64 <1459200000>;
+                       opp-peak-kBps = <(1555200 * 4) (921600 * 32)>;
+               };
+
+               opp-1536000000 {
+                       opp-hz = /bits/ 64 <1536000000>;
+                       opp-peak-kBps = <(1555200 * 4) (921600 * 32)>;
+               };
+
+               opp-1632000000 {
+                       opp-hz = /bits/ 64 <1632000000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-1708800000 {
+                       opp-hz = /bits/ 64 <1708800000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-1785600000 {
+                       opp-hz = /bits/ 64 <1785600000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-1862400000 {
+                       opp-hz = /bits/ 64 <1862400000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-1939200000 {
+                       opp-hz = /bits/ 64 <1939200000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-2016000000 {
+                       opp-hz = /bits/ 64 <2016000000>;
+                       opp-peak-kBps = <(1708800 * 4) (1228800 * 32)>;
+               };
+
+               opp-2112000000 {
+                       opp-hz = /bits/ 64 <2112000000>;
+                       opp-peak-kBps = <(2092800 * 4) (1555200 * 32)>;
+               };
+
+               opp-2188800000 {
+                       opp-hz = /bits/ 64 <2188800000>;
+                       opp-peak-kBps = <(2092800 * 4) (1555200 * 32)>;
+               };
+
+               opp-2265600000 {
+                       opp-hz = /bits/ 64 <2265600000>;
+                       opp-peak-kBps = <(2092800 * 4) (1555200 * 32)>;
+               };
+
+               opp-2361600000 {
+                       opp-hz = /bits/ 64 <2361600000>;
+                       opp-peak-kBps = <(3196800 * 4) (1612800 * 32)>;
+               };
+
+               opp-2457600000 {
+                       opp-hz = /bits/ 64 <2457600000>;
+                       opp-peak-kBps = <(3196800 * 4) (1612800 * 32)>;
+               };
+
+               opp-2553600000 {
+                       opp-hz = /bits/ 64 <2553600000>;
+                       opp-peak-kBps = <(3196800 * 4) (1708800 * 32)>;
+               };
+       };
+
        dummy-sink {
                compatible = "arm,coresight-dummy-sink";
 
                        interrupts = <GIC_SPI 580 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               iris: video-codec@aa00000 {
+                       compatible = "qcom,sa8775p-iris", "qcom,sm8550-iris";
+
+                       reg = <0x0 0x0aa00000 0x0 0xf0000>;
+                       interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+
+                       power-domains = <&videocc VIDEO_CC_MVS0C_GDSC>,
+                                       <&videocc VIDEO_CC_MVS0_GDSC>,
+                                       <&rpmhpd SA8775P_MX>,
+                                       <&rpmhpd SA8775P_MMCX>;
+                       power-domain-names = "venus",
+                                            "vcodec0",
+                                            "mxc",
+                                            "mmcx";
+                       operating-points-v2 = <&iris_opp_table>;
+
+                       clocks = <&gcc GCC_VIDEO_AXI0_CLK>,
+                                <&videocc VIDEO_CC_MVS0C_CLK>,
+                                <&videocc VIDEO_CC_MVS0_CLK>;
+                       clock-names = "iface",
+                                     "core",
+                                     "vcodec0_core";
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mmss_noc MASTER_VIDEO_P0 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                       interconnect-names = "cpu-cfg",
+                                            "video-mem";
+
+                       memory-region = <&pil_video_mem>;
+
+                       resets = <&gcc GCC_VIDEO_AXI0_CLK_ARES>;
+                       reset-names = "bus";
+
+                       iommus = <&apps_smmu 0x0880 0x0400>,
+                                <&apps_smmu 0x0887 0x0400>;
+                       dma-coherent;
+
+                       status = "disabled";
+
+                       iris_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-366000000 {
+                                       opp-hz = /bits/ 64 <366000000>;
+                                       required-opps = <&rpmhpd_opp_svs_l1>,
+                                                       <&rpmhpd_opp_svs_l1>;
+                               };
+
+                               opp-444000000 {
+                                       opp-hz = /bits/ 64 <444000000>;
+                                       required-opps = <&rpmhpd_opp_nom>,
+                                                       <&rpmhpd_opp_nom>;
+                               };
+
+                               opp-533000000 {
+                                       opp-hz = /bits/ 64 <533000000>;
+                                       required-opps = <&rpmhpd_opp_turbo>,
+                                                       <&rpmhpd_opp_turbo>;
+                               };
+
+                               opp-560000000 {
+                                       opp-hz = /bits/ 64 <560000000>;
+                                       required-opps = <&rpmhpd_opp_turbo_l1>,
+                                                       <&rpmhpd_opp_turbo_l1>;
+                               };
+                       };
+               };
+
                videocc: clock-controller@abf0000 {
                        compatible = "qcom,sa8775p-videocc";
                        reg = <0x0 0x0abf0000 0x0 0x10000>;
                                                        remote-endpoint = <&mdss0_dp1_in>;
                                                };
                                        };
+
+                                       port@2 {
+                                               reg = <2>;
+
+                                               dpu_intf1_out: endpoint {
+                                                       remote-endpoint = <&mdss0_dsi0_in>;
+                                               };
+                                       };
+
+                                       port@3 {
+                                               reg = <3>;
+
+                                               dpu_intf2_out: endpoint {
+                                                       remote-endpoint = <&mdss0_dsi1_in>;
+                                               };
+                                       };
                                };
 
                                mdss0_mdp_opp_table: opp-table {
                                };
                        };
 
+                       mdss0_dsi0: dsi@ae94000 {
+                               compatible = "qcom,sa8775p-dsi-ctrl", "qcom,mdss-dsi-ctrl";
+                               reg = <0x0 0x0ae94000 0x0 0x400>;
+                               reg-names = "dsi_ctrl";
+
+                               interrupt-parent = <&mdss0>;
+                               interrupts = <4>;
+
+                               clocks = <&dispcc0 MDSS_DISP_CC_MDSS_BYTE0_CLK>,
+                                        <&dispcc0 MDSS_DISP_CC_MDSS_BYTE0_INTF_CLK>,
+                                        <&dispcc0 MDSS_DISP_CC_MDSS_PCLK0_CLK>,
+                                        <&dispcc0 MDSS_DISP_CC_MDSS_ESC0_CLK>,
+                                        <&dispcc0 MDSS_DISP_CC_MDSS_AHB_CLK>,
+                                        <&gcc GCC_DISP_HF_AXI_CLK>;
+                               clock-names = "byte",
+                                             "byte_intf",
+                                             "pixel",
+                                             "core",
+                                             "iface",
+                                             "bus";
+                               assigned-clocks = <&dispcc0 MDSS_DISP_CC_MDSS_BYTE0_CLK_SRC>,
+                                                 <&dispcc0 MDSS_DISP_CC_MDSS_PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&mdss0_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss0_dsi0_phy DSI_PIXEL_PLL_CLK>;
+                               phys = <&mdss0_dsi0_phy>;
+
+                               operating-points-v2 = <&mdss_dsi_opp_table>;
+                               power-domains = <&rpmhpd SA8775P_MMCX>;
+
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               status = "disabled";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               mdss0_dsi0_in: endpoint {
+                                                       remote-endpoint = <&dpu_intf1_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+
+                                               mdss0_dsi0_out: endpoint{ };
+                                       };
+                               };
+
+                               mdss_dsi_opp_table: opp-table {
+                                       compatible = "operating-points-v2";
+
+                                       opp-358000000 {
+                                               opp-hz = /bits/ 64 <358000000>;
+                                               required-opps = <&rpmhpd_opp_svs_l1>;
+                                       };
+                               };
+                       };
+
+                       mdss0_dsi0_phy: phy@ae94400 {
+                               compatible = "qcom,sa8775p-dsi-phy-5nm";
+                               reg = <0x0 0x0ae94400 0x0 0x200>,
+                                     <0x0 0x0ae94600 0x0 0x280>,
+                                     <0x0 0x0ae94900 0x0 0x27c>;
+                               reg-names = "dsi_phy",
+                                           "dsi_phy_lane",
+                                           "dsi_pll";
+
+                               #clock-cells = <1>;
+                               #phy-cells = <0>;
+
+                               clocks = <&dispcc0 MDSS_DISP_CC_MDSS_AHB_CLK>,
+                                        <&rpmhcc RPMH_CXO_CLK>;
+                               clock-names = "iface", "ref";
+
+                               status = "disabled";
+                       };
+
+                       mdss0_dsi1: dsi@ae96000 {
+                               compatible = "qcom,sa8775p-dsi-ctrl", "qcom,mdss-dsi-ctrl";
+                               reg = <0x0 0x0ae96000 0x0 0x400>;
+                               reg-names = "dsi_ctrl";
+
+                               interrupt-parent = <&mdss0>;
+                               interrupts = <5>;
+
+                               clocks = <&dispcc0 MDSS_DISP_CC_MDSS_BYTE1_CLK>,
+                                        <&dispcc0 MDSS_DISP_CC_MDSS_BYTE1_INTF_CLK>,
+                                        <&dispcc0 MDSS_DISP_CC_MDSS_PCLK1_CLK>,
+                                        <&dispcc0 MDSS_DISP_CC_MDSS_ESC1_CLK>,
+                                        <&dispcc0 MDSS_DISP_CC_MDSS_AHB_CLK>,
+                                        <&gcc GCC_DISP_HF_AXI_CLK>;
+                               clock-names = "byte",
+                                             "byte_intf",
+                                             "pixel",
+                                             "core",
+                                             "iface",
+                                             "bus";
+                               assigned-clocks = <&dispcc0 MDSS_DISP_CC_MDSS_BYTE1_CLK_SRC>,
+                                                 <&dispcc0 MDSS_DISP_CC_MDSS_PCLK1_CLK_SRC>;
+                               assigned-clock-parents = <&mdss0_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss0_dsi1_phy DSI_PIXEL_PLL_CLK>;
+                               phys = <&mdss0_dsi1_phy>;
+
+                               operating-points-v2 = <&mdss_dsi_opp_table>;
+                               power-domains = <&rpmhpd SA8775P_MMCX>;
+
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               status = "disabled";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               mdss0_dsi1_in: endpoint {
+                                                       remote-endpoint = <&dpu_intf2_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+
+                                               mdss0_dsi1_out: endpoint { };
+                                       };
+                               };
+                       };
+
+                       mdss0_dsi1_phy: phy@ae96400 {
+                               compatible = "qcom,sa8775p-dsi-phy-5nm";
+                               reg = <0x0 0x0ae96400 0x0 0x200>,
+                                     <0x0 0x0ae96600 0x0 0x280>,
+                                     <0x0 0x0ae96900 0x0 0x27c>;
+                               reg-names = "dsi_phy",
+                                           "dsi_phy_lane",
+                                           "dsi_pll";
+
+                               #clock-cells = <1>;
+                               #phy-cells = <0>;
+
+                               clocks = <&dispcc0 MDSS_DISP_CC_MDSS_AHB_CLK>,
+                                        <&rpmhcc RPMH_CXO_CLK>;
+                               clock-names = "iface", "ref";
+
+                               status = "disabled";
+                       };
+
                        mdss0_dp0_phy: phy@aec2a00 {
                                compatible = "qcom,sa8775p-edp-phy";
 
                                 <&sleep_clk>,
                                 <&mdss0_dp0_phy 0>, <&mdss0_dp0_phy 1>,
                                 <&mdss0_dp1_phy 0>, <&mdss0_dp1_phy 1>,
-                                <0>, <0>, <0>, <0>;
+                                <&mdss0_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss0_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss0_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss0_dsi1_phy DSI_PIXEL_PLL_CLK>;
                        power-domains = <&rpmhpd SA8775P_MMCX>;
                        #clock-cells = <1>;
                        #reset-cells = <1>;
                        };
                };
 
+               epss_l3_cl0: interconnect@18590000 {
+                       compatible = "qcom,sa8775p-epss-l3",
+                                    "qcom,epss-l3";
+                       reg = <0x0 0x18590000 0x0 0x1000>;
+                       clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GCC_GPLL0>;
+                       clock-names = "xo", "alternate";
+                       #interconnect-cells = <1>;
+               };
+
                cpufreq_hw: cpufreq@18591000 {
                        compatible = "qcom,sa8775p-cpufreq-epss",
                                     "qcom,cpufreq-epss";
                        #freq-domain-cells = <1>;
                };
 
+               epss_l3_cl1: interconnect@18592000 {
+                       compatible = "qcom,sa8775p-epss-l3",
+                                    "qcom,epss-l3";
+                       reg = <0x0 0x18592000 0x0 0x1000>;
+                       clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GCC_GPLL0>;
+                       clock-names = "xo", "alternate";
+                       #interconnect-cells = <1>;
+               };
+
                remoteproc_gpdsp0: remoteproc@20c00000 {
                        compatible = "qcom,sa8775p-gpdsp0-pas";
                        reg = <0x0 0x20c00000 0x0 0x10000>;
 
                        interrupts-extended = <&intc GIC_SPI 768 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_gpdsp0_in 0 0>,
-                                             <&smp2p_gpdsp0_in 2 0>,
                                              <&smp2p_gpdsp0_in 1 0>,
+                                             <&smp2p_gpdsp0_in 2 0>,
                                              <&smp2p_gpdsp0_in 3 0>;
                        interrupt-names = "wdog", "fatal", "ready",
                                          "handover", "stop-ack";
 
                        interrupts-extended = <&intc GIC_SPI 624 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_gpdsp1_in 0 0>,
-                                             <&smp2p_gpdsp1_in 2 0>,
                                              <&smp2p_gpdsp1_in 1 0>,
+                                             <&smp2p_gpdsp1_in 2 0>,
                                              <&smp2p_gpdsp1_in 3 0>;
                        interrupt-names = "wdog", "fatal", "ready",
                                          "handover", "stop-ack";
 
                        interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_cdsp0_in 0 IRQ_TYPE_EDGE_RISING>,
-                                             <&smp2p_cdsp0_in 2 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_cdsp0_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_cdsp0_in 2 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_cdsp0_in 3 IRQ_TYPE_EDGE_RISING>;
                        interrupt-names = "wdog", "fatal", "ready",
                                          "handover", "stop-ack";
 
                        interrupts-extended = <&intc GIC_SPI 798 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_cdsp1_in 0 IRQ_TYPE_EDGE_RISING>,
-                                             <&smp2p_cdsp1_in 2 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_cdsp1_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_cdsp1_in 2 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_cdsp1_in 3 IRQ_TYPE_EDGE_RISING>;
                        interrupt-names = "wdog", "fatal", "ready",
                                          "handover", "stop-ack";
 
                        interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
-                                             <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>;
                        interrupt-names = "wdog", "fatal", "ready", "handover",
                                          "stop-ack";
                             <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "msi0", "msi1", "msi2", "msi3",
-                                 "msi4", "msi5", "msi6", "msi7";
+                            <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "msi0",
+                                 "msi1",
+                                 "msi2",
+                                 "msi3",
+                                 "msi4",
+                                 "msi5",
+                                 "msi6",
+                                 "msi7",
+                                 "global";
                #interrupt-cells = <1>;
                interrupt-map-mask = <0 0 0 0x7>;
                interrupt-map = <0 0 0 1 &intc GIC_SPI 434 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "msi0", "msi1", "msi2", "msi3",
-                                 "msi4", "msi5", "msi6", "msi7";
+                            <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 518 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "msi0",
+                                 "msi1",
+                                 "msi2",
+                                 "msi3",
+                                 "msi4",
+                                 "msi5",
+                                 "msi6",
+                                 "msi7",
+                                 "global";
                #interrupt-cells = <1>;
                interrupt-map-mask = <0 0 0 0x7>;
                interrupt-map = <0 0 0 1 &intc GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
index b0e342810ae79e2861c6e8da02186fa337160af8..e400ea4cdee8c9f512a8bee4444506fd23d0f0b3 100644 (file)
                                     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                                     <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 0 0 434 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
index 01e727b021ec587f7b3384f7301620a21ddef281..3afb69921be363bd35a996bc1d6f70ff007c6af8 100644 (file)
                        #interrupt-cells = <4>;
                };
 
-               sram@146aa000 {
+               sram@14680000 {
                        compatible = "qcom,sc7180-imem", "syscon", "simple-mfd";
-                       reg = <0 0x146aa000 0 0x2000>;
+                       reg = <0 0x14680000 0 0x2e000>;
 
                        #address-cells = <1>;
                        #size-cells = <1>;
 
-                       ranges = <0 0 0x146aa000 0x2000>;
+                       ranges = <0 0 0x14680000 0x2e000>;
 
-                       pil-reloc@94c {
+                       pil-reloc@2a94c {
                                compatible = "qcom,pil-reloc-info";
-                               reg = <0x94c 0xc8>;
+                               reg = <0x2a94c 0xc8>;
                        };
                };
 
index b1cc3bc1aec8b769021cdc25c8d66845e7bebe70..64a2abd3010018e94eb50c534a509d6b4cf2473b 100644 (file)
                                     <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "msi0", "msi1", "msi2", "msi3",
-                                         "msi4", "msi5", "msi6", "msi7";
+                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 0 0 434 IRQ_TYPE_LEVEL_HIGH>,
index b84e47a461a014871ef11e08d18af70bec8e2d63..f4f1d6a11960c69055d001a34e893e696ae5ce77 100644 (file)
@@ -9,6 +9,7 @@
 #include <dt-bindings/clock/qcom,gcc-sc8180x.h>
 #include <dt-bindings/clock/qcom,gpucc-sm8150.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
+#include <dt-bindings/clock/qcom,sc8180x-camcc.h>
 #include <dt-bindings/interconnect/qcom,icc.h>
 #include <dt-bindings/interconnect/qcom,osm-l3.h>
 #include <dt-bindings/interconnect/qcom,sc8180x.h>
                                     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                                 <&gcc GCC_PCIE_0_CFG_AHB_CLK>,
                                 <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
                                 <&gcc GCC_PCIE_0_SLV_AXI_CLK>,
-                                <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>,
-                                <&gcc GCC_PCIE_0_CLKREF_CLK>,
-                                <&gcc GCC_AGGRE_NOC_PCIE_TBU_CLK>;
+                                <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>;
                        clock-names = "pipe",
                                      "aux",
                                      "cfg",
                                      "bus_master",
                                      "bus_slave",
-                                     "slave_q2a",
-                                     "ref",
-                                     "tbu";
+                                     "slave_q2a";
 
                        assigned-clocks = <&gcc GCC_PCIE_0_AUX_CLK>;
                        assigned-clock-rates = <19200000>;
                                     <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 434 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                                 <&gcc GCC_PCIE_3_CFG_AHB_CLK>,
                                 <&gcc GCC_PCIE_3_MSTR_AXI_CLK>,
                                 <&gcc GCC_PCIE_3_SLV_AXI_CLK>,
-                                <&gcc GCC_PCIE_3_SLV_Q2A_AXI_CLK>,
-                                <&gcc GCC_PCIE_3_CLKREF_CLK>,
-                                <&gcc GCC_AGGRE_NOC_PCIE_TBU_CLK>;
+                                <&gcc GCC_PCIE_3_SLV_Q2A_AXI_CLK>;
                        clock-names = "pipe",
                                      "aux",
                                      "cfg",
                                      "bus_master",
                                      "bus_slave",
-                                     "slave_q2a",
-                                     "ref",
-                                     "tbu";
+                                     "slave_q2a";
 
                        assigned-clocks = <&gcc GCC_PCIE_3_AUX_CLK>;
                        assigned-clock-rates = <19200000>;
                                     <GIC_SPI 752 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 751 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 750 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 749 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 749 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 758 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 747 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                                 <&gcc GCC_PCIE_1_CFG_AHB_CLK>,
                                 <&gcc GCC_PCIE_1_MSTR_AXI_CLK>,
                                 <&gcc GCC_PCIE_1_SLV_AXI_CLK>,
-                                <&gcc GCC_PCIE_1_SLV_Q2A_AXI_CLK>,
-                                <&gcc GCC_PCIE_1_CLKREF_CLK>,
-                                <&gcc GCC_AGGRE_NOC_PCIE_TBU_CLK>;
+                                <&gcc GCC_PCIE_1_SLV_Q2A_AXI_CLK>;
                        clock-names = "pipe",
                                      "aux",
                                      "cfg",
                                      "bus_master",
                                      "bus_slave",
-                                     "slave_q2a",
-                                     "ref",
-                                     "tbu";
+                                     "slave_q2a";
 
                        assigned-clocks = <&gcc GCC_PCIE_1_AUX_CLK>;
                        assigned-clock-rates = <19200000>;
                                     <GIC_SPI 668 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 667 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 666 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 665 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 665 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 744 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 663 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                                 <&gcc GCC_PCIE_2_CFG_AHB_CLK>,
                                 <&gcc GCC_PCIE_2_MSTR_AXI_CLK>,
                                 <&gcc GCC_PCIE_2_SLV_AXI_CLK>,
-                                <&gcc GCC_PCIE_2_SLV_Q2A_AXI_CLK>,
-                                <&gcc GCC_PCIE_2_CLKREF_CLK>,
-                                <&gcc GCC_AGGRE_NOC_PCIE_TBU_CLK>;
+                                <&gcc GCC_PCIE_2_SLV_Q2A_AXI_CLK>;
                        clock-names = "pipe",
                                      "aux",
                                      "cfg",
                                      "bus_master",
                                      "bus_slave",
-                                     "slave_q2a",
-                                     "ref",
-                                     "tbu";
+                                     "slave_q2a";
 
                        assigned-clocks = <&gcc GCC_PCIE_2_AUX_CLK>;
                        assigned-clock-rates = <19200000>;
                        };
                };
 
+               camcc: clock-controller@ad00000 {
+                       compatible = "qcom,sc8180x-camcc";
+                       reg = <0 0x0ad00000 0 0x20000>;
+                       clocks = <&gcc GCC_CAMERA_AHB_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>,
+                                <&sleep_clk>;
+                       power-domains = <&rpmhpd SC8180X_MMCX>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
+
                mdss: mdss@ae00000 {
                        compatible = "qcom,sc8180x-mdss";
                        reg = <0 0x0ae00000 0 0x1000>;
index 3bc8471c658bda987d6fcff3359d63b367148e89..c0f466d966305af21b28d724fc8f0536d8734791 100644 (file)
                        ranges = <0x01000000 0x0 0x00000000 0x0 0x60200000 0x0 0x100000>,
                                 <0x02000000 0x0 0x60300000 0x0 0x60300000 0x0 0xd00000>;
 
-                       interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "msi";
+                       interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                        ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
                                 <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
 
-                       interrupts = <GIC_SPI 307 IRQ_TYPE_EDGE_RISING>;
-                       interrupt-names = "msi";
+                       interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 0 0 434 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                        #interrupt-cells = <4>;
                };
 
-               sram@146bf000 {
+               sram@14680000 {
                        compatible = "qcom,sdm845-imem", "syscon", "simple-mfd";
-                       reg = <0 0x146bf000 0 0x1000>;
+                       reg = <0 0x14680000 0 0x40000>;
 
                        #address-cells = <1>;
                        #size-cells = <1>;
 
-                       ranges = <0 0 0x146bf000 0x1000>;
+                       ranges = <0 0 0x14680000 0x40000>;
 
-                       pil-reloc@94c {
+                       pil-reloc@3f94c {
                                compatible = "qcom,pil-reloc-info";
-                               reg = <0x94c 0xc8>;
+                               reg = <0x3f94c 0xc8>;
                        };
                };
 
index 3b28c543fd961c787d7e788995f8fe0e980e3f68..8ef6db3be6e3dffe4ec819288193a183b32db8e8 100644 (file)
        };
 };
 
+&slpi_pas {
+       firmware-name = "qcom/sdm850/LENOVO/81JL/qcslpi850.mbn";
+
+       status = "okay";
+};
+
 &sound {
        compatible = "lenovo,yoga-c630-sndcard", "qcom,sdm845-sndcard";
        model = "Lenovo-YOGA-C630-13Q50";
index c8865779173eca65f9e94535b5339f590d4b1410..91fc36b59abf96d008ddeb43f3e4b9f0cfd49901 100644 (file)
                                bias-pull-up;
                        };
 
+                       qup_uart4_default: qup-uart4-default-state {
+                               pins = "gpio12", "gpio13";
+                               function = "qup4";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+
                        sdc1_state_on: sdc1-on-state {
                                clk-pins {
                                        pins = "sdc1_clk";
                                reg = <0x0 0x04a90000 0x0 0x4000>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart4_default>;
                                interrupts = <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>;
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
                                                 &clk_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
index f80b21d28a929619fc91b4e9d659acce40a0957b..ff1eb2c53e7b865350d00ffbfa82d7d1e3cc5aa0 100644 (file)
@@ -19,7 +19,9 @@
 #include <dt-bindings/mailbox/qcom-ipcc.h>
 #include <dt-bindings/phy/phy-qcom-qmp.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
+#include <dt-bindings/soc/qcom,apr.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
+#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
 #include <dt-bindings/thermal/thermal.h>
 
 / {
                                label = "lpass";
                                qcom,remote-pid = <2>;
 
+                               apr {
+                                       compatible = "qcom,apr-v2";
+                                       qcom,glink-channels = "apr_audio_svc";
+                                       qcom,domain = <APR_DOMAIN_ADSP>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       service@3 {
+                                               reg = <APR_SVC_ADSP_CORE>;
+                                               compatible = "qcom,q6core";
+                                               qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+                                       };
+
+                                       q6afe: service@4 {
+                                               compatible = "qcom,q6afe";
+                                               reg = <APR_SVC_AFE>;
+                                               qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+
+                                               q6afedai: dais {
+                                                       compatible = "qcom,q6afe-dais";
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       #sound-dai-cells = <1>;
+                                               };
+
+                                               q6afecc: clock-controller {
+                                                       compatible = "qcom,q6afe-clocks";
+                                                       #clock-cells = <2>;
+                                               };
+                                       };
+
+                                       q6asm: service@7 {
+                                               compatible = "qcom,q6asm";
+                                               reg = <APR_SVC_ASM>;
+                                               qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+
+                                               q6asmdai: dais {
+                                                       compatible = "qcom,q6asm-dais";
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       #sound-dai-cells = <1>;
+                                                       iommus = <&apps_smmu 0x1001 0x0>;
+                                               };
+                                       };
+
+                                       q6adm: service@8 {
+                                               compatible = "qcom,q6adm";
+                                               reg = <APR_SVC_ADM>;
+                                               qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+
+                                               q6routing: routing {
+                                                       compatible = "qcom,q6adm-routing";
+                                                       #sound-dai-cells = <0>;
+                                               };
+                                       };
+                               };
+
                                fastrpc {
                                        compatible = "qcom,fastrpc";
                                        qcom,glink-channels = "fastrpcglink-apps-dsp";
                        };
                };
 
+               videocc: clock-controller@aaf0000 {
+                       compatible = "qcom,sm6350-videocc";
+                       reg = <0x0 0x0aaf0000 0x0 0x10000>;
+                       clocks = <&gcc GCC_VIDEO_AHB_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>,
+                                <&sleep_clk>;
+                       clock-names = "iface",
+                                     "bi_tcxo",
+                                     "sleep_clk";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
+
                cci0: cci@ac4a000 {
                        compatible = "qcom,sm6350-cci", "qcom,msm8996-cci";
                        reg = <0x0 0x0ac4a000 0x0 0x1000>;
index cdb47359c4c88af5c73956ba0ba1710ca312a9af..abf12e10d33f1ce5c74e3e9136585bcb0a578492 100644 (file)
                                     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                                 <&gcc GCC_PCIE_0_CFG_AHB_CLK>,
                                 <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
                                 <&gcc GCC_PCIE_0_SLV_AXI_CLK>,
-                                <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>,
-                                <&gcc GCC_AGGRE_NOC_PCIE_TBU_CLK>,
-                                <&rpmhcc RPMH_CXO_CLK>;
+                                <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>;
                        clock-names = "pipe",
                                      "aux",
                                      "cfg",
                                      "bus_master",
                                      "bus_slave",
-                                     "slave_q2a",
-                                     "tbu",
-                                     "ref";
+                                     "slave_q2a";
 
                        iommu-map = <0x0   &apps_smmu 0x1d80 0x1>,
                                    <0x100 &apps_smmu 0x1d81 0x1>;
                                     <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 434 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                                 <&gcc GCC_PCIE_1_CFG_AHB_CLK>,
                                 <&gcc GCC_PCIE_1_MSTR_AXI_CLK>,
                                 <&gcc GCC_PCIE_1_SLV_AXI_CLK>,
-                                <&gcc GCC_PCIE_1_SLV_Q2A_AXI_CLK>,
-                                <&gcc GCC_AGGRE_NOC_PCIE_TBU_CLK>,
-                                <&rpmhcc RPMH_CXO_CLK>;
+                                <&gcc GCC_PCIE_1_SLV_Q2A_AXI_CLK>;
                        clock-names = "pipe",
                                      "aux",
                                      "cfg",
                                      "bus_master",
                                      "bus_slave",
-                                     "slave_q2a",
-                                     "tbu",
-                                     "ref";
+                                     "slave_q2a";
 
                        assigned-clocks = <&gcc GCC_PCIE_1_AUX_CLK>;
                        assigned-clock-rates = <19200000>;
index f0d18fd37aaf467516169bdb4c035617aed04e8c..b30aea8b05409094837ad494389d7c22fa1ba7dd 100644 (file)
                                     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                                     <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 434 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                                     <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 288 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 236 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 290 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                        clock-names = "iface", "bi_tcxo", "bi_tcxo_ao", "sleep_clk";
                        power-domains = <&rpmhpd RPMHPD_MMCX>;
                        required-opps = <&rpmhpd_opp_low_svs>;
-                       status = "disabled";
                        #clock-cells = <1>;
                        #reset-cells = <1>;
                        #power-domain-cells = <1>;
index 971c828a7555885aa2f05647634eb7132333fb47..9a4207ead6156333b8b6030fb0fbc1d215948041 100644 (file)
                                     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
                                     <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &intc 0 434 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
index 54c6d0fdb2afa51084c510eddc341d6087189611..33574ad706b915136546c7f92c7cd0b8a0d62b7e 100644 (file)
                sram@c3f0000 {
                        compatible = "qcom,rpmh-stats";
                        reg = <0 0x0c3f0000 0 0x400>;
+                       qcom,qmp = <&aoss_qmp>;
                };
 
                spmi_bus: spmi@c400000 {
index 71a7e3b57ecedd86d798e71b781451fe11f9c1ce..45713d46f3c52487d2638b7ab194c111f58679ce 100644 (file)
                        };
                };
 
+               camss: isp@acb7000 {
+                       compatible = "qcom,sm8550-camss";
+
+                       reg = <0x0 0x0acb7000 0x0 0x0d00>,
+                             <0x0 0x0acb9000 0x0 0x0d00>,
+                             <0x0 0x0acbb000 0x0 0x0d00>,
+                             <0x0 0x0acca000 0x0 0x0a00>,
+                             <0x0 0x0acce000 0x0 0x0a00>,
+                             <0x0 0x0acb6000 0x0 0x1000>,
+                             <0x0 0x0ace4000 0x0 0x2000>,
+                             <0x0 0x0ace6000 0x0 0x2000>,
+                             <0x0 0x0ace8000 0x0 0x2000>,
+                             <0x0 0x0acea000 0x0 0x2000>,
+                             <0x0 0x0acec000 0x0 0x2000>,
+                             <0x0 0x0acee000 0x0 0x2000>,
+                             <0x0 0x0acf0000 0x0 0x2000>,
+                             <0x0 0x0acf2000 0x0 0x2000>,
+                             <0x0 0x0ac62000 0x0 0xf000>,
+                             <0x0 0x0ac71000 0x0 0xf000>,
+                             <0x0 0x0ac80000 0x0 0xf000>,
+                             <0x0 0x0accb000 0x0 0x1800>,
+                             <0x0 0x0accf000 0x0 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";
+
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+                               };
+
+                               port@3 {
+                                       reg = <3>;
+                               };
+
+                               port@4 {
+                                       reg = <4>;
+                               };
+
+                               port@5 {
+                                       reg = <5>;
+                               };
+
+                               port@6 {
+                                       reg = <6>;
+                               };
+
+                               port@7 {
+                                       reg = <7>;
+                               };
+                       };
+               };
+
                camcc: clock-controller@ade0000 {
                        compatible = "qcom,sm8550-camcc";
                        reg = <0 0x0ade0000 0 0x20000>;
                sram@c3f0000 {
                        compatible = "qcom,rpmh-stats";
                        reg = <0 0x0c3f0000 0 0x400>;
+                       qcom,qmp = <&aoss_qmp>;
                };
 
                spmi_bus: spmi@c400000 {
index d0912735b54e5090f9f213c2c9341e03effbbbff..259649d7dcd768ecf93c9473adc1738e7d715b6c 100644 (file)
        status = "okay";
 };
 
+&iris {
+       status = "okay";
+};
+
 &gpu {
        status = "okay";
 
index 76ef43c10f77d8329ccf0a05c9d590a46372315f..8a957adbfb383411153506e46d4c9acfb02e3114 100644 (file)
        };
 };
 
+&iris {
+       status = "okay";
+};
+
 &lpass_tlmm {
        spkr_1_sd_n_active: spkr-1-sd-n-active-state {
                pins = "gpio21";
index 71033fba21b56bc63620dca3e453c14191739675..7552d5d3fb4020e61d47242b447c9ecbec5f8d55 100644 (file)
        status = "okay";
 };
 
+&iris {
+       status = "okay";
+};
+
 &gpu {
        status = "okay";
 
index 495ea9bfd008500dd2c9f46ceca94cf5f972beca..e14d3d778b71bbbd0c8fcc851eebc9df9ac09c31 100644 (file)
                        };
                };
 
+               iris: video-codec@aa00000 {
+                       compatible = "qcom,sm8650-iris";
+                       reg = <0 0x0aa00000 0 0xf0000>;
+
+                       interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH 0>;
+
+                       power-domains = <&videocc VIDEO_CC_MVS0C_GDSC>,
+                                       <&videocc VIDEO_CC_MVS0_GDSC>,
+                                       <&rpmhpd RPMHPD_MXC>,
+                                       <&rpmhpd RPMHPD_MMCX>;
+                       power-domain-names = "venus",
+                                            "vcodec0",
+                                            "mxc",
+                                            "mmcx";
+
+                       operating-points-v2 = <&iris_opp_table>;
+
+                       clocks = <&gcc GCC_VIDEO_AXI0_CLK>,
+                                <&videocc VIDEO_CC_MVS0C_CLK>,
+                                <&videocc VIDEO_CC_MVS0_CLK>;
+                       clock-names = "iface",
+                                     "core",
+                                     "vcodec0_core";
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mmss_noc MASTER_VIDEO QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                       interconnect-names = "cpu-cfg",
+                                            "video-mem";
+
+                       memory-region = <&video_mem>;
+
+                       resets = <&gcc GCC_VIDEO_AXI0_CLK_ARES>,
+                                <&videocc VIDEO_CC_XO_CLK_ARES>,
+                                <&videocc VIDEO_CC_MVS0C_CLK_ARES>;
+                       reset-names = "bus",
+                                     "xo",
+                                     "core";
+
+                       iommus = <&apps_smmu 0x1940 0>,
+                                <&apps_smmu 0x1947 0>;
+
+                       dma-coherent;
+
+                       /*
+                        * IRIS firmware is signed by vendors, only
+                        * enable in boards where the proper signed firmware
+                        * is available.
+                        */
+                       status = "disabled";
+
+                       iris_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-196000000 {
+                                       opp-hz = /bits/ 64 <196000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs_d1>,
+                                                       <&rpmhpd_opp_low_svs_d1>;
+                               };
+
+                               opp-300000000 {
+                                       opp-hz = /bits/ 64 <300000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>,
+                                                       <&rpmhpd_opp_low_svs>;
+                               };
+
+                               opp-380000000 {
+                                       opp-hz = /bits/ 64 <380000000>;
+                                       required-opps = <&rpmhpd_opp_svs>,
+                                                       <&rpmhpd_opp_svs>;
+                               };
+
+                               opp-435000000 {
+                                       opp-hz = /bits/ 64 <435000000>;
+                                       required-opps = <&rpmhpd_opp_svs_l1>,
+                                                       <&rpmhpd_opp_svs_l1>;
+                               };
+
+                               opp-480000000 {
+                                       opp-hz = /bits/ 64 <480000000>;
+                                       required-opps = <&rpmhpd_opp_nom>,
+                                                       <&rpmhpd_opp_nom>;
+                               };
+
+                               opp-533333334 {
+                                       opp-hz = /bits/ 64 <533333334>;
+                                       required-opps = <&rpmhpd_opp_turbo>,
+                                                       <&rpmhpd_opp_turbo>;
+                               };
+                       };
+               };
+
                videocc: clock-controller@aaf0000 {
                        compatible = "qcom,sm8650-videocc";
                        reg = <0 0x0aaf0000 0 0x10000>;
                sram@c3f0000 {
                        compatible = "qcom,rpmh-stats";
                        reg = <0 0x0c3f0000 0 0x400>;
+                       qcom,qmp = <&aoss_qmp>;
                };
 
                spmi_bus: spmi@c400000 {
                        compatible = "qcom,rpmh-rsc";
                        reg = <0 0x17a00000 0 0x10000>,
                              <0 0x17a10000 0 0x10000>,
-                             <0 0x17a20000 0 0x10000>,
-                             <0 0x17a30000 0 0x10000>;
+                             <0 0x17a20000 0 0x10000>;
                        reg-names = "drv-0",
                                    "drv-1",
                                    "drv-2";
index 72f081a890dfe49bfbee5e91b9e51da53b9d8baf..75cfbb510be57a1ab8cb3d870b5c34d3baa53c70 100644 (file)
                serial0 = &uart7;
        };
 
+       wcd939x: audio-codec {
+               compatible = "qcom,wcd9395-codec", "qcom,wcd9390-codec";
+
+               pinctrl-0 = <&wcd_default>;
+               pinctrl-names = "default";
+
+               qcom,micbias1-microvolt = <1800000>;
+               qcom,micbias2-microvolt = <1800000>;
+               qcom,micbias3-microvolt = <1800000>;
+               qcom,micbias4-microvolt = <1800000>;
+               qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+               qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+               qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+               qcom,rx-device = <&wcd_rx>;
+               qcom,tx-device = <&wcd_tx>;
+
+               reset-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
+
+               vdd-buck-supply = <&vreg_l15b_1p8>;
+               vdd-rxtx-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l15b_1p8>;
+               vdd-mic-bias-supply = <&vreg_bob1>;
+               vdd-px-supply = <&vreg_l2i_1p2>;
+
+               #sound-dai-cells = <1>;
+       };
+
        chosen {
                stdout-path = "serial0:115200n8";
        };
                };
        };
 
+       sound {
+               compatible = "qcom,sm8750-sndcard", "qcom,sm8450-sndcard";
+               model = "SM8750-MTP";
+               audio-routing = "SpkrLeft IN", "WSA_SPK1 OUT",
+                               "SpkrRight IN", "WSA_SPK2 OUT",
+                               "IN1_HPHL", "HPHL_OUT",
+                               "IN2_HPHR", "HPHR_OUT",
+                               "AMIC2", "MIC BIAS2",
+                               "VA DMIC0", "MIC BIAS3", /* MIC4 on schematics */
+                               "VA DMIC1", "MIC BIAS3", /* MIC1 on schematics */
+                               "VA DMIC2", "MIC BIAS1",
+                               "VA DMIC3", "MIC BIAS1",
+                               "VA DMIC0", "VA MIC BIAS3",
+                               "VA DMIC1", "VA MIC BIAS3",
+                               "VA DMIC2", "VA MIC BIAS1",
+                               "VA DMIC3", "VA MIC BIAS1",
+                               "TX SWR_INPUT1", "ADC2_OUTPUT";
+
+               wcd-playback-dai-link {
+                       link-name = "WCD Playback";
+
+                       codec {
+                               sound-dai = <&wcd939x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wcd-capture-dai-link {
+                       link-name = "WCD Capture";
+
+                       codec {
+                               sound-dai = <&wcd939x 1>, <&swr2 0>, <&lpass_txmacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wsa-dai-link {
+                       link-name = "WSA Playback";
+
+                       codec {
+                               sound-dai = <&left_spkr>, <&right_spkr>, <&swr0 0>, <&lpass_wsamacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               va-dai-link {
+                       link-name = "VA Capture";
+
+                       codec {
+                               sound-dai = <&lpass_vamacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+       };
+
        vph_pwr: vph-pwr-regulator {
                compatible = "regulator-fixed";
 
        };
 };
 
+&lpass_vamacro {
+       pinctrl-0 = <&dmic01_default>, <&dmic23_default>;
+       pinctrl-names = "default";
+
+       vdd-micb-supply = <&vreg_l1b_1p8>;
+       qcom,dmic-sample-rate = <4800000>;
+};
+
 &pm8550_flash {
        status = "okay";
 
        status = "fail";
 };
 
+&swr0 {
+       status = "okay";
+
+       /* WSA883x, left/front speaker */
+       left_spkr: speaker@0,1 {
+               compatible = "sdw10217020200";
+               reg = <0 1>;
+               pinctrl-0 = <&spkr_0_sd_n_active>;
+               pinctrl-names = "default";
+               powerdown-gpios = <&lpass_tlmm 17 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "SpkrLeft";
+               #thermal-sensor-cells = <0>;
+               vdd-supply = <&vreg_l15b_1p8>;
+       };
+
+       /* WSA883x, right/back speaker */
+       right_spkr: speaker@0,2 {
+               compatible = "sdw10217020200";
+               reg = <0 2>;
+               pinctrl-0 = <&spkr_1_sd_n_active>;
+               pinctrl-names = "default";
+               powerdown-gpios = <&lpass_tlmm 18 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "SpkrRight";
+               #thermal-sensor-cells = <0>;
+               vdd-supply = <&vreg_l15b_1p8>;
+       };
+};
+
+&swr1 {
+       status = "okay";
+
+       /* WCD9395 RX */
+       wcd_rx: codec@0,4 {
+               compatible = "sdw20217010e00";
+               reg = <0 4>;
+
+               /*
+                * WCD9395 RX Port 1 (HPH_L/R)      <=> SWR1 Port 1 (HPH_L/R)
+                * WCD9395 RX Port 2 (CLSH)         <=> SWR1 Port 2 (CLSH)
+                * WCD9395 RX Port 3 (COMP_L/R)     <=> SWR1 Port 3 (COMP_L/R)
+                * WCD9395 RX Port 4 (LO)           <=> SWR1 Port 4 (LO)
+                * WCD9395 RX Port 5 (DSD_L/R)      <=> SWR1 Port 5 (DSD_L/R)
+                * WCD9395 RX Port 6 (HIFI_PCM_L/R) <=> SWR1 Port 9 (HIFI_PCM_L/R)
+                */
+               qcom,rx-port-mapping = <1 2 3 4 5 9>;
+       };
+};
+
+&swr2 {
+       status = "okay";
+
+       /* WCD9395 TX */
+       wcd_tx: codec@0,3 {
+               compatible = "sdw20217010e00";
+               reg = <0 3>;
+
+               /*
+                * WCD9395 TX Port 1 (ADC1,2,3,4)         <=> SWR2 Port 2 (TX SWR_INPUT 0,1,2,3)
+                * WCD9395 TX Port 2 (ADC3,4 & DMIC0,1)   <=> SWR2 Port 2 (TX SWR_INPUT 0,1,2,3)
+                * WCD9395 TX Port 3 (DMIC0,1,2,3 & MBHC) <=> SWR2 Port 3 (TX SWR_INPUT 4,5,6,7)
+                * WCD9395 TX Port 4 (DMIC4,5,6,7)        <=> SWR2 Port 4 (TX SWR_INPUT 8,9,10,11)
+                */
+               qcom,tx-port-mapping = <2 2 3 4>;
+       };
+};
+
 &tlmm {
        /* reserved for secure world */
        gpio-reserved-ranges = <36 4>, <74 1>;
 &uart7 {
        status = "okay";
 };
+
+/* Pinctrl */
+&lpass_tlmm {
+       spkr_0_sd_n_active: spkr-0-sd-n-active-state {
+               pins = "gpio17";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+
+       spkr_1_sd_n_active: spkr-1-sd-n-active-state {
+               pins = "gpio18";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+};
+
+&tlmm {
+       wcd_default: wcd-reset-n-active-state {
+               pins = "gpio101";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+};
+
+&ufs_mem_phy {
+       vdda-phy-supply = <&vreg_l1j_0p91>;
+       vdda-pll-supply = <&vreg_l3g_1p2>;
+
+       status = "okay";
+};
+
+&ufs_mem_hc {
+       reset-gpios = <&tlmm 215 GPIO_ACTIVE_LOW>;
+
+       vcc-supply = <&vreg_l17b_2p5>;
+       vcc-max-microamp = <1300000>;
+       vccq-supply = <&vreg_l1d_1p2>;
+       vccq-max-microamp = <1200000>;
+
+       status = "okay";
+};
index 840a6d8f8a24670a01376f8fce511da222159016..13c7b9664c89cffb68a1f941c16b30074816af8b 100644 (file)
                serial0 = &uart7;
        };
 
+       wcd939x: audio-codec {
+               compatible = "qcom,wcd9395-codec", "qcom,wcd9390-codec";
+
+               pinctrl-0 = <&wcd_default>;
+               pinctrl-names = "default";
+
+               qcom,micbias1-microvolt = <1800000>;
+               qcom,micbias2-microvolt = <1800000>;
+               qcom,micbias3-microvolt = <1800000>;
+               qcom,micbias4-microvolt = <1800000>;
+               qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+               qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+               qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+               qcom,rx-device = <&wcd_rx>;
+               qcom,tx-device = <&wcd_tx>;
+
+               reset-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
+
+               vdd-buck-supply = <&vreg_l15b_1p8>;
+               vdd-rxtx-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l15b_1p8>;
+               vdd-mic-bias-supply = <&vreg_bob1>;
+               /*
+                * Mismatch with schematics - downstream DTS has L15B at 1.8 V,
+                * schematics L2I at 1.2 V
+                */
+               vdd-px-supply = <&vreg_l15b_1p8>;
+
+               #sound-dai-cells = <1>;
+       };
+
        chosen {
                stdout-path = "serial0:115200n8";
        };
                };
        };
 
+       sound {
+               compatible = "qcom,sm8750-sndcard", "qcom,sm8450-sndcard";
+               model = "SM8750-QRD";
+               audio-routing = "SpkrLeft IN", "WSA_SPK1 OUT",
+                               "SpkrRight IN", "WSA_SPK2 OUT",
+                               "IN1_HPHL", "HPHL_OUT",
+                               "IN2_HPHR", "HPHR_OUT",
+                               "AMIC1", "MIC BIAS1",
+                               "AMIC2", "MIC BIAS2",
+                               "AMIC3", "MIC BIAS3",
+                               "AMIC4", "MIC BIAS3",
+                               "AMIC5", "MIC BIAS4",
+                               "TX SWR_INPUT0", "ADC1_OUTPUT",
+                               "TX SWR_INPUT1", "ADC2_OUTPUT",
+                               "TX SWR_INPUT2", "ADC3_OUTPUT",
+                               "TX SWR_INPUT3", "ADC4_OUTPUT";
+
+               wcd-playback-dai-link {
+                       link-name = "WCD Playback";
+
+                       codec {
+                               sound-dai = <&wcd939x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wcd-capture-dai-link {
+                       link-name = "WCD Capture";
+
+                       codec {
+                               sound-dai = <&wcd939x 1>, <&swr2 0>, <&lpass_txmacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wsa-dai-link {
+                       link-name = "WSA Playback";
+
+                       codec {
+                               sound-dai = <&north_spkr>, <&south_spkr>, <&swr0 0>, <&lpass_wsamacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               va-dai-link {
+                       link-name = "VA Capture";
+
+                       codec {
+                               sound-dai = <&lpass_vamacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+       };
+
        vph_pwr: vph-pwr-regulator {
                compatible = "regulator-fixed";
 
        status = "okay";
 };
 
+&swr0 {
+       status = "okay";
+
+       /* WSA8845, Speaker North */
+       north_spkr: speaker@0,0 {
+               compatible = "sdw20217020400";
+               reg = <0 0>;
+               pinctrl-0 = <&spkr_0_sd_n_active>;
+               pinctrl-names = "default";
+               powerdown-gpios = <&tlmm 76 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "SpkrLeft";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l2i_1p2>;
+
+               /*
+                * WSA8845 Port 1 (DAC)     <=> SWR0 Port 1 (SPKR_L)
+                * WSA8845 Port 2 (COMP)    <=> SWR0 Port 2 (SPKR_L_COMP)
+                * WSA8845 Port 3 (BOOST)   <=> SWR0 Port 3 (SPKR_L_BOOST)
+                * WSA8845 Port 4 (PBR)     <=> SWR0 Port 7 (PBR)
+                * WSA8845 Port 5 (VISENSE) <=> SWR0 Port 10 (SPKR_L_VI)
+                * WSA8845 Port 6 (CPS)     <=> SWR0 Port 13 (CPS)
+                */
+               qcom,port-mapping = <1 2 3 7 10 13>;
+       };
+
+       /* WSA8845, Speaker South */
+       south_spkr: speaker@0,1 {
+               compatible = "sdw20217020400";
+               reg = <0 1>;
+               pinctrl-0 = <&spkr_1_sd_n_active>;
+               pinctrl-names = "default";
+               powerdown-gpios = <&tlmm 77 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "SpkrRight";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l2i_1p2>;
+
+               /*
+                * WSA8845 Port 1 (DAC)     <=> SWR0 Port 4 (SPKR_R)
+                * WSA8845 Port 2 (COMP)    <=> SWR0 Port 5 (SPKR_R_COMP)
+                * WSA8845 Port 3 (BOOST)   <=> SWR0 Port 6 (SPKR_R_BOOST)
+                * WSA8845 Port 4 (PBR)     <=> SWR0 Port 7 (PBR)
+                * WSA8845 Port 5 (VISENSE) <=> SWR0 Port 11 (SPKR_R_VI)
+                * WSA8845 Port 6 (CPS)     <=> SWR0 Port 13 (CPS)
+                */
+               qcom,port-mapping = <4 5 6 7 11 13>;
+       };
+};
+
+&swr1 {
+       status = "okay";
+
+       /* WCD9395 RX */
+       wcd_rx: codec@0,4 {
+               compatible = "sdw20217010e00";
+               reg = <0 4>;
+
+               /*
+                * WCD9395 RX Port 1 (HPH_L/R)      <=> SWR1 Port 1 (HPH_L/R)
+                * WCD9395 RX Port 2 (CLSH)         <=> SWR1 Port 2 (CLSH)
+                * WCD9395 RX Port 3 (COMP_L/R)     <=> SWR1 Port 3 (COMP_L/R)
+                * WCD9395 RX Port 4 (LO)           <=> SWR1 Port 4 (LO)
+                * WCD9395 RX Port 5 (DSD_L/R)      <=> SWR1 Port 5 (DSD_L/R)
+                * WCD9395 RX Port 6 (HIFI_PCM_L/R) <=> SWR1 Port 9 (HIFI_PCM_L/R)
+                */
+               qcom,rx-port-mapping = <1 2 3 4 5 9>;
+       };
+};
+
+&swr2 {
+       status = "okay";
+
+       /* WCD9395 TX */
+       wcd_tx: codec@0,3 {
+               compatible = "sdw20217010e00";
+               reg = <0 3>;
+
+               /*
+                * WCD9395 TX Port 1 (ADC1,2,3,4)         <=> SWR2 Port 2 (TX SWR_INPUT 0,1,2,3)
+                * WCD9395 TX Port 2 (ADC3,4 & DMIC0,1)   <=> SWR2 Port 2 (TX SWR_INPUT 0,1,2,3)
+                * WCD9395 TX Port 3 (DMIC0,1,2,3 & MBHC) <=> SWR2 Port 3 (TX SWR_INPUT 4,5,6,7)
+                * WCD9395 TX Port 4 (DMIC4,5,6,7)        <=> SWR2 Port 4 (TX SWR_INPUT 8,9,10,11)
+                */
+               qcom,tx-port-mapping = <2 2 3 4>;
+       };
+};
+
 &tlmm {
        /* reserved for secure world */
        gpio-reserved-ranges = <36 4>, <74 1>;
+
+       spkr_0_sd_n_active: spkr-0-sd-n-active-state {
+               pins = "gpio76";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+
+       spkr_1_sd_n_active: spkr-1-sd-n-active-state {
+               pins = "gpio77";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+
+       wcd_default: wcd-reset-n-active-state {
+               pins = "gpio101";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
 };
 
 &uart7 {
        status = "okay";
 };
+
+&ufs_mem_phy {
+       vdda-phy-supply = <&vreg_l1j_0p91>;
+       vdda-pll-supply = <&vreg_l3g_1p2>;
+
+       status = "okay";
+};
+
+&ufs_mem_hc {
+       reset-gpios = <&tlmm 215 GPIO_ACTIVE_LOW>;
+
+       vcc-supply = <&vreg_l17b_2p5>;
+       vcc-max-microamp = <1300000>;
+       vccq-supply = <&vreg_l1d_1p2>;
+       vccq-max-microamp = <1200000>;
+
+       status = "okay";
+};
index 980ba1ca23c487b9225b73872889f02c2611e68e..4643705021c6ca095a16d8d7cc3adac920b21e82 100644 (file)
@@ -7,6 +7,7 @@
 #include <dt-bindings/clock/qcom,sm8750-gcc.h>
 #include <dt-bindings/clock/qcom,sm8750-tcsr.h>
 #include <dt-bindings/dma/qcom-gpi.h>
+#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interconnect/qcom,icc.h>
 #include <dt-bindings/interconnect/qcom,sm8750-rpmh.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
                                exit-latency-us = <130>;
                                min-residency-us = <686>;
                        };
-
                };
 
                domain-idle-states {
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
-
                                pinctrl-0 = <&qup_uart7_default>;
                                pinctrl-names = "default";
 
                        #interconnect-cells = <2>;
                        clocks = <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
                                 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>;
-
                };
 
                aggre1_noc: interconnect@16e0000 {
                        #interconnect-cells = <2>;
                        clocks = <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
                                 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>;
-
                };
 
                aggre2_noc: interconnect@1700000 {
                        #sound-dai-cells = <1>;
                };
 
+               swr3: soundwire@6ab0000 {
+                       compatible = "qcom,soundwire-v2.1.0", "qcom,soundwire-v2.0.0";
+                       reg = <0x0 0x06ab0000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&lpass_wsa2macro>;
+                       clock-names = "iface";
+                       label = "WSA2";
+
+                       pinctrl-0 = <&wsa2_swr_active>;
+                       pinctrl-names = "default";
+
+                       qcom,din-ports = <4>;
+                       qcom,dout-ports = <9>;
+
+                       qcom,ports-sinterval =          /bits/ 16 <0x07 0x1f 0x3f 0x07 0x1f 0x3f 0x18f 0x18f 0x18f 0x0f 0x0f 0xff 0x31f>;
+                       qcom,ports-offset1 =            /bits/ 8 <0x01 0x03 0x05 0x02 0x04 0x15 0x00 0x00 0x00 0x06 0x0d 0xff 0x00>;
+                       qcom,ports-offset2 =            /bits/ 8 <0xff 0x07 0x1f 0xff 0x07 0x1f 0xff 0xff 0xff 0xff 0xff 0xff 0xff>;
+                       qcom,ports-hstart =             /bits/ 8 <0xff 0xff 0xff 0xff 0xff 0xff 0x08 0x0e 0x0e 0xff 0xff 0xff 0x0f>;
+                       qcom,ports-hstop =              /bits/ 8 <0xff 0xff 0xff 0xff 0xff 0xff 0x08 0x0e 0x0e 0xff 0xff 0xff 0x0f>;
+                       qcom,ports-word-length =        /bits/ 8 <0xff 0xff 0xff 0xff 0xff 0xff 0x08 0x0f 0x0f 0x00 0xff 0xff 0x18>;
+                       qcom,ports-block-pack-mode =    /bits/ 8 <0x00 0x01 0x01 0x00 0x01 0x01 0x00 0x01 0x01 0x01 0x01 0x00 0x00>;
+                       qcom,ports-block-group-count =  /bits/ 8 <0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00 0x00 0xff 0xff 0xff 0xff>;
+                       qcom,ports-lane-control =       /bits/ 8 <0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00 0x00 0xff 0xff 0xff 0xff>;
+
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+                       #sound-dai-cells = <1>;
+                       status = "disabled";
+               };
+
                lpass_rxmacro: codec@6ac0000 {
                        compatible = "qcom,sm8750-lpass-rx-macro", "qcom,sm8550-lpass-rx-macro";
                        reg = <0x0 0x06ac0000 0x0 0x1000>;
                        #sound-dai-cells = <1>;
                };
 
+               swr1: soundwire@6ad0000 {
+                       compatible = "qcom,soundwire-v2.1.0", "qcom,soundwire-v2.0.0";
+                       reg = <0x0 0x06ad0000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&lpass_rxmacro>;
+                       clock-names = "iface";
+                       label = "RX";
+
+                       pinctrl-0 = <&rx_swr_active>;
+                       pinctrl-names = "default";
+
+                       qcom,din-ports = <1>;
+                       qcom,dout-ports = <11>;
+
+                       qcom,ports-sinterval =          /bits/ 16 <0x03 0x3f 0x1f 0x07 0x00 0x18f 0xff 0xff 0x31 0xff 0xff 0xff>;
+                       qcom,ports-offset1 =            /bits/ 8 <0x00 0x00 0x0b 0x01 0x00 0x00 0xff 0xff 0x00 0xff 0xff 0xff>;
+                       qcom,ports-offset2 =            /bits/ 8 <0x00 0x00 0x0b 0x00 0x00 0x00 0xff 0xff 0x00 0xff 0xff 0xff>;
+                       qcom,ports-hstart =             /bits/ 8 <0xff 0x03 0xff 0xff 0xff 0x08 0xff 0xff 0x00 0xff 0xff 0xff>;
+                       qcom,ports-hstop =              /bits/ 8 <0xff 0x06 0xff 0xff 0xff 0x08 0xff 0xff 0x0f 0xff 0xff 0xff>;
+                       qcom,ports-word-length =        /bits/ 8 <0x01 0x07 0x04 0xff 0xff 0x0f 0xff 0xff 0x18 0xff 0xff 0xff>;
+                       qcom,ports-block-pack-mode =    /bits/ 8 <0xff 0x00 0x01 0xff 0xff 0x00 0xff 0xff 0x01 0xff 0xff 0xff>;
+                       qcom,ports-block-group-count =  /bits/ 8 <0xff 0xff 0xff 0xff 0x00 0x00 0xff 0xff 0x00 0xff 0xff 0xff>;
+                       qcom,ports-lane-control =       /bits/ 8 <0x01 0x00 0x00 0x00 0x00 0x00 0xff 0xff 0x01 0xff 0xff 0xff>;
+
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+                       #sound-dai-cells = <1>;
+                       status = "disabled";
+               };
+
                lpass_txmacro: codec@6ae0000 {
                        compatible = "qcom,sm8750-lpass-tx-macro", "qcom,sm8550-lpass-tx-macro";
                        reg = <0x0 0x06ae0000 0x0 0x1000>;
                        #sound-dai-cells = <1>;
                };
 
+               swr0: soundwire@6b10000 {
+                       compatible = "qcom,soundwire-v2.1.0", "qcom,soundwire-v2.0.0";
+                       reg = <0x0 0x06b10000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&lpass_wsamacro>;
+                       clock-names = "iface";
+                       label = "WSA";
+
+                       pinctrl-0 = <&wsa_swr_active>;
+                       pinctrl-names = "default";
+
+                       qcom,din-ports = <4>;
+                       qcom,dout-ports = <9>;
+
+                       qcom,ports-sinterval =          /bits/ 16 <0x07 0x1f 0x3f 0x07 0x1f 0x3f 0x18f 0x18f 0x18f 0x0f 0x0f 0xff 0x31f>;
+                       qcom,ports-offset1 =            /bits/ 8 <0x01 0x03 0x05 0x02 0x04 0x15 0x00 0x00 0x00 0x06 0x0d 0xff 0x00>;
+                       qcom,ports-offset2 =            /bits/ 8 <0xff 0x07 0x1f 0xff 0x07 0x1f 0xff 0xff 0xff 0xff 0xff 0xff 0xff>;
+                       qcom,ports-hstart =             /bits/ 8 <0xff 0xff 0xff 0xff 0xff 0xff 0x08 0x0e 0x0e 0xff 0xff 0xff 0x0f>;
+                       qcom,ports-hstop =              /bits/ 8 <0xff 0xff 0xff 0xff 0xff 0xff 0x08 0x0e 0x0e 0xff 0xff 0xff 0x0f>;
+                       qcom,ports-word-length =        /bits/ 8 <0xff 0xff 0xff 0xff 0xff 0xff 0x08 0x0f 0x0f 0x00 0xff 0xff 0x18>;
+                       qcom,ports-block-pack-mode =    /bits/ 8 <0x00 0x01 0x01 0x00 0x01 0x01 0x00 0x01 0x01 0x01 0x01 0x00 0x00>;
+                       qcom,ports-block-group-count =  /bits/ 8 <0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00 0x00 0xff 0xff 0xff 0xff>;
+                       qcom,ports-lane-control =       /bits/ 8 <0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00 0x00 0xff 0xff 0xff 0xff>;
+
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+                       #sound-dai-cells = <1>;
+                       status = "disabled";
+               };
+
                lpass_ag_noc: interconnect@7e40000 {
                        compatible = "qcom,sm8750-lpass-ag-noc";
                        reg = <0x0 0x07e40000 0x0 0xe080>;
                        #interconnect-cells = <2>;
                };
 
+               swr2: soundwire@7630000 {
+                       compatible = "qcom,soundwire-v2.1.0", "qcom,soundwire-v2.0.0";
+                       reg = <0x0 0x07630000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 761 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 785 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "core", "wakeup";
+                       clocks = <&lpass_txmacro>;
+                       clock-names = "iface";
+                       label = "TX";
+
+                       pinctrl-0 = <&tx_swr_active>;
+                       pinctrl-names = "default";
+
+                       qcom,din-ports = <4>;
+                       qcom,dout-ports = <0>;
+
+                       qcom,ports-sinterval-low =      /bits/ 8 <0x01 0x01 0x03 0x03>;
+                       qcom,ports-offset1 =            /bits/ 8 <0x00 0x00 0x01 0x01>;
+                       qcom,ports-offset2 =            /bits/ 8 <0x00 0x00 0x00 0x00>;
+                       qcom,ports-hstart =             /bits/ 8 <0xff 0xff 0xff 0xff>;
+                       qcom,ports-hstop =              /bits/ 8 <0xff 0xff 0xff 0xff>;
+                       qcom,ports-word-length =        /bits/ 8 <0xff 0xff 0xff 0xff>;
+                       qcom,ports-block-pack-mode =    /bits/ 8 <0xff 0xff 0xff 0xff>;
+                       qcom,ports-block-group-count =  /bits/ 8 <0xff 0xff 0xff 0xff>;
+                       qcom,ports-lane-control =       /bits/ 8 <0x01 0x02 0x00 0x00>;
+
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+                       #sound-dai-cells = <1>;
+                       status = "disabled";
+               };
+
                lpass_vamacro: codec@7660000 {
                        compatible = "qcom,sm8750-lpass-va-macro", "qcom,sm8550-lpass-va-macro";
                        reg = <0x0 0x07660000 0x0 0x2000>;
                sram@c3f0000 {
                        compatible = "qcom,rpmh-stats";
                        reg = <0x0 0x0c3f0000 0x0 0x400>;
+                       qcom,qmp = <&aoss_qmp>;
                };
 
                spmi_bus: spmi@c400000 {
                        };
                };
 
+               ufs_mem_phy: phy@1d80000 {
+                       compatible = "qcom,sm8750-qmp-ufs-phy";
+                       reg = <0x0 0x01d80000 0x0 0x2000>;
+
+                       clocks = <&rpmhcc RPMH_CXO_CLK>,
+                                <&gcc GCC_UFS_PHY_PHY_AUX_CLK>,
+                                <&tcsrcc TCSR_UFS_CLKREF_EN>;
+
+                       clock-names = "ref",
+                                     "ref_aux",
+                                     "qref";
+
+                       resets = <&ufs_mem_hc 0>;
+                       reset-names = "ufsphy";
+
+                       power-domains = <&gcc GCC_UFS_MEM_PHY_GDSC>;
+
+                       #clock-cells = <1>;
+                       #phy-cells = <0>;
+
+                       status = "disabled";
+               };
+
+               ufs_mem_hc: ufs@1d84000 {
+                       compatible = "qcom,sm8750-ufshc", "qcom,ufshc", "jedec,ufs-2.0";
+                       reg = <0x0 0x01d84000 0x0 0x3000>;
+
+                       interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_UFS_PHY_AXI_CLK>,
+                                <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
+                                <&gcc GCC_UFS_PHY_AHB_CLK>,
+                                <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>,
+                                <&rpmhcc RPMH_LN_BB_CLK3>,
+                                <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>,
+                                <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>,
+                                <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>;
+                       clock-names = "core_clk",
+                                     "bus_aggr_clk",
+                                     "iface_clk",
+                                     "core_clk_unipro",
+                                     "ref_clk",
+                                     "tx_lane0_sync_clk",
+                                     "rx_lane0_sync_clk",
+                                     "rx_lane1_sync_clk";
+
+                       operating-points-v2 = <&ufs_opp_table>;
+
+                       resets = <&gcc GCC_UFS_PHY_BCR>;
+                       reset-names = "rst";
+
+                       interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
+                       interconnect-names = "ufs-ddr",
+                                            "cpu-ufs";
+
+                       power-domains = <&gcc GCC_UFS_PHY_GDSC>;
+                       required-opps = <&rpmhpd_opp_nom>;
+
+                       iommus = <&apps_smmu 0x60 0>;
+                       dma-coherent;
+
+                       lanes-per-direction = <2>;
+
+                       phys = <&ufs_mem_phy>;
+                       phy-names = "ufsphy";
+
+                       #reset-cells = <1>;
+
+                       status = "disabled";
+
+                       ufs_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-100000000 {
+                                       opp-hz = /bits/ 64 <100000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <100000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                               };
+
+                               opp-403000000 {
+                                       opp-hz = /bits/ 64 <403000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <403000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                               };
+                       };
+               };
+
                apps_rsc: rsc@16500000 {
                        compatible = "qcom,rpmh-rsc";
                        reg = <0x0 0x16500000 0x0 0x10000>,
diff --git a/src/arm64/qcom/x1-asus-zenbook-a14.dtsi b/src/arm64/qcom/x1-asus-zenbook-a14.dtsi
new file mode 100644 (file)
index 0000000..c771fd1
--- /dev/null
@@ -0,0 +1,1496 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025 Aleksandrs Vinarskis <alex.vinarskis@gmail.com>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+
+#include "x1e80100-pmics.dtsi"
+
+/ {
+       model = "ASUS Zenbook A14";
+       chassis-type = "laptop";
+
+       aliases {
+               serial0 = &uart21;
+               serial1 = &uart14;
+       };
+
+       wcd938x: audio-codec {
+               compatible = "qcom,wcd9385-codec";
+
+               pinctrl-0 = <&wcd_default>;
+               pinctrl-names = "default";
+
+               qcom,micbias1-microvolt = <1800000>;
+               qcom,micbias2-microvolt = <1800000>;
+               qcom,micbias3-microvolt = <1800000>;
+               qcom,micbias4-microvolt = <1800000>;
+               qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+               qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+               qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+               qcom,rx-device = <&wcd_rx>;
+               qcom,tx-device = <&wcd_tx>;
+
+               reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>;
+
+               vdd-buck-supply = <&vreg_l15b_1p8>;
+               vdd-rxtx-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l15b_1p8>;
+               vdd-mic-bias-supply = <&vreg_bob1>;
+
+               #sound-dai-cells = <1>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&hall_int_n_default>;
+               pinctrl-names = "default";
+
+               switch-lid {
+                       label = "lid";
+                       gpios = <&tlmm 92 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       wakeup-source;
+                       wakeup-event-action = <EV_ACT_DEASSERTED>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               pinctrl-0 = <&cam_indicator_en>;
+               pinctrl-names = "default";
+
+               led-camera-indicator {
+                       label = "white:camera-indicator";
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_WHITE>;
+                       gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "none";
+                       default-state = "off";
+                       /* Reuse as a panic indicator until we get a "camera on" trigger */
+                       panic-indicator;
+               };
+       };
+
+       pmic-glink {
+               compatible = "qcom,x1e80100-pmic-glink",
+                            "qcom,sm8550-pmic-glink",
+                            "qcom,pmic-glink";
+               orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>,
+                                   <&tlmm 123 GPIO_ACTIVE_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* Left-side display-adjacent port */
+               connector@0 {
+                       compatible = "usb-c-connector";
+                       reg = <0>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_ss0_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss0_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_ss0_ss_in: endpoint {
+                                               remote-endpoint = <&retimer_ss0_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss0_con_sbu_in: endpoint {
+                                               remote-endpoint = <&retimer_ss0_con_sbu_out>;
+                                       };
+                               };
+                       };
+               };
+
+               /* Left-side user-adjacent port */
+               connector@1 {
+                       compatible = "usb-c-connector";
+                       reg = <1>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_ss1_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss1_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_ss1_ss_in: endpoint {
+                                               remote-endpoint = <&retimer_ss1_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss1_con_sbu_in: endpoint {
+                                               remote-endpoint = <&retimer_ss1_con_sbu_out>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       reserved-memory {
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       size = <0x0 0x8000000>;
+                       reusable;
+                       linux,cma-default;
+               };
+       };
+
+       sound {
+               compatible = "qcom,x1e80100-sndcard";
+               model = "X1E80100-ASUS-Zenbook-A14";
+               audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT",
+                               "SpkrRight IN", "WSA WSA_SPK2 OUT",
+                               "IN1_HPHL", "HPHL_OUT",
+                               "IN2_HPHR", "HPHR_OUT",
+                               "AMIC2", "MIC BIAS2",
+                               "VA DMIC0", "MIC BIAS1",
+                               "VA DMIC1", "MIC BIAS1",
+                               "VA DMIC0", "VA MIC BIAS1",
+                               "VA DMIC1", "VA MIC BIAS1",
+                               "TX SWR_INPUT1", "ADC2_OUTPUT";
+
+               va-dai-link {
+                       link-name = "VA Capture";
+
+                       codec {
+                               sound-dai = <&lpass_vamacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wcd-capture-dai-link {
+                       link-name = "WCD Capture";
+
+                       codec {
+                               sound-dai = <&wcd938x 1>, <&swr2 1>,
+                                           <&lpass_txmacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wcd-playback-dai-link {
+                       link-name = "WCD Playback";
+
+                       codec {
+                               sound-dai = <&wcd938x 0>, <&swr1 0>,
+                                           <&lpass_rxmacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wsa-dai-link {
+                       link-name = "WSA Playback";
+
+                       codec {
+                               sound-dai = <&left_spkr>, <&right_spkr>,
+                                           <&swr0 0>, <&lpass_wsamacro 0>;
+                       };
+
+                       cpu {
+                               sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+       };
+
+       vreg_edp_3p3: regulator-edp-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_EDP_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&edp_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_misc_3p3: regulator-misc-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_MISC_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pm8550ve_8_gpios 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&misc_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       vreg_nvme: regulator-nvme {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_NVME_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 18 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&nvme_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_1P15";
+               regulator-min-microvolt = <1150000>;
+               regulator-max-microvolt = <1150000>;
+
+               gpio = <&pmc8380_5_gpios 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_pwr_1p15_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_1p8: regulator-rtmr0-1p8 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_1P8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&pm8550ve_9_gpios 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_1p8_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_3p3: regulator-rtmr0-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_1p15: regulator-rtmr1-1p15 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_1P15";
+               regulator-min-microvolt = <1150000>;
+               regulator-max-microvolt = <1150000>;
+
+               gpio = <&tlmm 188 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_1p15_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_1p8: regulator-rtmr1-1p8 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_1P8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 175 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_1p8_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_3p3: regulator-rtmr1-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 186 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_vph_pwr: regulator-vph-pwr {
+               compatible = "regulator-fixed";
+
+               regulator-name = "vph_pwr";
+               regulator-min-microvolt = <3700000>;
+               regulator-max-microvolt = <3700000>;
+
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vreg_wcn_0p95: regulator-wcn-0p95 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_0P95";
+               regulator-min-microvolt = <950000>;
+               regulator-max-microvolt = <950000>;
+
+               vin-supply = <&vreg_wcn_3p3>;
+       };
+
+       vreg_wcn_1p9: regulator-wcn-1p9 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_1P9";
+               regulator-min-microvolt = <1900000>;
+               regulator-max-microvolt = <1900000>;
+
+               vin-supply = <&vreg_wcn_3p3>;
+       };
+
+       vreg_wcn_3p3: regulator-wcn-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&wcn_sw_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+};
+
+&apps_rsc {
+       regulators-0 {
+               compatible = "qcom,pm8550-rpmh-regulators";
+               qcom,pmic-id = "b";
+
+               vdd-bob1-supply = <&vreg_vph_pwr>;
+               vdd-bob2-supply = <&vreg_vph_pwr>;
+               vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
+               vdd-l2-l13-l14-supply = <&vreg_bob1>;
+               vdd-l5-l16-supply = <&vreg_bob1>;
+               vdd-l6-l7-supply = <&vreg_bob2>;
+               vdd-l8-l9-supply = <&vreg_bob1>;
+               vdd-l12-supply = <&vreg_s5j_1p2>;
+               vdd-l15-supply = <&vreg_s4c_1p8>;
+               vdd-l17-supply = <&vreg_bob2>;
+
+               vreg_bob1: bob1 {
+                       regulator-name = "vreg_bob1";
+                       regulator-min-microvolt = <3008000>;
+                       regulator-max-microvolt = <3960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_bob2: bob2 {
+                       regulator-name = "vreg_bob2";
+                       regulator-min-microvolt = <2504000>;
+                       regulator-max-microvolt = <3008000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1b_1p8: ldo1 {
+                       regulator-name = "vreg_l1b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2b_3p0: ldo2 {
+                       regulator-name = "vreg_l2b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l4b_1p8: ldo4 {
+                       regulator-name = "vreg_l4b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l6b_1p8: ldo6 {
+                       regulator-name = "vreg_l6b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l8b_3p0: ldo8 {
+                       regulator-name = "vreg_l8b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l9b_2p9: ldo9 {
+                       regulator-name = "vreg_l9b_2p9";
+                       regulator-min-microvolt = <2960000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l10b_1p8: ldo10 {
+                       regulator-name = "vreg_l10b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l12b_1p2: ldo12 {
+                       regulator-name = "vreg_l12b_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_l13b_3p0: ldo13 {
+                       regulator-name = "vreg_l13b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l14b_3p0: ldo14 {
+                       regulator-name = "vreg_l14b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l15b_1p8: ldo15 {
+                       regulator-name = "vreg_l15b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_l17b_2p5: ldo17 {
+                       regulator-name = "vreg_l17b_2p5";
+                       regulator-min-microvolt = <2504000>;
+                       regulator-max-microvolt = <2504000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-1 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "c";
+
+               vdd-l1-supply = <&vreg_s5j_1p2>;
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s4-supply = <&vreg_vph_pwr>;
+
+               vreg_s4c_1p8: smps4 {
+                       regulator-name = "vreg_s4c_1p8";
+                       regulator-min-microvolt = <1856000>;
+                       regulator-max-microvolt = <2000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1c_1p2: ldo1 {
+                       regulator-name = "vreg_l1c_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2c_0p8: ldo2 {
+                       regulator-name = "vreg_l2c_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3c_0p9: ldo3 {
+                       regulator-name = "vreg_l3c_0p9";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-2 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "d";
+
+               vdd-l1-supply = <&vreg_s1f_0p7>;
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s4c_1p8>;
+               vdd-s1-supply = <&vreg_vph_pwr>;
+
+               vreg_l1d_0p8: ldo1 {
+                       regulator-name = "vreg_l1d_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2d_0p9: ldo2 {
+                       regulator-name = "vreg_l2d_0p9";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3d_1p8: ldo3 {
+                       regulator-name = "vreg_l3d_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-3 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "e";
+
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s5j_1p2>;
+
+               vreg_l2e_0p8: ldo2 {
+                       regulator-name = "vreg_l2e_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3e_1p2: ldo3 {
+                       regulator-name = "vreg_l3e_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-4 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "f";
+
+               vdd-l1-supply = <&vreg_s5j_1p2>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s5j_1p2>;
+               vdd-s1-supply = <&vreg_vph_pwr>;
+
+               vreg_s1f_0p7: smps1 {
+                       regulator-name = "vreg_s1f_0p7";
+                       regulator-min-microvolt = <700000>;
+                       regulator-max-microvolt = <1100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-6 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "i";
+
+               vdd-l1-supply = <&vreg_s4c_1p8>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s1-supply = <&vreg_vph_pwr>;
+               vdd-s2-supply = <&vreg_vph_pwr>;
+
+               vreg_s1i_0p9: smps1 {
+                       regulator-name = "vreg_s1i_0p9";
+                       regulator-min-microvolt = <900000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_s2i_1p0: smps2 {
+                       regulator-name = "vreg_s2i_1p0";
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1i_1p8: ldo1 {
+                       regulator-name = "vreg_l1i_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2i_1p2: ldo2 {
+                       regulator-name = "vreg_l2i_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3i_0p8: ldo3 {
+                       regulator-name = "vreg_l3i_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-7 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "j";
+
+               vdd-l1-supply = <&vreg_s1f_0p7>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s5-supply = <&vreg_vph_pwr>;
+
+               vreg_s5j_1p2: smps5 {
+                       regulator-name = "vreg_s5j_1p2";
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1304000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1j_0p9: ldo1 {
+                       regulator-name = "vreg_l1j_0p9";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2j_1p2: ldo2 {
+                       regulator-name = "vreg_l2j_1p2";
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1256000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3j_0p8: ldo3 {
+                       regulator-name = "vreg_l3j_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+};
+
+&i2c0 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       /* ELAN, 04F3:3315 */
+       touchpad@15 {
+               compatible = "hid-over-i2c";
+               reg = <0x15>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-0 = <&tpad_default>;
+               pinctrl-names = "default";
+
+               wakeup-source;
+       };
+};
+
+&i2c3 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       /* Left-side display-adjacent port */
+       typec-mux@8 {
+               compatible = "parade,ps8833", "parade,ps8830";
+               reg = <0x08>;
+
+               clocks = <&rpmhcc RPMH_RF_CLK3>;
+
+               vdd-supply = <&vreg_rtmr0_1p15>;
+               vdd33-supply = <&vreg_rtmr0_3p3>;
+               vdd33-cap-supply = <&vreg_rtmr0_3p3>;
+               vddar-supply = <&vreg_rtmr0_1p15>;
+               vddat-supply = <&vreg_rtmr0_1p15>;
+               vddio-supply = <&vreg_rtmr0_1p8>;
+
+               reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr0_default>;
+               pinctrl-names = "default";
+
+               retimer-switch;
+               orientation-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               retimer_ss0_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss0_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               retimer_ss0_ss_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               retimer_ss0_con_sbu_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss0_con_sbu_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c4 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       /* ASUSTeK, 0B05:4543 */
+       hdtl@17 {
+               compatible = "hid-over-i2c";
+               reg = <0x17>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 95 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-0 = <&hdtl_default>;
+               pinctrl-names = "default";
+
+               wakeup-source;
+       };
+};
+
+&i2c5 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       eusb6_repeater: redriver@4f {
+               compatible = "nxp,ptn3222";
+               reg = <0x4f>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb6_reset_n>;
+               pinctrl-names = "default";
+       };
+
+       /* EC @0x5b */
+};
+
+&i2c7 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       /* Left-side user-adjacent port */
+       typec-mux@8 {
+               compatible = "parade,ps8833", "parade,ps8830";
+               reg = <0x08>;
+
+               clocks = <&rpmhcc RPMH_RF_CLK4>;
+
+               vdd-supply = <&vreg_rtmr1_1p15>;
+               vdd33-supply = <&vreg_rtmr1_3p3>;
+               vdd33-cap-supply = <&vreg_rtmr1_3p3>;
+               vddar-supply = <&vreg_rtmr1_1p15>;
+               vddat-supply = <&vreg_rtmr1_1p15>;
+               vddio-supply = <&vreg_rtmr1_1p8>;
+
+               reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr1_default>;
+               pinctrl-names = "default";
+
+               retimer-switch;
+               orientation-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               retimer_ss1_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss1_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               retimer_ss1_ss_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               retimer_ss1_con_sbu_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss1_con_sbu_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c8 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       /* ASUSTeK, 0B05:0220 */
+       keyboard@15 {
+               compatible = "hid-over-i2c";
+               reg = <0x15>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-0 = <&kybd_default>;
+               pinctrl-names = "default";
+
+               wakeup-source;
+       };
+};
+
+&lpass_tlmm {
+       spkr_01_sd_n_active: spkr-01-sd-n-active-state {
+               pins = "gpio12";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+};
+
+&lpass_vamacro {
+       pinctrl-0 = <&dmic01_default>;
+       pinctrl-names = "default";
+
+       vdd-micb-supply = <&vreg_l1b_1p8>;
+       qcom,dmic-sample-rate = <4800000>;
+};
+
+&mdss {
+       status = "okay";
+};
+
+&mdss_dp0 {
+       status = "okay";
+};
+
+&mdss_dp0_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp1 {
+       status = "okay";
+};
+
+&mdss_dp1_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp3 {
+       /delete-property/ #sound-dai-cells;
+
+       status = "okay";
+
+       aux-bus {
+               panel {
+                       compatible = "edp-panel";
+                       enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
+                       power-supply = <&vreg_edp_3p3>;
+
+                       pinctrl-0 = <&edp_bl_en>;
+                       pinctrl-names = "default";
+
+                       port {
+                               edp_panel_in: endpoint {
+                                       remote-endpoint = <&mdss_dp3_out>;
+                               };
+                       };
+               };
+       };
+
+       ports {
+               port@1 {
+                       reg = <1>;
+
+                       mdss_dp3_out: endpoint {
+                               data-lanes = <0 1 2 3>;
+                               link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+
+                               remote-endpoint = <&edp_panel_in>;
+                       };
+               };
+       };
+};
+
+&mdss_dp3_phy {
+       vdda-phy-supply = <&vreg_l3j_0p8>;
+       vdda-pll-supply = <&vreg_l2j_1p2>;
+
+       status = "okay";
+};
+
+&pcie4 {
+       perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
+
+       pinctrl-0 = <&pcie4_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie4_phy {
+       vdda-phy-supply = <&vreg_l3i_0p8>;
+       vdda-pll-supply = <&vreg_l3e_1p2>;
+
+       status = "okay";
+};
+
+&pcie6a {
+       perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
+
+       vddpe-3v3-supply = <&vreg_nvme>;
+
+       pinctrl-0 = <&pcie6a_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie6a_phy {
+       vdda-phy-supply = <&vreg_l1d_0p8>;
+       vdda-pll-supply = <&vreg_l2j_1p2>;
+
+       status = "okay";
+};
+
+&pm8550_gpios {
+       rtmr0_default: rtmr0-reset-n-active-state {
+               pins = "gpio10";
+               function = "normal";
+               power-source = <1>;
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+
+       usb0_3p3_reg_en: usb0-3p3-reg-en-state {
+               pins = "gpio11";
+               function = "normal";
+               power-source = <1>;
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
+&pm8550ve_8_gpios {
+       misc_3p3_reg_en: misc-3p3-reg-en-state {
+               pins = "gpio6";
+               function = "normal";
+               power-source = <1>;
+               bias-disable;
+               input-disable;
+               output-enable;
+               drive-push-pull;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+       };
+};
+
+&pm8550ve_9_gpios {
+       usb0_1p8_reg_en: usb0-1p8-reg-en-state {
+               pins = "gpio8";
+               function = "normal";
+               power-source = <1>;
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
+&pmc8380_3_gpios {
+       edp_bl_en: edp-bl-en-state {
+               pins = "gpio4";
+               function = "normal";
+               power-source = <1>;
+               input-disable;
+               output-enable;
+       };
+};
+
+&pmc8380_5_gpios {
+       usb0_pwr_1p15_reg_en: usb0-pwr-1p15-reg-en-state {
+               pins = "gpio8";
+               function = "normal";
+               power-source = <1>;
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
+&qupv3_0 {
+       status = "okay";
+};
+
+&qupv3_1 {
+       status = "okay";
+};
+
+&qupv3_2 {
+       status = "okay";
+};
+
+&smb2360_0 {
+       status = "okay";
+};
+
+&smb2360_0_eusb2_repeater {
+       vdd18-supply = <&vreg_l3d_1p8>;
+       vdd3-supply = <&vreg_l2b_3p0>;
+};
+
+&smb2360_1 {
+       status = "okay";
+};
+
+&smb2360_1_eusb2_repeater {
+       vdd18-supply = <&vreg_l3d_1p8>;
+       vdd3-supply = <&vreg_l14b_3p0>;
+};
+
+&spi10 {
+       status = "disabled";
+
+       /* Unknown device */
+};
+
+&swr0 {
+       status = "okay";
+
+       pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>;
+       pinctrl-names = "default";
+
+       /* WSA8845, Left Speaker */
+       left_spkr: speaker@0,0 {
+               compatible = "sdw20217020400";
+               reg = <0 0>;
+               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "SpkrLeft";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <1 2 3 7 10 13>;
+       };
+
+       /* WSA8845, Right Speaker */
+       right_spkr: speaker@0,1 {
+               compatible = "sdw20217020400";
+               reg = <0 1>;
+               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "SpkrRight";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <4 5 6 7 11 13>;
+       };
+};
+
+&swr1 {
+       status = "okay";
+
+       /* WCD9385 RX */
+       wcd_rx: codec@0,4 {
+               compatible = "sdw20217010d00";
+               reg = <0 4>;
+               qcom,rx-port-mapping = <1 2 3 4 5>;
+       };
+};
+
+&swr2 {
+       status = "okay";
+
+       /* WCD9385 TX */
+       wcd_tx: codec@0,3 {
+               compatible = "sdw20217010d00";
+               reg = <0 3>;
+               qcom,tx-port-mapping = <2 2 3 4>;
+       };
+};
+
+&tlmm {
+       gpio-reserved-ranges = <44 4>,  /* SPI11, TZ Protected */
+                              <90 1>;  /* Unknown, TZ Protected */
+
+       cam_indicator_en: cam-indicator-en-state {
+               pins = "gpio110";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       edp_reg_en: edp-reg-en-state {
+               pins = "gpio70";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       eusb6_reset_n: eusb6-reset-n-state {
+               pins = "gpio184";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
+       hall_int_n_default: hall-int-n-state {
+               pins = "gpio92";
+               function = "gpio";
+               bias-disable;
+       };
+
+       hdtl_default: hdtl-default-state {
+               pins = "gpio95";
+               function = "gpio";
+       };
+
+       kybd_default: kybd-default-state {
+               pins = "gpio67";
+               function = "gpio";
+               bias-pull-up;
+       };
+
+       nvme_reg_en: nvme-reg-en-state {
+               pins = "gpio18";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       pcie4_default: pcie4-default-state {
+               clkreq-n-pins {
+                       pins = "gpio147";
+                       function = "pcie4_clk";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio146";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio148";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       pcie6a_default: pcie6a-default-state {
+               clkreq-n-pins {
+                       pins = "gpio153";
+                       function = "pcie6a_clk";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio152";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio154";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       rtmr1_default: rtmr1-reset-n-active-state {
+               pins = "gpio176";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       tpad_default: tpad-default-state {
+               pins = "gpio3";
+               function = "gpio";
+               bias-disable;
+       };
+
+       usb1_pwr_1p15_reg_en: usb1-pwr-1p15-reg-en-state {
+               pins = "gpio188";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb1_pwr_1p8_reg_en: usb1-pwr-1p8-reg-en-state {
+               pins = "gpio175";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb1_pwr_3p3_reg_en: usb1-pwr-3p3-reg-en-state {
+               pins = "gpio186";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       wcd_default: wcd-reset-n-active-state {
+               pins = "gpio191";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+
+       wcn_bt_en: wcn-bt-en-state {
+               pins = "gpio116";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       wcn_sw_en: wcn-sw-en-state {
+               pins = "gpio214";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       wcn_wlan_en: wcn-wlan-en-state {
+               pins = "gpio117";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-disable;
+       };
+};
+
+&uart21 {
+       compatible = "qcom,geni-debug-uart";
+
+       status = "okay";
+};
+
+&usb_1_ss0_hsphy {
+       vdd-supply = <&vreg_l3j_0p8>;
+       vdda12-supply = <&vreg_l2j_1p2>;
+
+       phys = <&smb2360_0_eusb2_repeater>;
+
+       status = "okay";
+};
+
+&usb_1_ss0_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l1j_0p9>;
+
+       status = "okay";
+};
+
+&usb_1_ss0 {
+       status = "okay";
+};
+
+&usb_1_ss0_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_1_ss0_dwc3_hs {
+       remote-endpoint = <&pmic_glink_ss0_hs_in>;
+};
+
+&usb_1_ss0_qmpphy_out {
+       remote-endpoint = <&retimer_ss0_ss_in>;
+};
+
+&usb_1_ss1_hsphy {
+       vdd-supply = <&vreg_l3j_0p8>;
+       vdda12-supply = <&vreg_l2j_1p2>;
+
+       phys = <&smb2360_1_eusb2_repeater>;
+
+       status = "okay";
+};
+
+&usb_1_ss1_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l2d_0p9>;
+
+       status = "okay";
+};
+
+&usb_1_ss1 {
+       status = "okay";
+};
+
+&usb_1_ss1_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_1_ss1_dwc3_hs {
+       remote-endpoint = <&pmic_glink_ss1_hs_in>;
+};
+
+&usb_1_ss1_qmpphy_out {
+       remote-endpoint = <&retimer_ss1_ss_in>;
+};
+
+&usb_mp {
+       status = "okay";
+};
+
+&usb_mp_hsphy0 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       status = "okay";
+};
+
+&usb_mp_hsphy1 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb6_repeater>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy0 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p9>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy1 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p9>;
+
+       status = "okay";
+};
diff --git a/src/arm64/qcom/x1e80100-asus-zenbook-a14.dts b/src/arm64/qcom/x1e80100-asus-zenbook-a14.dts
new file mode 100644 (file)
index 0000000..0d0bcc5
--- /dev/null
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025 Aleksandrs Vinarskis <alex.vinarskis@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "x1e80100.dtsi"
+#include "x1-asus-zenbook-a14.dtsi"
+
+/ {
+       model = "ASUS Zenbook A14 (UX3407RA)";
+       compatible = "asus,zenbook-a14-ux3407ra", "qcom,x1e80100";
+};
+
+&gpu {
+       status = "okay";
+};
+
+&gpu_zap_shader {
+       firmware-name = "qcom/x1e80100/ASUSTeK/zenbook-a14/qcdxkmsuc8380.mbn";
+};
+
+&remoteproc_adsp {
+       firmware-name = "qcom/x1e80100/ASUSTeK/zenbook-a14/qcadsp8380.mbn",
+                       "qcom/x1e80100/ASUSTeK/zenbook-a14/adsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/x1e80100/ASUSTeK/zenbook-a14/qccdsp8380.mbn",
+                       "qcom/x1e80100/ASUSTeK/zenbook-a14/cdsp_dtbs.elf";
+
+       status = "okay";
+};
index 967f6dba0878b51a985fd7c9570b8c4e71afe57d..fd00d1bf12e165e9ffa0848ba93110348de9a9dd 100644 (file)
@@ -22,6 +22,7 @@
 
        aliases {
                serial0 = &uart21;
+               serial1 = &uart14;
        };
 
        gpio-keys {
                regulator-always-on;
                regulator-boot-on;
        };
+
+       vreg_wcn_0p95: regulator-wcn-0p95 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_0P95";
+               regulator-min-microvolt = <950000>;
+               regulator-max-microvolt = <950000>;
+
+               vin-supply = <&vreg_wcn_3p3>;
+       };
+
+       vreg_wcn_1p9: regulator-wcn-1p9 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_1P9";
+               regulator-min-microvolt = <1900000>;
+               regulator-max-microvolt = <1900000>;
+
+               vin-supply = <&vreg_wcn_3p3>;
+       };
+
+       vreg_wcn_3p3: regulator-wcn-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&wcn_sw_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       wcn7850-pmu {
+               compatible = "qcom,wcn7850-pmu";
+
+               vdd-supply = <&vreg_wcn_0p95>;
+               vddio-supply = <&vreg_l15b_1p8>;
+               vddaon-supply = <&vreg_wcn_0p95>;
+               vdddig-supply = <&vreg_wcn_0p95>;
+               vddrfa1p2-supply = <&vreg_wcn_1p9>;
+               vddrfa1p8-supply = <&vreg_wcn_1p9>;
+
+               wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
+               bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&wcn_wlan_bt_en>;
+               pinctrl-names = "default";
+
+               regulators {
+                       vreg_pmu_rfa_cmn: ldo0 {
+                               regulator-name = "vreg_pmu_rfa_cmn";
+                       };
+
+                       vreg_pmu_aon_0p59: ldo1 {
+                               regulator-name = "vreg_pmu_aon_0p59";
+                       };
+
+                       vreg_pmu_wlcx_0p8: ldo2 {
+                               regulator-name = "vreg_pmu_wlcx_0p8";
+                       };
+
+                       vreg_pmu_wlmx_0p85: ldo3 {
+                               regulator-name = "vreg_pmu_wlmx_0p85";
+                       };
+
+                       vreg_pmu_btcmx_0p85: ldo4 {
+                               regulator-name = "vreg_pmu_btcmx_0p85";
+                       };
+
+                       vreg_pmu_rfa_0p8: ldo5 {
+                               regulator-name = "vreg_pmu_rfa_0p8";
+                       };
+
+                       vreg_pmu_rfa_1p2: ldo6 {
+                               regulator-name = "vreg_pmu_rfa_1p2";
+                       };
+
+                       vreg_pmu_rfa_1p8: ldo7 {
+                               regulator-name = "vreg_pmu_rfa_1p8";
+                       };
+
+                       vreg_pmu_pcie_0p9: ldo8 {
+                               regulator-name = "vreg_pmu_pcie_0p9";
+                       };
+
+                       vreg_pmu_pcie_1p8: ldo9 {
+                               regulator-name = "vreg_pmu_pcie_1p8";
+                       };
+               };
+       };
 };
 
 &apps_rsc {
 
 &i2c9 {
        clock-frequency = <400000>;
-       status = "disabled";
-       /* USB3 retimer device @0x4f */
+       status = "okay";
+
+       eusb6_repeater: redriver@4f {
+               compatible = "nxp,ptn3222";
+               reg = <0x4f>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb6_reset_n>;
+               pinctrl-names = "default";
+       };
 };
 
 &i2c17 {
        status = "okay";
 };
 
+&pcie4_port0 {
+       wifi@0 {
+               compatible = "pci17cb,1107";
+               reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p59>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+               vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+               vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+       };
+};
+
 &pcie6a {
        perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
        wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
                bias-disable;
        };
 
+       eusb6_reset_n: eusb6-reset-n-state {
+               pins = "gpio184";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
        hall_int_n_default: hall-int-n-state {
                pins = "gpio92";
                function = "gpio";
                        drive-strength = <2>;
                };
        };
+
+       wcn_sw_en: wcn-sw-en-state {
+               pins = "gpio214";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       wcn_wlan_bt_en: wcn-wlan-bt-en-state {
+               pins = "gpio116", "gpio117";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+};
+
+&uart14 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,wcn7850-bt";
+               max-speed = <3200000>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p59>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+       };
 };
 
 &uart21 {
 &usb_1_ss1_qmpphy_out {
        remote-endpoint = <&retimer_ss1_ss_in>;
 };
+
+&usb_mp {
+       status = "okay";
+};
+
+&usb_mp_hsphy0 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       status = "okay";
+};
+
+&usb_mp_hsphy1 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb6_repeater>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy0 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p9>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy1 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p9>;
+
+       status = "okay";
+};
index 10b3af5e79fb6493cd6b6c661de6a801e40092f7..8d2a9b7f4730783bbaa81e488a0e99cc195a195f 100644 (file)
                                                remote-endpoint = <&usb_1_ss1_qmpphy_out>;
                                        };
                                };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss1_sbu: endpoint {
+                                               remote-endpoint = <&usb_1_ss1_sbu_mux>;
+                                       };
+                               };
                        };
                };
        };
                        };
                };
        };
+
+       usb-1-ss1-sbu-mux {
+               compatible = "onnn,fsusb42", "gpio-sbu-mux";
+
+               enable-gpios = <&tlmm 179 GPIO_ACTIVE_LOW>;
+               select-gpios = <&tlmm 178 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&usb_1_ss1_sbu_default>;
+               pinctrl-names = "default";
+
+               mode-switch;
+               orientation-switch;
+
+               port {
+                       usb_1_ss1_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_ss1_sbu>;
+                       };
+               };
+       };
 };
 
 &apps_rsc {
        };
 };
 
-&i2c1 {
-       clock-frequency = <400000>;
-
-       status = "okay";
-
-       /* type-c PS8830 Retimer #2 0x8 */
-       /* is active on Windows */
-};
-
 &i2c3 {
        clock-frequency = <400000>;
 
        };
 };
 
-&i2c4 {
-       clock-frequency = <400000>;
-
-       status = "okay";
-
-       /* is active on Windows */
-};
-
 &i2c5 {
        clock-frequency = <400000>;
        status = "okay";
        };
 };
 
-&i2c9 {
-       clock-frequency = <400000>;
-
-       status = "okay";
-
-       /* is active on Windows */
-};
-
 &lpass_tlmm {
        spkr_01_sd_n_active: spkr-01-sd-n-active-state {
                pins = "gpio12";
 
 };
 
-&pmk8550_gpios {
-       edp_bl_pwm: edp-bl-pwm-state {
-               pins = "gpio5";
-               function = "func3";
-       };
-};
-
-&pmk8550_pwm {
-       status = "okay";
-};
-
 &pmc8380_5_gpios {
        usb0_pwr_1p15_reg_en: usb0-pwr-1p15-reg-en-state {
                pins = "gpio8";
        };
 };
 
+&pmk8550_gpios {
+       edp_bl_pwm: edp-bl-pwm-state {
+               pins = "gpio5";
+               function = "func3";
+       };
+};
+
+&pmk8550_pwm {
+       status = "okay";
+};
+
 &qupv3_0 {
        status = "okay";
 };
                };
        };
 
+       usb_1_ss1_sbu_default: usb-1-ss1-sbu-state {
+               mode-pins {
+                       pins = "gpio177";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <2>;
+                       output-high;
+               };
+
+               oe-n-pins {
+                       pins = "gpio179";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+
+               sel-pins {
+                       pins = "gpio178";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+       };
+
        wcd_default: wcd-reset-n-active-state {
                pins = "gpio191";
                function = "gpio";
index a8eb4c5fe99fe6dd49af200a738b6476d87279b2..a9a7bb676c6f8ac48a2e443d28efdc8c9b5e52c0 100644 (file)
                                     <GIC_SPI 839 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 840 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 841 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 842 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 842 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 672 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
 
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                                     <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
 
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                                     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
                                          "msi4",
                                          "msi5",
                                          "msi6",
-                                         "msi7";
+                                         "msi7",
+                                         "global";
 
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                             <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
        };
 
-       thermal-zones {
+       thermal_zones: thermal-zones {
                aoss0-thermal {
                        thermal-sensors = <&tsens0 0>;
 
diff --git a/src/arm64/qcom/x1p42100-asus-zenbook-a14.dts b/src/arm64/qcom/x1p42100-asus-zenbook-a14.dts
new file mode 100644 (file)
index 0000000..bd75ff8
--- /dev/null
@@ -0,0 +1,141 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025 Aleksandrs Vinarskis <alex.vinarskis@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "x1p42100.dtsi"
+#include "x1-asus-zenbook-a14.dtsi"
+
+/delete-node/ &pmc8380_6;
+/delete-node/ &pmc8380_6_thermal;
+
+/ {
+       model = "ASUS Zenbook A14 (UX3407QA)";
+       compatible = "asus,zenbook-a14-ux3407qa", "qcom,x1p42100";
+
+       wcn6855-pmu {
+               compatible = "qcom,wcn6855-pmu";
+
+               vddaon-supply = <&vreg_wcn_0p95>;
+               vddio-supply = <&vreg_wcn_1p9>;
+               vddpcie1p3-supply = <&vreg_wcn_1p9>;
+               vddpcie1p9-supply = <&vreg_wcn_1p9>;
+               vddpmu-supply = <&vreg_wcn_0p95>;
+               vddpmucx-supply = <&vreg_wcn_0p95>;
+               vddpmumx-supply = <&vreg_wcn_0p95>;
+               vddrfa0p95-supply = <&vreg_wcn_0p95>;
+               vddrfa1p3-supply = <&vreg_wcn_1p9>;
+               vddrfa1p9-supply = <&vreg_wcn_1p9>;
+
+               bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
+               wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&wcn_bt_en>, <&wcn_wlan_en>;
+               pinctrl-names = "default";
+
+               regulators {
+                       vreg_pmu_rfa_cmn_0p8: ldo0 {
+                               regulator-name = "vreg_pmu_rfa_cmn_0p8";
+                       };
+
+                       vreg_pmu_aon_0p8: ldo1 {
+                               regulator-name = "vreg_pmu_aon_0p8";
+                       };
+
+                       vreg_pmu_wlcx_0p8: ldo2 {
+                               regulator-name = "vreg_pmu_wlcx_0p8";
+                       };
+
+                       vreg_pmu_wlmx_0p8: ldo3 {
+                               regulator-name = "vreg_pmu_wlmx_0p8";
+                       };
+
+                       vreg_pmu_btcmx_0p8: ldo4 {
+                               regulator-name = "vreg_pmu_btcmx_0p8";
+                       };
+
+                       vreg_pmu_pcie_1p8: ldo5 {
+                               regulator-name = "vreg_pmu_pcie_1p8";
+                       };
+
+                       vreg_pmu_pcie_0p9: ldo6 {
+                               regulator-name = "vreg_pmu_pcie_0p9";
+                       };
+
+                       vreg_pmu_rfa_0p8: ldo7 {
+                               regulator-name = "vreg_pmu_rfa_0p8";
+                       };
+
+                       vreg_pmu_rfa_1p2: ldo8 {
+                               regulator-name = "vreg_pmu_rfa_1p2";
+                       };
+
+                       vreg_pmu_rfa_1p7: ldo9 {
+                               regulator-name = "vreg_pmu_rfa_1p7";
+                       };
+               };
+       };
+};
+
+&gpu {
+       status = "okay";
+};
+
+&gpu_zap_shader {
+       firmware-name = "qcom/x1p42100/ASUSTeK/zenbook-a14/qcdxkmsucpurwa.mbn";
+};
+
+&pcie4_port0 {
+       wifi@0 {
+               compatible = "pci17cb,1103";
+               reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p8>;
+               vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+               vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn_0p8>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p8>;
+
+               qcom,calibration-variant = "UX3407Q";
+       };
+};
+
+&remoteproc_adsp {
+       firmware-name = "qcom/x1p42100/ASUSTeK/zenbook-a14/qcadsp8380.mbn",
+                       "qcom/x1p42100/ASUSTeK/zenbook-a14/adsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/x1p42100/ASUSTeK/zenbook-a14/qccdsp8380.mbn",
+                       "qcom/x1p42100/ASUSTeK/zenbook-a14/cdsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&uart14 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,wcn6855-bt";
+
+               vddaon-supply = <&vreg_pmu_aon_0p8>;
+               vddbtcmx-supply = <&vreg_pmu_btcmx_0p8>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn_0p8>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p8>;
+
+               max-speed = <3000000>;
+       };
+};
index 27f479010bc330eb6445269a1c46bf78ec6f1bd4..9af9e707f982fe45f62a9420b1e6baa1fef4d2fa 100644 (file)
@@ -18,6 +18,7 @@
 /delete-node/ &cpu_pd10;
 /delete-node/ &cpu_pd11;
 /delete-node/ &pcie3_phy;
+/delete-node/ &thermal_zones;
 
 &gcc {
        compatible = "qcom,x1p42100-gcc", "qcom,x1e80100-gcc";
                status = "disabled";
        };
 };
+
+/* While physically present, this controller is left unconfigured and unused */
+&tsens3 {
+       status = "disabled";
+};
+
+/ {
+       thermal-zones {
+               aoss0-thermal {
+                       thermal-sensors = <&tsens0 0>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu0-0-top-thermal {
+                       thermal-sensors = <&tsens0 1>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu0-0-btm-thermal {
+                       thermal-sensors = <&tsens0 2>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu0-1-top-thermal {
+                       thermal-sensors = <&tsens0 3>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu0-1-btm-thermal {
+                       thermal-sensors = <&tsens0 4>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu0-2-top-thermal {
+                       thermal-sensors = <&tsens0 5>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu0-2-btm-thermal {
+                       thermal-sensors = <&tsens0 6>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu0-3-top-thermal {
+                       thermal-sensors = <&tsens0 7>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu0-3-btm-thermal {
+                       thermal-sensors = <&tsens0 8>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpuss0-top-thermal {
+                       thermal-sensors = <&tsens0 9>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpuss0-btm-thermal {
+                       thermal-sensors = <&tsens0 10>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               mem-thermal {
+                       thermal-sensors = <&tsens0 11>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               video-thermal {
+                       thermal-sensors = <&tsens0 12>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               aoss1-thermal {
+                       thermal-sensors = <&tsens1 0>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu1-0-top-thermal {
+                       thermal-sensors = <&tsens1 1>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu1-0-btm-thermal {
+                       thermal-sensors = <&tsens1 2>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu1-1-top-thermal {
+                       thermal-sensors = <&tsens1 3>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu1-1-btm-thermal {
+                       thermal-sensors = <&tsens1 4>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu1-2-top-thermal {
+                       thermal-sensors = <&tsens1 5>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu1-2-btm-thermal {
+                       thermal-sensors = <&tsens1 6>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu1-3-top-thermal {
+                       thermal-sensors = <&tsens1 7>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu1-3-btm-thermal {
+                       thermal-sensors = <&tsens1 8>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpuss1-top-thermal {
+                       thermal-sensors = <&tsens1 9>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpuss1-btm-thermal {
+                       thermal-sensors = <&tsens1 10>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               aoss2-thermal {
+                       thermal-sensors = <&tsens2 0>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               nsp0-thermal {
+                       thermal-sensors = <&tsens2 1>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               nsp1-thermal {
+                       thermal-sensors = <&tsens2 2>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               nsp2-thermal {
+                       thermal-sensors = <&tsens2 3>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               nsp3-thermal {
+                       thermal-sensors = <&tsens2 4>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               gpuss-0-thermal {
+                       polling-delay-passive = <200>;
+
+                       thermal-sensors = <&tsens2 5>;
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss0_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+
+                       trips {
+                               gpuss0_alert0: trip-point0 {
+                                       temperature = <95000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               gpuss-1-thermal {
+                       polling-delay-passive = <200>;
+
+                       thermal-sensors = <&tsens2 6>;
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss1_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+
+                       trips {
+                               gpuss1_alert0: trip-point0 {
+                                       temperature = <95000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               gpuss-2-thermal {
+                       polling-delay-passive = <200>;
+
+                       thermal-sensors = <&tsens2 7>;
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss2_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+
+                       trips {
+                               gpuss2_alert0: trip-point0 {
+                                       temperature = <95000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               gpuss-3-thermal {
+                       polling-delay-passive = <200>;
+
+                       thermal-sensors = <&tsens2 8>;
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss3_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+
+                       trips {
+                               gpuss3_alert0: trip-point0 {
+                                       temperature = <95000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               camera0-thermal {
+                       thermal-sensors = <&tsens2 9>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               camera1-thermal {
+                       thermal-sensors = <&tsens2 10>;
+
+                       trips {
+                               trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               trip-point1 {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
index a1058415057182ab15fc5a60582de3ea8a4838b3..9fe9c722187d841efbccfa275f8c05046bb0ccd2 100644 (file)
 &i2c0 {
        pinctrl-0 = <&i2c0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
        clock-frequency = <400000>;
                compatible = "rohm,br24t01", "atmel,24c01";
                reg = <0x50>;
                pagesize = <8>;
+               bootph-all;
        };
 };
 
index 380b857fd273eb754d0403aa2f536c6ffb49b20c..71d9f277c966ffdf2824ecb26aff1ca8cff04b07 100644 (file)
 &i2c0 {
        pinctrl-0 = <&i2c0_pins>;
        pinctrl-names = "default";
+       bootph-all;
        status = "okay";
 
        ak4613: codec@10 {
                compatible = "rohm,br24t01", "atmel,24c01";
                reg = <0x50>;
                pagesize = <8>;
+               bootph-all;
        };
 };
 
index 4f38b01ae18de4f763f9a70110f70a19490a31d4..c4c86344fb90507b284e2cfdb211062b824c9604 100644 (file)
        };
 };
 
+&can0 {
+       pinctrl-0 = <&can0_pins>;
+       pinctrl-names = "default";
+
+       /* Please only enable canfd or can0 */
+       /* status = "okay"; */
+};
+
 &canfd {
        pinctrl-0 = <&canfd0_pins>;
        pinctrl-names = "default";
+       /* Please only enable canfd or can0 */
        status = "okay";
 
        channel0 {
 };
 
 &i2c_dvfs {
+       bootph-all;
        status = "okay";
 
        clock-frequency = <400000>;
                compatible = "rohm,br24t01", "atmel,24c01";
                reg = <0x50>;
                pagesize = <8>;
+               bootph-all;
        };
 };
 
                function = "avb";
        };
 
+       can0_pins: can0 {
+               groups = "can0_data";
+               function = "can0";
+       };
+
        canfd0_pins: canfd0 {
                groups = "canfd0_data";
                function = "canfd0";
diff --git a/src/arm64/renesas/gray-hawk-single.dtsi b/src/arm64/renesas/gray-hawk-single.dtsi
new file mode 100644 (file)
index 0000000..2edb5cb
--- /dev/null
@@ -0,0 +1,866 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for the Gray Hawk Single board
+ *
+ * Copyright (C) 2023 Renesas Electronics Corp.
+ * Copyright (C) 2024-2025 Glider bv
+ */
+/*
+ * [How to use Sound]
+ *
+ * Because R-Car V4M has only 1 SSI, it cannot handle both Playback/Capture
+ * at the same time. You need to switch the direction which is controlled
+ * by the GP0_01 pin via amixer.
+ *
+ * Playback (CN9500)
+ *     > amixer set "MUX" "Playback"   // for GP0_01
+ *     > amixer set "DAC 1" 85%
+ *     > aplay xxx.wav
+ *
+ * Capture (CN9501)
+ *     > amixer set "MUX" "Capture"    // for GP0_01
+ *     > amixer set "Mic 1" 80%
+ *     > amixer set "ADC 1" on
+ *     > amixer set 'ADC 1' 80%
+ *     > arecord xxx hoge.wav
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/media/video-interfaces.h>
+
+/ {
+       model = "Renesas Gray Hawk Single board";
+       compatible = "renesas,gray-hawk-single";
+
+       aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               serial0 = &hscif0;
+               serial1 = &hscif2;
+               ethernet0 = &avb0;
+               ethernet1 = &avb1;
+               ethernet2 = &avb2;
+       };
+
+       can_transceiver0: can-phy0 {
+               compatible = "nxp,tjr1443";
+               #phy-cells = <0>;
+               enable-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
+               max-bitrate = <5000000>;
+       };
+
+       chosen {
+               bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
+               stdout-path = "serial0:921600n8";
+       };
+
+       sn65dsi86_refclk: clk-x6 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <38400000>;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&keys_pins>;
+               pinctrl-names = "default";
+
+               key-1 {
+                       gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_1>;
+                       label = "SW47";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+
+               key-2 {
+                       gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_2>;
+                       label = "SW48";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+
+               key-3 {
+                       gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_3>;
+                       label = "SW49";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-1 {
+                       gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_INDICATOR;
+                       function-enumerator = <1>;
+               };
+
+               led-2 {
+                       gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_INDICATOR;
+                       function-enumerator = <2>;
+               };
+
+               led-3 {
+                       gpios = <&gpio7 2 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_INDICATOR;
+                       function-enumerator = <3>;
+               };
+       };
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x0 0x78000000>;
+       };
+
+       memory@480000000 {
+               device_type = "memory";
+               reg = <0x4 0x80000000 0x1 0x80000000>;
+       };
+
+       pcie_clk: clk-9fgv0841-pci {
+               compatible = "fixed-clock";
+               clock-frequency = <100000000>;
+               #clock-cells = <0>;
+       };
+
+       mini-dp-con {
+               compatible = "dp-connector";
+               label = "CN5";
+               type = "mini";
+
+               port {
+                       mini_dp_con_in: endpoint {
+                               remote-endpoint = <&sn65dsi86_out0>;
+                       };
+               };
+       };
+
+       reg_1p2v: regulator-1p2v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.2V";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       sound_mux: sound-mux {
+               compatible = "simple-audio-mux";
+               mux-gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
+               state-labels = "Playback", "Capture";
+       };
+
+       sound_card: sound {
+               compatible = "audio-graph-card2";
+               label = "rcar-sound";
+               aux-devs = <&sound_mux>; // for GP0_01
+
+               links = <&rsnd_port>; // AK4619 Audio Codec
+       };
+};
+
+&audio_clkin {
+       clock-frequency = <24576000>;
+};
+
+&avb0 {
+       pinctrl-0 = <&avb0_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&avb0_phy>;
+       tx-internal-delay-ps = <2000>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               avb0_phy: ethernet-phy@0 {
+                       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>;
+               };
+       };
+};
+
+&can_clk {
+       clock-frequency = <40000000>;
+};
+
+&canfd {
+       pinctrl-0 = <&canfd0_pins>, <&canfd1_pins>, <&can_clk_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       channel0 {
+               status = "okay";
+               phys = <&can_transceiver0>;
+       };
+
+       channel1 {
+               status = "okay";
+       };
+};
+
+&csi40 {
+       status = "okay";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+
+                       csi40_in: endpoint {
+                               bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+                               clock-lanes = <0>;
+                               data-lanes = <1 2 3 4>;
+                               remote-endpoint = <&max96724_out0>;
+                       };
+               };
+       };
+};
+
+&csi41 {
+       status = "okay";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+
+                       csi41_in: endpoint {
+                               bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+                               clock-lanes = <0>;
+                               data-lanes = <1 2 3 4>;
+                               remote-endpoint = <&max96724_out1>;
+                       };
+               };
+       };
+};
+
+&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>;
+};
+
+&extalr_clk {
+       clock-frequency = <32768>;
+};
+
+&gpio1 {
+       audio-power-hog {
+               gpio-hog;
+               gpios = <8 GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "Audio-Power";
+       };
+};
+
+&hscif0 {
+       pinctrl-0 = <&hscif0_pins>;
+       pinctrl-names = "default";
+       bootph-all;
+
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&hscif2 {
+       pinctrl-0 = <&hscif2_pins>;
+       pinctrl-names = "default";
+
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+       clock-frequency = <400000>;
+
+       io_expander_a: gpio@20 {
+               compatible = "onnn,pca9654";
+               reg = <0x20>;
+               interrupts-extended = <&gpio0 0 IRQ_TYPE_LEVEL_LOW>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       io_expander_b: gpio@21 {
+               compatible = "onnn,pca9654";
+               reg = <0x21>;
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       io_expander_c: gpio@22 {
+               compatible = "onnn,pca9654";
+               reg = <0x22>;
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       eeprom@50 {
+               compatible = "rohm,br24g01", "atmel,24c01";
+               label = "cpu-board";
+               reg = <0x50>;
+               pagesize = <8>;
+       };
+
+       eeprom@51 {
+               compatible = "rohm,br24g01", "atmel,24c01";
+               label = "breakout-board";
+               reg = <0x51>;
+               pagesize = <8>;
+       };
+
+       eeprom@52 {
+               compatible = "rohm,br24g01", "atmel,24c01";
+               label = "csi-dsi-sub-board-id";
+               reg = <0x52>;
+               pagesize = <8>;
+       };
+
+       eeprom@53 {
+               compatible = "rohm,br24g01", "atmel,24c01";
+               label = "ethernet-sub-board-id";
+               reg = <0x53>;
+               pagesize = <8>;
+       };
+};
+
+&i2c1 {
+       pinctrl-0 = <&i2c1_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+       clock-frequency = <400000>;
+
+       bridge@2c {
+               pinctrl-0 = <&irq0_pins>;
+               pinctrl-names = "default";
+
+               compatible = "ti,sn65dsi86";
+               reg = <0x2c>;
+
+               clocks = <&sn65dsi86_refclk>;
+               clock-names = "refclk";
+
+               interrupts-extended = <&intc_ex 0 IRQ_TYPE_LEVEL_HIGH>;
+
+               enable-gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>;
+
+               vccio-supply = <&reg_1p8v>;
+               vpll-supply = <&reg_1p8v>;
+               vcca-supply = <&reg_1p2v>;
+               vcc-supply = <&reg_1p2v>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               sn65dsi86_in0: endpoint {
+                                       remote-endpoint = <&dsi0_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               sn65dsi86_out0: endpoint {
+                                       remote-endpoint = <&mini_dp_con_in>;
+                               };
+                       };
+               };
+       };
+
+       gmsl0: gmsl-deserializer@4e {
+               compatible = "maxim,max96724";
+               reg = <0x4e>;
+               enable-gpios = <&io_expander_b 0 GPIO_ACTIVE_HIGH>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@4 {
+                               reg = <4>;
+                               max96724_out0: endpoint {
+                                       bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2 3 4>;
+                                       remote-endpoint = <&csi40_in>;
+                               };
+                       };
+               };
+       };
+
+       gmsl1: gmsl-deserializer@4f {
+               compatible = "maxim,max96724";
+               reg = <0x4f>;
+               enable-gpios = <&io_expander_c 0 GPIO_ACTIVE_HIGH>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@4 {
+                               reg = <4>;
+                               max96724_out1: endpoint {
+                                       bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2 3 4>;
+                                       remote-endpoint = <&csi41_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c3 {
+       pinctrl-0 = <&i2c3_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+       clock-frequency = <400000>;
+
+       codec@10 {
+               compatible = "asahi-kasei,ak4619";
+               reg = <0x10>;
+
+               clocks = <&rcar_sound>;
+               clock-names = "mclk";
+
+               #sound-dai-cells = <0>;
+               port {
+                       ak4619_endpoint: endpoint {
+                               remote-endpoint = <&rsnd_endpoint>;
+                       };
+               };
+       };
+};
+
+&isp0 {
+       status = "okay";
+};
+
+&isp1 {
+       status = "okay";
+};
+
+&mmc0 {
+       pinctrl-0 = <&mmc_pins>;
+       pinctrl-1 = <&mmc_pins>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&reg_1p8v>;
+       mmc-hs200-1_8v;
+       mmc-hs400-1_8v;
+       bus-width = <8>;
+       no-sd;
+       no-sdio;
+       non-removable;
+       full-pwr-cycle-in-suspend;
+       status = "okay";
+};
+
+&pcie0_clkref {
+       compatible = "gpio-gate-clock";
+       clocks = <&pcie_clk>;
+       enable-gpios = <&gpio4 21 GPIO_ACTIVE_LOW>;
+       /delete-property/ clock-frequency;
+};
+
+&pciec0 {
+       reset-gpios = <&io_expander_a 0 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&pfc {
+       pinctrl-0 = <&scif_clk_pins>, <&scif_clk2_pins>;
+       pinctrl-names = "default";
+
+       avb0_pins: avb0 {
+               mux {
+                       groups = "avb0_link", "avb0_mdio", "avb0_rgmii",
+                                "avb0_txcrefclk";
+                       function = "avb0";
+               };
+
+               pins_mdio {
+                       groups = "avb0_mdio";
+                       drive-strength = <21>;
+               };
+
+               pins_mii {
+                       groups = "avb0_rgmii";
+                       drive-strength = <21>;
+               };
+       };
+
+       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";
+       };
+
+       canfd0_pins: canfd0 {
+               groups = "canfd0_data";
+               function = "canfd0";
+       };
+
+       canfd1_pins: canfd1 {
+               groups = "canfd1_data";
+               function = "canfd1";
+       };
+
+       hscif0_pins: hscif0 {
+               groups = "hscif0_data", "hscif0_ctrl";
+               function = "hscif0";
+       };
+
+       hscif2_pins: hscif2 {
+               groups = "hscif2_data", "hscif2_ctrl";
+               function = "hscif2";
+       };
+
+       i2c0_pins: i2c0 {
+               groups = "i2c0";
+               function = "i2c0";
+       };
+
+       i2c1_pins: i2c1 {
+               groups = "i2c1";
+               function = "i2c1";
+       };
+
+       i2c3_pins: i2c3 {
+               groups = "i2c3";
+               function = "i2c3";
+       };
+
+       irq0_pins: irq0_pins {
+               groups = "intc_ex_irq0_a";
+               function = "intc_ex";
+       };
+
+       keys_pins: keys {
+               pins = "GP_5_0", "GP_5_1", "GP_5_2";
+               bias-pull-up;
+       };
+
+       mmc_pins: mmc {
+               groups = "mmc_data8", "mmc_ctrl", "mmc_ds";
+               function = "mmc";
+               power-source = <1800>;
+       };
+
+       qspi0_pins: qspi0 {
+               groups = "qspi0_ctrl", "qspi0_data4";
+               function = "qspi0";
+       };
+
+       scif_clk_pins: scif-clk {
+               groups = "scif_clk";
+               function = "scif_clk";
+       };
+
+       scif_clk2_pins: scif-clk2 {
+               groups = "scif_clk2";
+               function = "scif_clk2";
+       };
+
+       sound_clk_pins: sound_clk {
+               groups = "audio_clkin", "audio_clkout";
+               function = "audio_clk";
+       };
+
+       sound_pins: sound {
+               groups = "ssi_ctrl", "ssi_data";
+               function = "ssi";
+       };
+};
+
+&rcar_sound {
+       pinctrl-0 = <&sound_clk_pins>, <&sound_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       /* audio_clkout */
+       clock-frequency = <12288000>;
+
+       ports {
+               rsnd_port: port {
+                       rsnd_endpoint: endpoint {
+                               remote-endpoint = <&ak4619_endpoint>;
+                               bitclock-master;
+                               frame-master;
+
+                               /* see above [How to use Sound] */
+                               playback = <&ssi0>;
+                               capture  = <&ssi0>;
+                       };
+               };
+       };
+};
+
+&rpc {
+       pinctrl-0 = <&qspi0_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       flash@0 {
+               compatible = "spansion,s25fs512s", "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <40000000>;
+               spi-rx-bus-width = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       boot@0 {
+                               reg = <0x0 0x1200000>;
+                               read-only;
+                       };
+                       user@1200000 {
+                               reg = <0x1200000 0x2e00000>;
+                       };
+               };
+       };
+};
+
+&rwdt {
+       timeout-sec = <60>;
+       status = "okay";
+};
+
+&scif_clk {
+       clock-frequency = <24000000>;
+};
+
+&scif_clk2 {
+       clock-frequency = <24000000>;
+};
+
+&vin00 {
+       status = "okay";
+};
+
+&vin01 {
+       status = "okay";
+};
+
+&vin02 {
+       status = "okay";
+};
+
+&vin03 {
+       status = "okay";
+};
+
+&vin04 {
+       status = "okay";
+};
+
+&vin05 {
+       status = "okay";
+};
+
+&vin06 {
+       status = "okay";
+};
+
+&vin07 {
+       status = "okay";
+};
+
+&vin08 {
+       status = "okay";
+};
+
+&vin09 {
+       status = "okay";
+};
+
+&vin10 {
+       status = "okay";
+};
+
+&vin11 {
+       status = "okay";
+};
+
+&vin12 {
+       status = "okay";
+};
+
+&vin13 {
+       status = "okay";
+};
+
+&vin14 {
+       status = "okay";
+};
+
+&vin15 {
+       status = "okay";
+};
index 6dbf05a559357170984295af6190266881d12f86..8d9ca30c299c918e5ab5c4cda3699419e5259821 100644 (file)
                                        <0 0 0 4 &gic GIC_SPI 449 IRQ_TYPE_LEVEL_HIGH>;
                        snps,enable-cdm-check;
                        status = "disabled";
+
+                       /* PCIe bridge, Root Port */
+                       pciec0_rp: pci@0,0 {
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+                               compatible = "pciclass,0604";
+                               device_type = "pci";
+                               ranges;
+                       };
                };
 
                pciec1: pcie@e65d8000 {
                                        <0 0 0 4 &gic GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>;
                        snps,enable-cdm-check;
                        status = "disabled";
+
+                       /* PCIe bridge, Root Port */
+                       pciec1_rp: pci@0,0 {
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+                               compatible = "pciclass,0604";
+                               device_type = "pci";
+                               ranges;
+                       };
                };
 
                pciec0_ep: pcie-ep@e65d0000 {
index 6955eafd8d6ab44b00106a5fc24209acc17286b3..9ba23129e65ec396c41dd9c96380484a967c5459 100644 (file)
                };
        };
 
+       /* Page 26 / PCIe.0/1 CLK */
+       pcie_refclk: clk-x8 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <25000000>;
+       };
+
        reg_1p2v: regulator-1p2v {
                compatible = "regulator-fixed";
                regulator-name = "fixed-1.2V";
                        reg = <2>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+
+                       /* Page 26 / PCIe.0/1 CLK */
+                       pcie_clk: clk@68 {
+                               compatible = "renesas,9fgv0441";
+                               reg = <0x68>;
+                               clocks = <&pcie_refclk>;
+                               #clock-cells = <1>;
+                       };
                };
 
                i2c0_mux3: i2c@3 {
 
 /* Page 26 / 2230 Key M M.2 */
 &pcie0_clkref {
-       clock-frequency = <100000000>;
+       status = "disabled";
 };
 
 &pciec0 {
+       clocks = <&cpg CPG_MOD 624>, <&pcie_clk 0>;
        reset-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
        status = "okay";
 };
 
+&pciec0_rp {
+       clocks = <&pcie_clk 1>;
+       vpcie3v3-supply = <&reg_3p3v>;
+};
+
 /* Page 25 / PCIe to USB */
 &pcie1_clkref {
-       clock-frequency = <100000000>;
+       status = "disabled";
 };
 
 &pciec1 {
+       clocks = <&cpg CPG_MOD 625>, <&pcie_clk 2>;
        /* uPD720201 is PCIe Gen2 x1 device */
        num-lanes = <1>;
        reset-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
        status = "okay";
 };
 
+&pciec1_rp {
+       clocks = <&pcie_clk 3>;
+       vpcie3v3-supply = <&reg_3p3v>;
+};
+
 &pfc {
        pinctrl-0 = <&scif_clk_pins>;
        pinctrl-names = "default";
        };
 };
 
-/* Page 30 / Audio_Codec */
-&rcar_sound {
-       pinctrl-0 = <&sound_clk_pins>;
-       pinctrl-names = "default";
-
-       /* It is used for ADG output as DA7212_MCLK */
-
-       /* audio_clkout */
-       clock-frequency = <12288000>; /* 48 kHz groups */
-
-       status = "okay";
-};
-
 /* Page 31 / FAN */
 &pwm0 {
        pinctrl-0 = <&pwm0_pins>;
        status = "okay";
 };
 
+/* Page 30 / Audio_Codec */
+&rcar_sound {
+       pinctrl-0 = <&sound_clk_pins>;
+       pinctrl-names = "default";
+
+       /* It is used for ADG output as DA7212_MCLK */
+
+       /* audio_clkout */
+       clock-frequency = <12288000>; /* 48 kHz groups */
+
+       status = "okay";
+};
+
 /* Page 16 / QSPI_FLASH */
 &rpc {
        pinctrl-0 = <&qspi0_pins>;
index 4d890e0617aff9470bf8611030b16995150275fa..1be7836c41f47b0d5d5ead624dbe41402ae03836 100644 (file)
  * Copyright (C) 2023 Renesas Electronics Corp.
  * Copyright (C) 2024 Glider bv
  */
-/*
- * [How to use Sound]
- *
- * Because R-Car V4M has only 1 SSI, it cannot handle both Playback/Capture
- * at the same time. You need to switch the direction which is controlled
- * by the GP0_01 pin via amixer.
- *
- * Playback (CN9500)
- *     > amixer set "MUX" "Playback"   // for GP0_01
- *     > amixer set "DAC 1" 85%
- *     > aplay xxx.wav
- *
- * Capture (CN9501)
- *     > amixer set "MUX" "Capture"    // for GP0_01
- *     > amixer set "Mic 1" 80%
- *     > amixer set "ADC 1" on
- *     > amixer set 'ADC 1' 80%
- *     > arecord xxx hoge.wav
- */
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/leds/common.h>
-#include <dt-bindings/media/video-interfaces.h>
-
 #include "r8a779h0.dtsi"
+#include "gray-hawk-single.dtsi"
 
 / {
        model = "Renesas Gray Hawk Single board based on r8a779h0";
        compatible = "renesas,gray-hawk-single", "renesas,r8a779h0";
-
-       aliases {
-               i2c0 = &i2c0;
-               i2c1 = &i2c1;
-               i2c2 = &i2c2;
-               i2c3 = &i2c3;
-               serial0 = &hscif0;
-               serial1 = &hscif2;
-               ethernet0 = &avb0;
-               ethernet1 = &avb1;
-               ethernet2 = &avb2;
-       };
-
-       can_transceiver0: can-phy0 {
-               compatible = "nxp,tjr1443";
-               #phy-cells = <0>;
-               enable-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
-               max-bitrate = <5000000>;
-       };
-
-       chosen {
-               bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
-               stdout-path = "serial0:921600n8";
-       };
-
-       sn65dsi86_refclk: clk-x6 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <38400000>;
-       };
-
-       keys {
-               compatible = "gpio-keys";
-
-               pinctrl-0 = <&keys_pins>;
-               pinctrl-names = "default";
-
-               key-1 {
-                       gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_1>;
-                       label = "SW47";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-
-               key-2 {
-                       gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_2>;
-                       label = "SW48";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-
-               key-3 {
-                       gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_3>;
-                       label = "SW49";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-       };
-
-       leds {
-               compatible = "gpio-leds";
-
-               led-1 {
-                       gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
-                       color = <LED_COLOR_ID_GREEN>;
-                       function = LED_FUNCTION_INDICATOR;
-                       function-enumerator = <1>;
-               };
-
-               led-2 {
-                       gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
-                       color = <LED_COLOR_ID_GREEN>;
-                       function = LED_FUNCTION_INDICATOR;
-                       function-enumerator = <2>;
-               };
-
-               led-3 {
-                       gpios = <&gpio7 2 GPIO_ACTIVE_HIGH>;
-                       color = <LED_COLOR_ID_GREEN>;
-                       function = LED_FUNCTION_INDICATOR;
-                       function-enumerator = <3>;
-               };
-       };
-
-       memory@48000000 {
-               device_type = "memory";
-               /* first 128MB is reserved for secure area. */
-               reg = <0x0 0x48000000 0x0 0x78000000>;
-       };
-
-       memory@480000000 {
-               device_type = "memory";
-               reg = <0x4 0x80000000 0x1 0x80000000>;
-       };
-
-       pcie_clk: clk-9fgv0841-pci {
-               compatible = "fixed-clock";
-               clock-frequency = <100000000>;
-               #clock-cells = <0>;
-       };
-
-       mini-dp-con {
-               compatible = "dp-connector";
-               label = "CN5";
-               type = "mini";
-
-               port {
-                       mini_dp_con_in: endpoint {
-                               remote-endpoint = <&sn65dsi86_out0>;
-                       };
-               };
-       };
-
-       reg_1p2v: regulator-1p2v {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-1.2V";
-               regulator-min-microvolt = <1200000>;
-               regulator-max-microvolt = <1200000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       reg_1p8v: regulator-1p8v {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-1.8V";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       reg_3p3v: regulator-3p3v {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-3.3V";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       sound_mux: sound-mux {
-               compatible = "simple-audio-mux";
-               mux-gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
-               state-labels = "Playback", "Capture";
-       };
-
-       sound_card: sound {
-               compatible = "audio-graph-card2";
-               label = "rcar-sound";
-               aux-devs = <&sound_mux>; // for GP0_01
-
-               links = <&rsnd_port>; // AK4619 Audio Codec
-       };
-};
-
-&audio_clkin {
-       clock-frequency = <24576000>;
-};
-
-&avb0 {
-       pinctrl-0 = <&avb0_pins>;
-       pinctrl-names = "default";
-       phy-handle = <&avb0_phy>;
-       tx-internal-delay-ps = <2000>;
-       status = "okay";
-
-       mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               avb0_phy: ethernet-phy@0 {
-                       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>;
-               };
-       };
-};
-
-&can_clk {
-       clock-frequency = <40000000>;
-};
-
-&canfd {
-       pinctrl-0 = <&canfd0_pins>, <&canfd1_pins>, <&can_clk_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-
-       channel0 {
-               status = "okay";
-               phys = <&can_transceiver0>;
-       };
-
-       channel1 {
-               status = "okay";
-       };
-};
-
-&csi40 {
-       status = "okay";
-
-       ports {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               port@0 {
-                       reg = <0>;
-
-                       csi40_in: endpoint {
-                               bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
-                               clock-lanes = <0>;
-                               data-lanes = <1 2 3 4>;
-                               remote-endpoint = <&max96724_out0>;
-                       };
-               };
-       };
-};
-
-&csi41 {
-       status = "okay";
-
-       ports {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               port@0 {
-                       reg = <0>;
-
-                       csi41_in: endpoint {
-                               bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
-                               clock-lanes = <0>;
-                               data-lanes = <1 2 3 4>;
-                               remote-endpoint = <&max96724_out1>;
-                       };
-               };
-       };
-};
-
-&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>;
-};
-
-&extalr_clk {
-       clock-frequency = <32768>;
-};
-
-&gpio1 {
-       audio-power-hog {
-               gpio-hog;
-               gpios = <8 GPIO_ACTIVE_HIGH>;
-               output-high;
-               line-name = "Audio-Power";
-       };
-};
-
-&hscif0 {
-       pinctrl-0 = <&hscif0_pins>;
-       pinctrl-names = "default";
-       bootph-all;
-
-       uart-has-rtscts;
-       status = "okay";
-};
-
-&hscif2 {
-       pinctrl-0 = <&hscif2_pins>;
-       pinctrl-names = "default";
-
-       uart-has-rtscts;
-       status = "okay";
-};
-
-&i2c0 {
-       pinctrl-0 = <&i2c0_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-       clock-frequency = <400000>;
-
-       io_expander_a: gpio@20 {
-               compatible = "onnn,pca9654";
-               reg = <0x20>;
-               interrupts-extended = <&gpio0 0 IRQ_TYPE_LEVEL_LOW>;
-               gpio-controller;
-               #gpio-cells = <2>;
-               interrupt-controller;
-               #interrupt-cells = <2>;
-       };
-
-       io_expander_b: gpio@21 {
-               compatible = "onnn,pca9654";
-               reg = <0x21>;
-               gpio-controller;
-               #gpio-cells = <2>;
-       };
-
-       io_expander_c: gpio@22 {
-               compatible = "onnn,pca9654";
-               reg = <0x22>;
-               gpio-controller;
-               #gpio-cells = <2>;
-       };
-
-       eeprom@50 {
-               compatible = "rohm,br24g01", "atmel,24c01";
-               label = "cpu-board";
-               reg = <0x50>;
-               pagesize = <8>;
-       };
-
-       eeprom@51 {
-               compatible = "rohm,br24g01", "atmel,24c01";
-               label = "breakout-board";
-               reg = <0x51>;
-               pagesize = <8>;
-       };
-
-       eeprom@52 {
-               compatible = "rohm,br24g01", "atmel,24c01";
-               label = "csi-dsi-sub-board-id";
-               reg = <0x52>;
-               pagesize = <8>;
-       };
-
-       eeprom@53 {
-               compatible = "rohm,br24g01", "atmel,24c01";
-               label = "ethernet-sub-board-id";
-               reg = <0x53>;
-               pagesize = <8>;
-       };
-};
-
-&i2c1 {
-       pinctrl-0 = <&i2c1_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-       clock-frequency = <400000>;
-
-       bridge@2c {
-               pinctrl-0 = <&irq0_pins>;
-               pinctrl-names = "default";
-
-               compatible = "ti,sn65dsi86";
-               reg = <0x2c>;
-
-               clocks = <&sn65dsi86_refclk>;
-               clock-names = "refclk";
-
-               interrupts-extended = <&intc_ex 0 IRQ_TYPE_LEVEL_HIGH>;
-
-               enable-gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>;
-
-               vccio-supply = <&reg_1p8v>;
-               vpll-supply = <&reg_1p8v>;
-               vcca-supply = <&reg_1p2v>;
-               vcc-supply = <&reg_1p2v>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-
-                               sn65dsi86_in0: endpoint {
-                                       remote-endpoint = <&dsi0_out>;
-                               };
-                       };
-
-                       port@1 {
-                               reg = <1>;
-
-                               sn65dsi86_out0: endpoint {
-                                       remote-endpoint = <&mini_dp_con_in>;
-                               };
-                       };
-               };
-       };
-
-       gmsl0: gmsl-deserializer@4e {
-               compatible = "maxim,max96724";
-               reg = <0x4e>;
-               enable-gpios = <&io_expander_b 0 GPIO_ACTIVE_HIGH>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@4 {
-                               reg = <4>;
-                               max96724_out0: endpoint {
-                                       bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
-                                       clock-lanes = <0>;
-                                       data-lanes = <1 2 3 4>;
-                                       remote-endpoint = <&csi40_in>;
-                               };
-                       };
-               };
-       };
-
-       gmsl1: gmsl-deserializer@4f {
-               compatible = "maxim,max96724";
-               reg = <0x4f>;
-               enable-gpios = <&io_expander_c 0 GPIO_ACTIVE_HIGH>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@4 {
-                               reg = <4>;
-                               max96724_out1: endpoint {
-                                       bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
-                                       clock-lanes = <0>;
-                                       data-lanes = <1 2 3 4>;
-                                       remote-endpoint = <&csi41_in>;
-                               };
-                       };
-               };
-       };
-};
-
-&i2c3 {
-       pinctrl-0 = <&i2c3_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-       clock-frequency = <400000>;
-
-       codec@10 {
-               compatible = "asahi-kasei,ak4619";
-               reg = <0x10>;
-
-               clocks = <&rcar_sound>;
-               clock-names = "mclk";
-
-               #sound-dai-cells = <0>;
-               port {
-                       ak4619_endpoint: endpoint {
-                               remote-endpoint = <&rsnd_endpoint>;
-                       };
-               };
-       };
-};
-
-&isp0 {
-       status = "okay";
-};
-
-&isp1 {
-       status = "okay";
-};
-
-&mmc0 {
-       pinctrl-0 = <&mmc_pins>;
-       pinctrl-1 = <&mmc_pins>;
-       pinctrl-names = "default", "state_uhs";
-
-       vmmc-supply = <&reg_3p3v>;
-       vqmmc-supply = <&reg_1p8v>;
-       mmc-hs200-1_8v;
-       mmc-hs400-1_8v;
-       bus-width = <8>;
-       no-sd;
-       no-sdio;
-       non-removable;
-       full-pwr-cycle-in-suspend;
-       status = "okay";
-};
-
-&pcie0_clkref {
-       compatible = "gpio-gate-clock";
-       clocks = <&pcie_clk>;
-       enable-gpios = <&gpio4 21 GPIO_ACTIVE_LOW>;
-       /delete-property/ clock-frequency;
-};
-
-&pciec0 {
-       reset-gpios = <&io_expander_a 0 GPIO_ACTIVE_LOW>;
-       status = "okay";
-};
-
-&pfc {
-       pinctrl-0 = <&scif_clk_pins>, <&scif_clk2_pins>;
-       pinctrl-names = "default";
-
-       avb0_pins: avb0 {
-               mux {
-                       groups = "avb0_link", "avb0_mdio", "avb0_rgmii",
-                                "avb0_txcrefclk";
-                       function = "avb0";
-               };
-
-               pins_mdio {
-                       groups = "avb0_mdio";
-                       drive-strength = <21>;
-               };
-
-               pins_mii {
-                       groups = "avb0_rgmii";
-                       drive-strength = <21>;
-               };
-       };
-
-       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";
-       };
-
-       canfd0_pins: canfd0 {
-               groups = "canfd0_data";
-               function = "canfd0";
-       };
-
-       canfd1_pins: canfd1 {
-               groups = "canfd1_data";
-               function = "canfd1";
-       };
-
-       hscif0_pins: hscif0 {
-               groups = "hscif0_data", "hscif0_ctrl";
-               function = "hscif0";
-       };
-
-       hscif2_pins: hscif2 {
-               groups = "hscif2_data", "hscif2_ctrl";
-               function = "hscif2";
-       };
-
-       i2c0_pins: i2c0 {
-               groups = "i2c0";
-               function = "i2c0";
-       };
-
-       i2c1_pins: i2c1 {
-               groups = "i2c1";
-               function = "i2c1";
-       };
-
-       i2c3_pins: i2c3 {
-               groups = "i2c3";
-               function = "i2c3";
-       };
-
-       irq0_pins: irq0_pins {
-               groups = "intc_ex_irq0_a";
-               function = "intc_ex";
-       };
-
-       keys_pins: keys {
-               pins = "GP_5_0", "GP_5_1", "GP_5_2";
-               bias-pull-up;
-       };
-
-       mmc_pins: mmc {
-               groups = "mmc_data8", "mmc_ctrl", "mmc_ds";
-               function = "mmc";
-               power-source = <1800>;
-       };
-
-       qspi0_pins: qspi0 {
-               groups = "qspi0_ctrl", "qspi0_data4";
-               function = "qspi0";
-       };
-
-       scif_clk_pins: scif-clk {
-               groups = "scif_clk";
-               function = "scif_clk";
-       };
-
-       scif_clk2_pins: scif-clk2 {
-               groups = "scif_clk2";
-               function = "scif_clk2";
-       };
-
-       sound_clk_pins: sound_clk {
-               groups = "audio_clkin", "audio_clkout";
-               function = "audio_clk";
-       };
-
-       sound_pins: sound {
-               groups = "ssi_ctrl", "ssi_data";
-               function = "ssi";
-       };
-};
-
-&rcar_sound {
-       pinctrl-0 = <&sound_clk_pins>, <&sound_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-
-       /* audio_clkout */
-       clock-frequency = <12288000>;
-
-       ports {
-               rsnd_port: port {
-                       rsnd_endpoint: endpoint {
-                               remote-endpoint = <&ak4619_endpoint>;
-                               bitclock-master;
-                               frame-master;
-
-                               /* see above [How to use Sound] */
-                               playback = <&ssi0>;
-                               capture  = <&ssi0>;
-                       };
-               };
-       };
-};
-
-&rpc {
-       pinctrl-0 = <&qspi0_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-
-       flash@0 {
-               compatible = "spansion,s25fs512s", "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <40000000>;
-               spi-rx-bus-width = <4>;
-
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       boot@0 {
-                               reg = <0x0 0x1200000>;
-                               read-only;
-                       };
-                       user@1200000 {
-                               reg = <0x1200000 0x2e00000>;
-                       };
-               };
-       };
-};
-
-&rwdt {
-       timeout-sec = <60>;
-       status = "okay";
-};
-
-&scif_clk {
-       clock-frequency = <24000000>;
-};
-
-&scif_clk2 {
-       clock-frequency = <24000000>;
-};
-
-&vin00 {
-       status = "okay";
-};
-
-&vin01 {
-       status = "okay";
-};
-
-&vin02 {
-       status = "okay";
-};
-
-&vin03 {
-       status = "okay";
-};
-
-&vin04 {
-       status = "okay";
-};
-
-&vin05 {
-       status = "okay";
-};
-
-&vin06 {
-       status = "okay";
-};
-
-&vin07 {
-       status = "okay";
-};
-
-&vin08 {
-       status = "okay";
-};
-
-&vin09 {
-       status = "okay";
-};
-
-&vin10 {
-       status = "okay";
-};
-
-&vin11 {
-       status = "okay";
-};
-
-&vin12 {
-       status = "okay";
-};
-
-&vin13 {
-       status = "okay";
-};
-
-&vin14 {
-       status = "okay";
-};
-
-&vin15 {
-       status = "okay";
 };
diff --git a/src/arm64/renesas/r8a779h2-gray-hawk-single.dts b/src/arm64/renesas/r8a779h2-gray-hawk-single.dts
new file mode 100644 (file)
index 0000000..aeb32c7
--- /dev/null
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for the R-Car V4M-7 Gray Hawk Single board
+ *
+ * Copyright (C) 2025 Glider bv
+ */
+
+/dts-v1/;
+
+#include "r8a779h2.dtsi"
+#include "gray-hawk-single.dtsi"
+
+/ {
+       model = "Renesas Gray Hawk Single board based on r8a779h2";
+       compatible = "renesas,gray-hawk-single", "renesas,r8a779h2",
+                    "renesas,r8a779h0";
+};
diff --git a/src/arm64/renesas/r8a779h2.dtsi b/src/arm64/renesas/r8a779h2.dtsi
new file mode 100644 (file)
index 0000000..2707d2d
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for the R-Car V4M-7 (R8A779H2) SoC
+ *
+ * Copyright (C) 2024 Renesas Electronics Corp.
+ */
+
+#include "r8a779h0.dtsi"
+
+/ {
+       compatible = "renesas,r8a779h2", "renesas,r8a779h0";
+};
index 876f70fed433f7abb9076f5a1b20ca6330345b41..e4fac7e0d764396d47a47410ad70b86b0f603ff7 100644 (file)
                        resets = <&cpg 0x30>;
                };
 
+               xspi: spi@11030000 {
+                       compatible = "renesas,r9a09g047-xspi";
+                       reg = <0 0x11030000 0 0x10000>,
+                             <0 0x20000000 0 0x10000000>;
+                       reg-names = "regs", "dirmap";
+                       interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "pulse", "err_pulse";
+                       clocks = <&cpg CPG_MOD 0x9f>,
+                                <&cpg CPG_MOD 0xa0>,
+                                <&cpg CPG_CORE R9A09G047_SPI_CLK_SPI>,
+                                <&cpg CPG_MOD 0xa1>;
+                       clock-names = "ahb", "axi", "spi", "spix2";
+                       resets = <&cpg 0xa3>, <&cpg 0xa4>;
+                       reset-names = "hresetn", "aresetn";
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                scif0: serial@11c01400 {
                        compatible = "renesas,scif-r9a09g047", "renesas,scif-r9a09g057";
                        reg = <0 0x11c01400 0 0x400>;
                                status = "disabled";
                        };
                };
+
+               eth0: ethernet@15c30000 {
+                       compatible = "renesas,r9a09g047-gbeth", "renesas,rzv2h-gbeth",
+                                    "snps,dwmac-5.20";
+                       reg = <0 0x15c30000 0 0x10000>;
+                       clocks = <&cpg CPG_MOD 0xbd>, <&cpg CPG_MOD 0xbc>,
+                                <&cpg CPG_CORE R9A09G047_GBETH_0_CLK_PTP_REF_I>,
+                                <&cpg CPG_MOD 0xb8>, <&cpg CPG_MOD 0xb9>,
+                                <&cpg CPG_MOD 0xba>, <&cpg CPG_MOD 0xbb>;
+                       clock-names = "stmmaceth", "pclk", "ptp_ref",
+                                     "tx", "rx", "tx-180", "rx-180";
+                       interrupts = <GIC_SPI 765 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 767 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 766 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 772 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 773 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 774 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 775 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 768 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 769 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 770 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 771 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq", "eth_wake_irq", "eth_lpi",
+                                         "rx-queue-0", "rx-queue-1", "rx-queue-2",
+                                         "rx-queue-3", "tx-queue-0", "tx-queue-1",
+                                         "tx-queue-2", "tx-queue-3";
+                       resets = <&cpg 0xb0>;
+                       power-domains = <&cpg>;
+                       snps,multicast-filter-bins = <256>;
+                       snps,perfect-filter-entries = <128>;
+                       rx-fifo-depth = <8192>;
+                       tx-fifo-depth = <8192>;
+                       snps,fixed-burst;
+                       snps,no-pbl-x8;
+                       snps,force_thresh_dma_mode;
+                       snps,axi-config = <&stmmac_axi_setup>;
+                       snps,mtl-rx-config = <&mtl_rx_setup0>;
+                       snps,mtl-tx-config = <&mtl_tx_setup0>;
+                       snps,txpbl = <32>;
+                       snps,rxpbl = <32>;
+                       status = "disabled";
+
+                       mdio0: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       mtl_rx_setup0: rx-queues-config {
+                               snps,rx-queues-to-use = <4>;
+                               snps,rx-sched-sp;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                                       snps,map-to-dma-channel = <0>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                                       snps,map-to-dma-channel = <1>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                                       snps,map-to-dma-channel = <2>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                                       snps,map-to-dma-channel = <3>;
+                               };
+                       };
+
+                       mtl_tx_setup0: tx-queues-config {
+                               snps,tx-queues-to-use = <4>;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                               };
+                       };
+               };
+
+               eth1: ethernet@15c40000 {
+                       compatible = "renesas,r9a09g047-gbeth", "renesas,rzv2h-gbeth",
+                                    "snps,dwmac-5.20";
+                       reg = <0 0x15c40000 0 0x10000>;
+                       clocks = <&cpg CPG_MOD 0xc3>, <&cpg CPG_MOD 0xc2>,
+                                <&cpg CPG_CORE R9A09G047_GBETH_1_CLK_PTP_REF_I>,
+                                <&cpg CPG_MOD 0xbe>, <&cpg CPG_MOD 0xbf>,
+                                <&cpg CPG_MOD 0xc0>, <&cpg CPG_MOD 0xc1>;
+                       clock-names = "stmmaceth", "pclk", "ptp_ref",
+                                     "tx", "rx", "tx-180", "rx-180";
+                       interrupts = <GIC_SPI 780 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 782 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 781 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 787 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 788 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 789 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 790 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 783 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 784 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 785 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 786 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq", "eth_wake_irq", "eth_lpi",
+                                         "rx-queue-0", "rx-queue-1", "rx-queue-2",
+                                         "rx-queue-3", "tx-queue-0", "tx-queue-1",
+                                         "tx-queue-2", "tx-queue-3";
+                       resets = <&cpg 0xb1>;
+                       power-domains = <&cpg>;
+                       snps,multicast-filter-bins = <256>;
+                       snps,perfect-filter-entries = <128>;
+                       rx-fifo-depth = <8192>;
+                       tx-fifo-depth = <8192>;
+                       snps,fixed-burst;
+                       snps,no-pbl-x8;
+                       snps,force_thresh_dma_mode;
+                       snps,axi-config = <&stmmac_axi_setup>;
+                       snps,mtl-rx-config = <&mtl_rx_setup1>;
+                       snps,mtl-tx-config = <&mtl_tx_setup1>;
+                       snps,txpbl = <32>;
+                       snps,rxpbl = <32>;
+                       status = "disabled";
+
+                       mdio1: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       mtl_rx_setup1: rx-queues-config {
+                               snps,rx-queues-to-use = <4>;
+                               snps,rx-sched-sp;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                                       snps,map-to-dma-channel = <0>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                                       snps,map-to-dma-channel = <1>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                                       snps,map-to-dma-channel = <2>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                                       snps,map-to-dma-channel = <3>;
+                               };
+                       };
+
+                       mtl_tx_setup1: tx-queues-config {
+                               snps,tx-queues-to-use = <4>;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                               };
+                       };
+               };
+
+               cru: video@16000000 {
+                       compatible = "renesas,r9a09g047-cru";
+                       reg = <0 0x16000000 0 0x400>;
+                       clocks = <&cpg CPG_MOD 0xd3>,
+                                <&cpg CPG_MOD 0xd4>,
+                                <&cpg CPG_MOD 0xd2>;
+                       clock-names = "video", "apb", "axi";
+                       interrupts = <GIC_SPI 838 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 839 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 840 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 841 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 842 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "image_conv", "axi_mst_err",
+                                         "vd_addr_wend", "sd_addr_wend",
+                                         "vsd_addr_wend";
+                       resets = <&cpg 0xc5>, <&cpg 0xc6>;
+                       reset-names = "presetn", "aresetn";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+                                       crucsi2: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi2cru>;
+                                       };
+                               };
+                       };
+               };
+
+               csi2: csi2@16000400 {
+                       compatible = "renesas,r9a09g047-csi2", "renesas,r9a09g057-csi2";
+                       reg = <0 0x16000400 0 0xc00>;
+                       interrupts = <GIC_SPI 837 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xd3>, <&cpg CPG_MOD 0xd4>;
+                       clock-names = "video", "apb";
+                       resets = <&cpg 0xc5>, <&cpg 0xc7>;
+                       reset-names = "presetn", "cmn-rstb";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                               };
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+
+                                       csi2cru: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&crucsi2>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       stmmac_axi_setup: stmmac-axi-config {
+               snps,lpi_en;
+               snps,wr_osr_lmt = <0xf>;
+               snps,rd_osr_lmt = <0xf>;
+               snps,blen = <16 8 4 0 0 0 0>;
        };
 
        timer {
diff --git a/src/arm64/renesas/r9a09g047e57-smarc-cru-csi-ov5645.dtso b/src/arm64/renesas/r9a09g047e57-smarc-cru-csi-ov5645.dtso
new file mode 100644 (file)
index 0000000..0f18f68
--- /dev/null
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree overlay for the RZ/G3E SMARC EVK with OV5645 camera
+ * connected to CSI and CRU enabled.
+ *
+ * Copyright (C) 2025 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/renesas,r9a09g047-pinctrl.h>
+
+#define OV5645_PARENT_I2C i2c0
+#include "rz-smarc-cru-csi-ov5645.dtsi"
+
+&ov5645 {
+       enable-gpios = <&pinctrl RZG3E_GPIO(D, 6) GPIO_ACTIVE_HIGH>;
+       reset-gpios = <&pinctrl RZG3E_GPIO(D, 7) GPIO_ACTIVE_LOW>;
+};
index 1f5e61a73c35b48014f5077873d6dba90d9b35a1..1e67f0a2a945c929da51b09c2c7c4862b950bc03 100644 (file)
@@ -8,6 +8,7 @@
 /dts-v1/;
 
 /* Switch selection settings */
+#define SW_LCD_EN              0
 #define SW_GPIO8_CAN0_STB      0
 #define SW_GPIO9_CAN1_STB      0
 #define SW_LCD_EN              0
 #define SW_SD0_DEV_SEL         0
 #define SW_SDIO_M2E            0
 
+#define PMOD_GPIO4             0
+#define PMOD_GPIO6             0
+#define PMOD_GPIO7             0
+
+#define KEY_1_GPIO             RZG3E_GPIO(3, 1)
+#define KEY_2_GPIO             RZG3E_GPIO(8, 4)
+#define KEY_3_GPIO             RZG3E_GPIO(8, 5)
+
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/pinctrl/renesas,r9a09g047-pinctrl.h>
 #include "r9a09g047e57.dtsi"
 #include "rzg3e-smarc-som.dtsi"
 };
 #endif
 
+&i2c0 {
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-names = "default";
+};
+
+&keys {
+       key-sleep {
+               pinctrl-0 = <&nmi_pins>;
+               pinctrl-names = "default";
+
+               interrupts-extended = <&icu 0 IRQ_TYPE_EDGE_FALLING>;
+               linux,code = <KEY_SLEEP>;
+               label = "SLEEP";
+               debounce-interval = <20>;
+       };
+#if PMOD_GPIO4
+       /delete-node/ key-1;
+#endif
+
+#if SW_LCD_EN || PMOD_GPIO6
+       /delete-node/ key-2;
+#endif
+
+#if SW_LCD_EN || PMOD_GPIO7
+       /delete-node/ key-3;
+#endif
+};
+
 &pinctrl {
        canfd_pins: canfd {
                can1_pins: can1 {
                };
        };
 
+       i2c0_pins: i2c0 {
+               pinmux = <RZG3E_PORT_PINMUX(D, 4, 4)>, /* SCL0 */
+                        <RZG3E_PORT_PINMUX(D, 5, 4)>; /* SDA0 */
+       };
+
+       nmi_pins: nmi {
+               pinmux = <RZG3E_PORT_PINMUX(S, 0, 0)>; /* NMI */
+       };
+
        scif_pins: scif {
                pins = "SCIF_TXD", "SCIF_RXD";
                renesas,output-impedance = <1>;
index 90964bd864cc9cd174f0ece4ac908116a9a2ea51..10d3b9727ea5edff9b1eeca3dea569de1e81f5ab 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";
                        resets = <&cpg 0x30>;
                };
 
+               xspi: spi@11030000 {
+                       compatible = "renesas,r9a09g056-xspi", "renesas,r9a09g047-xspi";
+                       reg = <0 0x11030000 0 0x10000>,
+                             <0 0x20000000 0 0x10000000>;
+                       reg-names = "regs", "dirmap";
+                       interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "pulse", "err_pulse";
+                       clocks = <&cpg CPG_MOD 0x9f>,
+                                <&cpg CPG_MOD 0xa0>,
+                                <&cpg CPG_CORE R9A09G056_SPI_CLK_SPI>,
+                                <&cpg CPG_MOD 0xa1>;
+                       clock-names = "ahb", "axi", "spi", "spix2";
+                       resets = <&cpg 0xa3>, <&cpg 0xa4>;
+                       reset-names = "hresetn", "aresetn";
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               ostm0: timer@11800000 {
+                       compatible = "renesas,r9a09g056-ostm", "renesas,ostm";
+                       reg = <0x0 0x11800000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 17 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&cpg CPG_MOD 0x43>;
+                       resets = <&cpg 0x6d>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ostm1: timer@11801000 {
+                       compatible = "renesas,r9a09g056-ostm", "renesas,ostm";
+                       reg = <0x0 0x11801000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 18 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&cpg CPG_MOD 0x44>;
+                       resets = <&cpg 0x6e>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ostm2: timer@14000000 {
+                       compatible = "renesas,r9a09g056-ostm", "renesas,ostm";
+                       reg = <0x0 0x14000000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&cpg CPG_MOD 0x45>;
+                       resets = <&cpg 0x6f>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ostm3: timer@14001000 {
+                       compatible = "renesas,r9a09g056-ostm", "renesas,ostm";
+                       reg = <0x0 0x14001000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 20 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&cpg CPG_MOD 0x46>;
+                       resets = <&cpg 0x70>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ostm4: timer@12c00000 {
+                       compatible = "renesas,r9a09g056-ostm", "renesas,ostm";
+                       reg = <0x0 0x12c00000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&cpg CPG_MOD 0x47>;
+                       resets = <&cpg 0x71>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ostm5: timer@12c01000 {
+                       compatible = "renesas,r9a09g056-ostm", "renesas,ostm";
+                       reg = <0x0 0x12c01000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&cpg CPG_MOD 0x48>;
+                       resets = <&cpg 0x72>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ostm6: timer@12c02000 {
+                       compatible = "renesas,r9a09g056-ostm", "renesas,ostm";
+                       reg = <0x0 0x12c02000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 23 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&cpg CPG_MOD 0x49>;
+                       resets = <&cpg 0x73>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ostm7: timer@12c03000 {
+                       compatible = "renesas,r9a09g056-ostm", "renesas,ostm";
+                       reg = <0x0 0x12c03000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 24 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&cpg CPG_MOD 0x4a>;
+                       resets = <&cpg 0x74>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               wdt0: watchdog@11c00400 {
+                       compatible = "renesas,r9a09g056-wdt", "renesas,r9a09g057-wdt";
+                       reg = <0 0x11c00400 0 0x400>;
+                       clocks = <&cpg CPG_MOD 0x4b>, <&cpg CPG_MOD 0x4c>;
+                       clock-names = "pclk", "oscclk";
+                       resets = <&cpg 0x75>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               wdt1: watchdog@14400000 {
+                       compatible = "renesas,r9a09g056-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,r9a09g056-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,r9a09g056-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";
+               };
+
                scif: serial@11c01400 {
                        compatible = "renesas,scif-r9a09g056",
                                     "renesas,scif-r9a09g057";
                        status = "disabled";
                };
 
+               i2c0: i2c@14400400 {
+                       compatible = "renesas,riic-r9a09g056", "renesas,riic-r9a09g057";
+                       reg = <0 0x14400400 0 0x400>;
+                       interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 507 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 506 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD 0x94>;
+                       resets = <&cpg 0x98>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@14400800 {
+                       compatible = "renesas,riic-r9a09g056", "renesas,riic-r9a09g057";
+                       reg = <0 0x14400800 0 0x400>;
+                       interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 509 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 508 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD 0x95>;
+                       resets = <&cpg 0x99>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@14400c00 {
+                       compatible = "renesas,riic-r9a09g056", "renesas,riic-r9a09g057";
+                       reg = <0 0x14400c00 0 0x400>;
+                       interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 511 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 510 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD 0x96>;
+                       resets = <&cpg 0x9a>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@14401000 {
+                       compatible = "renesas,riic-r9a09g056", "renesas,riic-r9a09g057";
+                       reg = <0 0x14401000 0 0x400>;
+                       interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 513 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 512 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD 0x97>;
+                       resets = <&cpg 0x9b>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c4: i2c@14401400 {
+                       compatible = "renesas,riic-r9a09g056", "renesas,riic-r9a09g057";
+                       reg = <0 0x14401400 0 0x400>;
+                       interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 515 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 514 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 201 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 202 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 203 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD 0x98>;
+                       resets = <&cpg 0x9c>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c5: i2c@14401800 {
+                       compatible = "renesas,riic-r9a09g056", "renesas,riic-r9a09g057";
+                       reg = <0 0x14401800 0 0x400>;
+                       interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 517 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 516 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD 0x99>;
+                       resets = <&cpg 0x9d>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c6: i2c@14401c00 {
+                       compatible = "renesas,riic-r9a09g056", "renesas,riic-r9a09g057";
+                       reg = <0 0x14401c00 0 0x400>;
+                       interrupts = <GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 519 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 518 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD 0x9a>;
+                       resets = <&cpg 0x9e>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c7: i2c@14402000 {
+                       compatible = "renesas,riic-r9a09g056", "renesas,riic-r9a09g057";
+                       reg = <0 0x14402000 0 0x400>;
+                       interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 521 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 520 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD 0x9b>;
+                       resets = <&cpg 0x9f>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c8: i2c@11c01000 {
+                       compatible = "renesas,riic-r9a09g056", "renesas,riic-r9a09g057";
+                       reg = <0 0x11c01000 0 0x400>;
+                       interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 523 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 522 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD 0x93>;
+                       resets = <&cpg 0xa0>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               gpu: gpu@14850000 {
+                       compatible = "renesas,r9a09g056-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";
+                       resets = <&cpg 0xdd>,
+                                <&cpg 0xde>,
+                                <&cpg 0xdf>;
+                       reset-names = "rst", "axi_rst", "ace_rst";
+                       power-domains = <&cpg>;
+                       operating-points-v2 = <&gpu_opp_table>;
+                       status = "disabled";
+               };
+
                gic: interrupt-controller@14900000 {
                        compatible = "arm,gic-v3";
                        reg = <0x0 0x14900000 0 0x20000>,
                        interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
                };
 
+               ohci0: usb@15800000 {
+                       compatible = "generic-ohci";
+                       reg = <0 0x15800000 0 0x100>;
+                       interrupts = <GIC_SPI 742 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb3>, <&cpg CPG_MOD 0xb6>;
+                       resets = <&usb20phyrst>, <&cpg 0xac>;
+                       phys = <&usb2_phy0 1>;
+                       phy-names = "usb";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ehci0: usb@15800100 {
+                       compatible = "generic-ehci";
+                       reg = <0 0x15800100 0 0x100>;
+                       interrupts = <GIC_SPI 743 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb3>, <&cpg CPG_MOD 0xb6>;
+                       resets = <&usb20phyrst>, <&cpg 0xac>;
+                       phys = <&usb2_phy0 2>;
+                       phy-names = "usb";
+                       companion = <&ohci0>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               usb2_phy0: usb-phy@15800200 {
+                       compatible = "renesas,usb2-phy-r9a09g056", "renesas,usb2-phy-r9a09g057";
+                       reg = <0 0x15800200 0 0x700>;
+                       interrupts = <GIC_SPI 745 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb3>,
+                                <&cpg CPG_CORE R9A09G056_USB2_0_CLK_CORE0>;
+                       clock-names = "fck", "usb_x1";
+                       resets = <&usb20phyrst>;
+                       #phy-cells = <1>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               hsusb: usb@15820000 {
+                       compatible = "renesas,usbhs-r9a09g056",
+                                    "renesas,rzg2l-usbhs";
+                       reg = <0 0x15820000 0 0x10000>;
+                       interrupts = <GIC_SPI 751 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 752 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 753 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 754 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb3>, <&cpg CPG_MOD 0xb5>;
+                       resets = <&usb20phyrst>,
+                                <&cpg 0xae>;
+                       phys = <&usb2_phy0 3>;
+                       phy-names = "usb";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               usb20phyrst: usb20phy-reset@15830000 {
+                       compatible = "renesas,r9a09g056-usb2phy-reset",
+                                    "renesas,r9a09g057-usb2phy-reset";
+                       reg = <0 0x15830000 0 0x10000>;
+                       clocks = <&cpg CPG_MOD 0xb6>;
+                       resets = <&cpg 0xaf>;
+                       power-domains = <&cpg>;
+                       #reset-cells = <0>;
+                       status = "disabled";
+               };
+
                sdhi0: mmc@15c00000  {
                        compatible = "renesas,sdhi-r9a09g056", "renesas,sdhi-r9a09g057";
                        reg = <0x0 0x15c00000 0 0x10000>;
                                status = "disabled";
                        };
                };
+
+               eth0: ethernet@15c30000 {
+                       compatible = "renesas,r9a09g056-gbeth", "renesas,rzv2h-gbeth",
+                                    "snps,dwmac-5.20";
+                       reg = <0 0x15c30000 0 0x10000>;
+                       interrupts = <GIC_SPI 765 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 767 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 766 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 772 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 773 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 774 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 775 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 768 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 769 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 770 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 771 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq", "eth_wake_irq", "eth_lpi",
+                                         "rx-queue-0", "rx-queue-1", "rx-queue-2",
+                                         "rx-queue-3", "tx-queue-0", "tx-queue-1",
+                                         "tx-queue-2", "tx-queue-3";
+                       clocks =  <&cpg CPG_MOD 0xbd>, <&cpg CPG_MOD 0xbc>,
+                                 <&cpg CPG_CORE R9A09G056_GBETH_0_CLK_PTP_REF_I>,
+                                 <&cpg CPG_MOD 0xb8>, <&cpg CPG_MOD 0xb9>,
+                                 <&cpg CPG_MOD 0xba>, <&cpg CPG_MOD 0xbb>;
+                       clock-names = "stmmaceth", "pclk", "ptp_ref",
+                                     "tx", "rx", "tx-180", "rx-180";
+                       resets = <&cpg 0xb0>;
+                       power-domains = <&cpg>;
+                       snps,multicast-filter-bins = <256>;
+                       snps,perfect-filter-entries = <128>;
+                       rx-fifo-depth = <8192>;
+                       tx-fifo-depth = <8192>;
+                       snps,fixed-burst;
+                       snps,no-pbl-x8;
+                       snps,force_thresh_dma_mode;
+                       snps,axi-config = <&stmmac_axi_setup>;
+                       snps,mtl-rx-config = <&mtl_rx_setup0>;
+                       snps,mtl-tx-config = <&mtl_tx_setup0>;
+                       snps,txpbl = <32>;
+                       snps,rxpbl = <32>;
+                       status = "disabled";
+
+                       mdio0: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       mtl_rx_setup0: rx-queues-config {
+                               snps,rx-queues-to-use = <4>;
+                               snps,rx-sched-sp;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                                       snps,map-to-dma-channel = <0>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                                       snps,map-to-dma-channel = <1>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                                       snps,map-to-dma-channel = <2>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                                       snps,map-to-dma-channel = <3>;
+                               };
+                       };
+
+                       mtl_tx_setup0: tx-queues-config {
+                               snps,tx-queues-to-use = <4>;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                               };
+                       };
+               };
+
+               eth1: ethernet@15c40000 {
+                       compatible = "renesas,r9a09g056-gbeth", "renesas,rzv2h-gbeth",
+                                    "snps,dwmac-5.20";
+                       reg = <0 0x15c40000 0 0x10000>;
+                       interrupts = <GIC_SPI 780 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 782 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 781 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 787 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 788 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 789 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 790 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 783 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 784 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 785 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 786 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq", "eth_wake_irq", "eth_lpi",
+                                         "rx-queue-0", "rx-queue-1", "rx-queue-2",
+                                         "rx-queue-3", "tx-queue-0", "tx-queue-1",
+                                         "tx-queue-2", "tx-queue-3";
+                       clocks =  <&cpg CPG_MOD 0xc3>, <&cpg CPG_MOD 0xc2>,
+                                 <&cpg CPG_CORE R9A09G056_GBETH_1_CLK_PTP_REF_I>,
+                                 <&cpg CPG_MOD 0xbe>, <&cpg CPG_MOD 0xbf>,
+                                 <&cpg CPG_MOD 0xc0>, <&cpg CPG_MOD 0xc1>;
+                       clock-names = "stmmaceth", "pclk", "ptp_ref",
+                                     "tx", "rx", "tx-180", "rx-180";
+                       resets = <&cpg 0xb1>;
+                       power-domains = <&cpg>;
+                       snps,multicast-filter-bins = <256>;
+                       snps,perfect-filter-entries = <128>;
+                       rx-fifo-depth = <8192>;
+                       tx-fifo-depth = <8192>;
+                       snps,fixed-burst;
+                       snps,no-pbl-x8;
+                       snps,force_thresh_dma_mode;
+                       snps,axi-config = <&stmmac_axi_setup>;
+                       snps,mtl-rx-config = <&mtl_rx_setup1>;
+                       snps,mtl-tx-config = <&mtl_tx_setup1>;
+                       snps,txpbl = <32>;
+                       snps,rxpbl = <32>;
+                       status = "disabled";
+
+                       mdio1: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       mtl_rx_setup1: rx-queues-config {
+                               snps,rx-queues-to-use = <4>;
+                               snps,rx-sched-sp;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                                       snps,map-to-dma-channel = <0>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                                       snps,map-to-dma-channel = <1>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                                       snps,map-to-dma-channel = <2>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                                       snps,map-to-dma-channel = <3>;
+                               };
+                       };
+
+                       mtl_tx_setup1: tx-queues-config {
+                               snps,tx-queues-to-use = <4>;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                               };
+                       };
+               };
+       };
+
+       stmmac_axi_setup: stmmac-axi-config {
+               snps,lpi_en;
+               snps,wr_osr_lmt = <0xf>;
+               snps,rd_osr_lmt = <0xf>;
+               snps,blen = <16 8 4 0 0 0 0>;
        };
 
        timer {
index 24343fce7f5311608f405603acd1c2edeae93bc6..03aeea78118693e5ba5732545185965a6fc56057 100644 (file)
        compatible = "renesas,rzv2n-evk", "renesas,r9a09g056n48", "renesas,r9a09g056";
 
        aliases {
+               ethernet0 = &eth0;
+               ethernet1 = &eth1;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c6 = &i2c6;
+               i2c7 = &i2c7;
+               i2c8 = &i2c8;
                mmc1 = &sdhi1;
                serial0 = &scif;
        };
                reg = <0x0 0x48000000 0x1 0xf8000000>;
        };
 
+       reg_0p8v: regulator-0p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-0.8V";
+               regulator-min-microvolt = <800000>;
+               regulator-max-microvolt = <800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
        reg_3p3v: regulator-3p3v {
                compatible = "regulator-fixed";
                regulator-name = "fixed-3.3V";
                gpios-states = <0>;
                states = <3300000 0>, <1800000 1>;
        };
+
+       /* 32.768kHz crystal */
+       x6: x6-clock {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+       };
 };
 
 &audio_extal_clk {
        clock-frequency = <22579200>;
 };
 
+&ehci0 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&eth0 {
+       pinctrl-0 = <&eth0_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+};
+
+&eth1 {
+       pinctrl-0 = <&eth1_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&phy1>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+};
+
+&gpu {
+       status = "okay";
+       mali-supply = <&reg_0p8v>;
+};
+
+&hsusb {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-0 = <&i2c1_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-0 = <&i2c2_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-0 = <&i2c3_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c6 {
+       pinctrl-0 = <&i2c6_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c7 {
+       pinctrl-0 = <&i2c7_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c8 {
+       pinctrl-0 = <&i2c8_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       status = "okay";
+
+       raa215300: pmic@12 {
+               compatible = "renesas,raa215300";
+               reg = <0x12>, <0x6f>;
+               reg-names = "main", "rtc";
+               clocks = <&x6>;
+               clock-names = "xin";
+       };
+};
+
+&mdio0 {
+       phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1640", "ethernet-phy-ieee802.3-c22";
+               reg = <0>;
+               rxc-skew-psec = <0>;
+               txc-skew-psec = <0>;
+               rxdv-skew-psec = <0>;
+               txdv-skew-psec = <0>;
+               rxd0-skew-psec = <0>;
+               rxd1-skew-psec = <0>;
+               rxd2-skew-psec = <0>;
+               rxd3-skew-psec = <0>;
+               txd0-skew-psec = <0>;
+               txd1-skew-psec = <0>;
+               txd2-skew-psec = <0>;
+               txd3-skew-psec = <0>;
+       };
+};
+
+&mdio1 {
+       phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1640", "ethernet-phy-ieee802.3-c22";
+               reg = <0>;
+               rxc-skew-psec = <0>;
+               txc-skew-psec = <0>;
+               rxdv-skew-psec = <0>;
+               txdv-skew-psec = <0>;
+               rxd0-skew-psec = <0>;
+               rxd1-skew-psec = <0>;
+               rxd2-skew-psec = <0>;
+               rxd3-skew-psec = <0>;
+               txd0-skew-psec = <0>;
+               txd1-skew-psec = <0>;
+               txd2-skew-psec = <0>;
+               txd3-skew-psec = <0>;
+       };
+};
+
+&ohci0 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&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 {
+       eth0_pins: eth0 {
+               pins = "ET0_TXC_TXCLK";
+               output-enable;
+       };
+
+       eth1_pins: eth1 {
+               pins = "ET1_TXC_TXCLK";
+               output-enable;
+       };
+
+       i2c0_pins: i2c0 {
+               pinmux = <RZV2N_PORT_PINMUX(3, 0, 1)>, /* I2C0_SDA */
+                        <RZV2N_PORT_PINMUX(3, 1, 1)>; /* I2C0_SCL */
+       };
+
+       i2c1_pins: i2c1 {
+               pinmux = <RZV2N_PORT_PINMUX(3, 2, 1)>, /* I2C1_SDA */
+                        <RZV2N_PORT_PINMUX(3, 3, 1)>; /* I2C1_SCL */
+       };
+
+       i2c2_pins: i2c2 {
+               pinmux = <RZV2N_PORT_PINMUX(2, 0, 4)>, /* I2C2_SDA */
+                        <RZV2N_PORT_PINMUX(2, 1, 4)>; /* I2C2_SCL */
+       };
+
+       i2c3_pins: i2c3 {
+               pinmux = <RZV2N_PORT_PINMUX(3, 6, 1)>, /* I2C3_SDA */
+                        <RZV2N_PORT_PINMUX(3, 7, 1)>; /* I2C3_SCL */
+       };
+
+       i2c6_pins: i2c6 {
+               pinmux = <RZV2N_PORT_PINMUX(4, 4, 1)>, /* I2C6_SDA */
+                        <RZV2N_PORT_PINMUX(4, 5, 1)>; /* I2C6_SCL */
+               /* There are no pull-up resistors on the EVK, so enable the internal pull-up */
+               bias-pull-up;
+       };
+
+       i2c7_pins: i2c7 {
+               pinmux = <RZV2N_PORT_PINMUX(4, 6, 1)>, /* I2C7_SDA */
+                        <RZV2N_PORT_PINMUX(4, 7, 1)>; /* I2C7_SCL */
+               /* There are no pull-up resistors on the EVK, so enable the internal pull-up */
+               bias-pull-up;
+       };
+
+       i2c8_pins: i2c8 {
+               pinmux = <RZV2N_PORT_PINMUX(0, 6, 1)>, /* I2C8_SDA */
+                        <RZV2N_PORT_PINMUX(0, 7, 1)>; /* I2C8_SCL */
+       };
+
        scif_pins: scif {
                pins = "SCIF_TXD", "SCIF_RXD";
                renesas,output-impedance = <1>;
                        slew-rate = <0>;
                };
        };
+
+       usb20_pins: usb20 {
+               ovc {
+                       pinmux =  <RZV2N_PORT_PINMUX(9, 6, 14)>; /* OVC */
+               };
+
+               vbus {
+                       pinmux = <RZV2N_PORT_PINMUX(9, 5, 14)>; /* VBUS */
+               };
+       };
+
+       xspi_pins: xspi0 {
+               ctrl {
+                       pins = "XSPI0_RESET0N", "XSPI0_CS0N", "XSPI0_CKP";
+                       output-enable;
+               };
+
+               io {
+                       pins = "XSPI0_IO0", "XSPI0_IO1", "XSPI0_IO2", "XSPI0_IO3";
+                       renesas,output-impedance = <3>;
+               };
+       };
 };
 
 &qextal_clk {
        sd-uhs-sdr104;
        status = "okay";
 };
+
+&usb20phyrst {
+       status = "okay";
+};
+
+&usb2_phy0 {
+       pinctrl-0 = <&usb20_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&wdt1 {
+       status = "okay";
+};
+
+&xspi {
+       pinctrl-0 = <&xspi_pins>;
+       pinctrl-names = "default";
+       /*
+        * MT25QU512ABB8E12 flash chip is capable of running at 166MHz
+        * clock frequency. Set the clock frequency to the maximum 133MHz
+        * supported by the RZ/V2N SoC.
+        */
+       assigned-clocks = <&cpg CPG_CORE R9A09G056_SPI_CLK_SPI>;
+       assigned-clock-rates = <133333334>;
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               vcc-supply = <&reg_1p8v>;
+               m25p,fast-read;
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "bl2";
+                               reg = <0x00000000 0x00060000>;
+                       };
+
+                       partition@60000 {
+                               label = "fip";
+                               reg = <0x00060000 0x1fa0000>;
+                       };
+
+                       partition@2000000 {
+                               label = "user";
+                               reg = <0x2000000 0x2000000>;
+                       };
+               };
+       };
+};
index 0f3501951409f19d7767e465340508119520ebaa..044f2a22f1614247a0df6a861dc704b39fba5dfb 100644 (file)
                        resets = <&cpg 0x30>;
                };
 
+               xspi: spi@11030000 {
+                       compatible = "renesas,r9a09g057-xspi", "renesas,r9a09g047-xspi";
+                       reg = <0 0x11030000 0 0x10000>,
+                             <0 0x20000000 0 0x10000000>;
+                       reg-names = "regs", "dirmap";
+                       interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "pulse", "err_pulse";
+                       clocks = <&cpg CPG_MOD 0x9f>,
+                                <&cpg CPG_MOD 0xa0>,
+                                <&cpg CPG_CORE R9A09G057_SPI_CLK_SPI>,
+                                <&cpg CPG_MOD 0xa1>;
+                       clock-names = "ahb", "axi", "spi", "spix2";
+                       resets = <&cpg 0xa3>, <&cpg 0xa4>;
+                       reset-names = "hresetn", "aresetn";
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                dmac0: dma-controller@11400000 {
                        compatible = "renesas,r9a09g057-dmac";
                        reg = <0 0x11400000 0 0x10000>;
                        interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
                };
 
+               ohci0: usb@15800000 {
+                       compatible = "generic-ohci";
+                       reg = <0 0x15800000 0 0x100>;
+                       interrupts = <GIC_SPI 742 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb3>, <&cpg CPG_MOD 0xb6>;
+                       resets = <&usb20phyrst>, <&cpg 0xac>;
+                       phys = <&usb2_phy0 1>;
+                       phy-names = "usb";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ohci1: usb@15810000 {
+                       compatible = "generic-ohci";
+                       reg = <0 0x15810000 0 0x100>;
+                       interrupts = <GIC_SPI 747 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb4>, <&cpg CPG_MOD 0xb7>;
+                       resets = <&usb21phyrst>, <&cpg 0xad>;
+                       phys = <&usb2_phy1 1>;
+                       phy-names = "usb";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ehci0: usb@15800100 {
+                       compatible = "generic-ehci";
+                       reg = <0 0x15800100 0 0x100>;
+                       interrupts = <GIC_SPI 743 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb3>, <&cpg CPG_MOD 0xb6>;
+                       resets = <&usb20phyrst>, <&cpg 0xac>;
+                       phys = <&usb2_phy0 2>;
+                       phy-names = "usb";
+                       companion = <&ohci0>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ehci1: usb@15810100 {
+                       compatible = "generic-ehci";
+                       reg = <0 0x15810100 0 0x100>;
+                       interrupts = <GIC_SPI 748 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb4>, <&cpg CPG_MOD 0xb7>;
+                       resets = <&usb21phyrst>, <&cpg 0xad>;
+                       phys = <&usb2_phy1 2>;
+                       phy-names = "usb";
+                       companion = <&ohci1>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               usb2_phy0: usb-phy@15800200 {
+                       compatible = "renesas,usb2-phy-r9a09g057";
+                       reg = <0 0x15800200 0 0x700>;
+                       interrupts = <GIC_SPI 745 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb3>,
+                                <&cpg CPG_CORE R9A09G057_USB2_0_CLK_CORE0>;
+                       clock-names = "fck", "usb_x1";
+                       resets = <&usb20phyrst>;
+                       #phy-cells = <1>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               usb2_phy1: usb-phy@15810200 {
+                       compatible = "renesas,usb2-phy-r9a09g057";
+                       reg = <0 0x15810200 0 0x700>;
+                       interrupts = <GIC_SPI 750 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb4>,
+                                <&cpg CPG_CORE R9A09G057_USB2_0_CLK_CORE1>;
+                       clock-names = "fck", "usb_x1";
+                       resets = <&usb21phyrst>;
+                       #phy-cells = <1>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               hsusb: usb@15820000 {
+                       compatible = "renesas,usbhs-r9a09g057",
+                                    "renesas,rzg2l-usbhs";
+                       reg = <0 0x15820000 0 0x10000>;
+                       interrupts = <GIC_SPI 751 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 752 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 753 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 754 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xb3>, <&cpg CPG_MOD 0xb5>;
+                       resets = <&usb20phyrst>,
+                                <&cpg 0xae>;
+                       phys = <&usb2_phy0 3>;
+                       phy-names = "usb";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               usb20phyrst: usb20phy-reset@15830000 {
+                       compatible = "renesas,r9a09g057-usb2phy-reset";
+                       reg = <0 0x15830000 0 0x10000>;
+                       clocks = <&cpg CPG_MOD 0xb6>;
+                       resets = <&cpg 0xaf>;
+                       power-domains = <&cpg>;
+                       #reset-cells = <0>;
+                       status = "disabled";
+               };
+
+               usb21phyrst: usb21phy-reset@15840000 {
+                       compatible = "renesas,r9a09g057-usb2phy-reset";
+                       reg = <0 0x15840000 0 0x10000>;
+                       clocks = <&cpg CPG_MOD 0xb7>;
+                       resets = <&cpg 0xaf>;
+                       power-domains = <&cpg>;
+                       #reset-cells = <0>;
+                       status = "disabled";
+               };
+
                sdhi0: mmc@15c00000  {
                        compatible = "renesas,sdhi-r9a09g057";
                        reg = <0x0 0x15c00000 0 0x10000>;
                                status = "disabled";
                        };
                };
+
+               eth0: ethernet@15c30000 {
+                       compatible = "renesas,r9a09g057-gbeth", "renesas,rzv2h-gbeth",
+                                    "snps,dwmac-5.20";
+                       reg = <0 0x15c30000 0 0x10000>;
+                       interrupts = <GIC_SPI 765 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 767 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 766 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 772 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 773 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 774 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 775 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 768 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 769 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 770 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 771 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq", "eth_wake_irq", "eth_lpi",
+                                         "rx-queue-0", "rx-queue-1", "rx-queue-2",
+                                         "rx-queue-3", "tx-queue-0", "tx-queue-1",
+                                         "tx-queue-2", "tx-queue-3";
+                       clocks =  <&cpg CPG_MOD 0xbd>, <&cpg CPG_MOD 0xbc>,
+                                 <&cpg CPG_CORE R9A09G057_GBETH_0_CLK_PTP_REF_I>,
+                                 <&cpg CPG_MOD 0xb8>, <&cpg CPG_MOD 0xb9>,
+                                 <&cpg CPG_MOD 0xba>, <&cpg CPG_MOD 0xbb>;
+                       clock-names = "stmmaceth", "pclk", "ptp_ref",
+                                     "tx", "rx", "tx-180", "rx-180";
+                       resets = <&cpg 0xb0>;
+                       power-domains = <&cpg>;
+                       snps,multicast-filter-bins = <256>;
+                       snps,perfect-filter-entries = <128>;
+                       rx-fifo-depth = <8192>;
+                       tx-fifo-depth = <8192>;
+                       snps,fixed-burst;
+                       snps,no-pbl-x8;
+                       snps,force_thresh_dma_mode;
+                       snps,axi-config = <&stmmac_axi_setup>;
+                       snps,mtl-rx-config = <&mtl_rx_setup0>;
+                       snps,mtl-tx-config = <&mtl_tx_setup0>;
+                       snps,txpbl = <32>;
+                       snps,rxpbl = <32>;
+                       status = "disabled";
+
+                       mdio0: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       mtl_rx_setup0: rx-queues-config {
+                               snps,rx-queues-to-use = <4>;
+                               snps,rx-sched-sp;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                                       snps,map-to-dma-channel = <0>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                                       snps,map-to-dma-channel = <1>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                                       snps,map-to-dma-channel = <2>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                                       snps,map-to-dma-channel = <3>;
+                               };
+                       };
+
+                       mtl_tx_setup0: tx-queues-config {
+                               snps,tx-queues-to-use = <4>;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                               };
+                       };
+               };
+
+               eth1: ethernet@15c40000 {
+                       compatible = "renesas,r9a09g057-gbeth", "renesas,rzv2h-gbeth",
+                                    "snps,dwmac-5.20";
+                       reg = <0 0x15c40000 0 0x10000>;
+                       interrupts = <GIC_SPI 780 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 782 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 781 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 787 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 788 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 789 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 790 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 783 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 784 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 785 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 786 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq", "eth_wake_irq", "eth_lpi",
+                                         "rx-queue-0", "rx-queue-1", "rx-queue-2",
+                                         "rx-queue-3", "tx-queue-0", "tx-queue-1",
+                                         "tx-queue-2", "tx-queue-3";
+                       clocks =  <&cpg CPG_MOD 0xc3>, <&cpg CPG_MOD 0xc2>,
+                                 <&cpg CPG_CORE R9A09G057_GBETH_1_CLK_PTP_REF_I>,
+                                 <&cpg CPG_MOD 0xbe>, <&cpg CPG_MOD 0xbf>,
+                                 <&cpg CPG_MOD 0xc0>, <&cpg CPG_MOD 0xc1>;
+                       clock-names = "stmmaceth", "pclk", "ptp_ref",
+                                     "tx", "rx", "tx-180", "rx-180";
+                       resets = <&cpg 0xb1>;
+                       power-domains = <&cpg>;
+                       snps,multicast-filter-bins = <256>;
+                       snps,perfect-filter-entries = <128>;
+                       rx-fifo-depth = <8192>;
+                       tx-fifo-depth = <8192>;
+                       snps,fixed-burst;
+                       snps,no-pbl-x8;
+                       snps,force_thresh_dma_mode;
+                       snps,axi-config = <&stmmac_axi_setup>;
+                       snps,mtl-rx-config = <&mtl_rx_setup1>;
+                       snps,mtl-tx-config = <&mtl_tx_setup1>;
+                       snps,txpbl = <32>;
+                       snps,rxpbl = <32>;
+                       status = "disabled";
+
+                       mdio1: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       mtl_rx_setup1: rx-queues-config {
+                               snps,rx-queues-to-use = <4>;
+                               snps,rx-sched-sp;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                                       snps,map-to-dma-channel = <0>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                                       snps,map-to-dma-channel = <1>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                                       snps,map-to-dma-channel = <2>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                                       snps,map-to-dma-channel = <3>;
+                               };
+                       };
+
+                       mtl_tx_setup1: tx-queues-config {
+                               snps,tx-queues-to-use = <4>;
+
+                               queue0 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x1>;
+                               };
+
+                               queue1 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x2>;
+                               };
+
+                               queue2 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x4>;
+                               };
+
+                               queue3 {
+                                       snps,dcb-algorithm;
+                                       snps,priority = <0x8>;
+                               };
+                       };
+               };
+       };
+
+       stmmac_axi_setup: stmmac-axi-config {
+               snps,lpi_en;
+               snps,wr_osr_lmt = <0xf>;
+               snps,rd_osr_lmt = <0xf>;
+               snps,blen = <16 8 4 0 0 0 0>;
        };
 
        timer {
index 063eca0ba3e2f3a280aa8c68eb8c5c3d2e24ba84..5c3f4e471e3de99455b82f871455263ecfbe2fb0 100644 (file)
@@ -16,6 +16,8 @@
        compatible = "renesas,rzv2h-evk", "renesas,r9a09g057h44", "renesas,r9a09g057";
 
        aliases {
+               ethernet0 = &eth0;
+               ethernet1 = &eth1;
                i2c0 = &i2c0;
                i2c1 = &i2c1;
                i2c2 = &i2c2;
@@ -43,7 +45,7 @@
                reg = <0x2 0x40000000 0x2 0x00000000>;
        };
 
-       reg_0p8v: regulator0 {
+       reg_0p8v: regulator-0p8v {
                compatible = "regulator-fixed";
 
                regulator-name = "fixed-0.8V";
                regulator-always-on;
        };
 
-       reg_3p3v: regulator1 {
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
                compatible = "regulator-fixed";
 
                regulator-name = "fixed-3.3V";
                gpios-states = <0>;
                states = <3300000 0>, <1800000 1>;
        };
+
+       /* 32.768kHz crystal */
+       x6: x6-clock {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+       };
 };
 
 &audio_extal_clk {
        clock-frequency = <22579200>;
 };
 
+&ehci0 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&eth0 {
+       pinctrl-0 = <&eth0_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+};
+
+&eth1 {
+       pinctrl-0 = <&eth1_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&phy1>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+};
+
 &gpu {
        status = "okay";
        mali-supply = <&reg_0p8v>;
 };
 
+&hsusb {
+       dr_mode = "otg";
+       status = "okay";
+};
+
 &i2c0 {
        pinctrl-0 = <&i2c0_pins>;
        pinctrl-names = "default";
        clock-frequency = <400000>;
 
        status = "okay";
+
+       raa215300: pmic@12 {
+               compatible = "renesas,raa215300";
+               reg = <0x12>, <0x6f>;
+               reg-names = "main", "rtc";
+               clocks = <&x6>;
+               clock-names = "xin";
+       };
+};
+
+&mdio0 {
+       phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1640", "ethernet-phy-ieee802.3-c22";
+               reg = <0>;
+               rxc-skew-psec = <0>;
+               txc-skew-psec = <0>;
+               rxdv-skew-psec = <0>;
+               txdv-skew-psec = <0>;
+               rxd0-skew-psec = <0>;
+               rxd1-skew-psec = <0>;
+               rxd2-skew-psec = <0>;
+               rxd3-skew-psec = <0>;
+               txd0-skew-psec = <0>;
+               txd1-skew-psec = <0>;
+               txd2-skew-psec = <0>;
+               txd3-skew-psec = <0>;
+       };
+};
+
+&mdio1 {
+       phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1640", "ethernet-phy-ieee802.3-c22";
+               reg = <0>;
+               rxc-skew-psec = <0>;
+               txc-skew-psec = <0>;
+               rxdv-skew-psec = <0>;
+               txdv-skew-psec = <0>;
+               rxd0-skew-psec = <0>;
+               rxd1-skew-psec = <0>;
+               rxd2-skew-psec = <0>;
+               rxd3-skew-psec = <0>;
+               txd0-skew-psec = <0>;
+               txd1-skew-psec = <0>;
+               txd2-skew-psec = <0>;
+               txd3-skew-psec = <0>;
+       };
+};
+
+&ohci0 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
 };
 
 &ostm0 {
 };
 
 &pinctrl {
+       eth0_pins: eth0 {
+               pins = "ET0_TXC_TXCLK";
+               output-enable;
+       };
+
+       eth1_pins: eth1 {
+               pins = "ET1_TXC_TXCLK";
+               output-enable;
+       };
+
        i2c0_pins: i2c0 {
                pinmux = <RZV2H_PORT_PINMUX(3, 0, 1)>, /* I2C0_SDA */
                         <RZV2H_PORT_PINMUX(3, 1, 1)>; /* I2C0_SCL */
                        pinmux = <RZV2H_PORT_PINMUX(9, 4, 14)>; /* SD1_CD */
                };
        };
+
+       usb20_pins: usb20 {
+               ovc {
+                       pinmux =  <RZV2H_PORT_PINMUX(9, 6, 14)>; /* OVC */
+               };
+
+               vbus {
+                       pinmux = <RZV2H_PORT_PINMUX(9, 5, 14)>; /* VBUS */
+               };
+       };
+
+       usb21_pins: usb21 {
+               ovc {
+                       pinmux = <RZV2H_PORT_PINMUX(6, 7, 14)>; /* OVC */
+               };
+
+               vbus {
+                       pinmux = <RZV2H_PORT_PINMUX(6, 6, 14)>; /* VBUS */
+               };
+       };
+
+       xspi_pins: xspi0 {
+               ctrl {
+                       pins = "XSPI0_RESET0N", "XSPI0_CS0N", "XSPI0_CKP";
+                       output-enable;
+               };
+
+               io {
+                       pins = "XSPI0_IO0", "XSPI0_IO1", "XSPI0_IO2", "XSPI0_IO3";
+                       renesas,output-impedance = <3>;
+               };
+       };
 };
 
 &qextal_clk {
        status = "okay";
 };
 
+&usb20phyrst {
+       status = "okay";
+};
+
+&usb21phyrst {
+       status = "okay";
+};
+
+&usb2_phy0 {
+       pinctrl-0 = <&usb20_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&usb2_phy1 {
+       pinctrl-0 = <&usb21_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
 &wdt1 {
        status = "okay";
 };
+
+&xspi {
+       pinctrl-0 = <&xspi_pins>;
+       pinctrl-names = "default";
+       /*
+        * MT25QU512ABB8E12 flash chip is capable of running at 166MHz
+        * clock frequency. Set the clock frequency to the maximum 133MHz
+        * supported by the RZ/V2H SoC.
+        */
+       assigned-clocks = <&cpg CPG_CORE R9A09G057_SPI_CLK_SPI>;
+       assigned-clock-rates = <133333334>;
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               vcc-supply = <&reg_1p8v>;
+               m25p,fast-read;
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "bl2";
+                               reg = <0x00000000 0x00060000>;
+                       };
+
+                       partition@60000 {
+                               label = "fip";
+                               reg = <0x00060000 0x1fa0000>;
+                       };
+
+                       partition@2000000 {
+                               label = "user";
+                               reg = <0x2000000 0x2000000>;
+                       };
+               };
+       };
+};
index afdc1940e24abb903e93d252cf6e558abce518c8..58561da3007a45cea4ff9ef86a70db28c71565df 100644 (file)
@@ -23,6 +23,9 @@
  * SW_GPIO9_CAN1_STB:
  *     0 - Connect to GPIO9 PMOD (default)
  *     1 - Connect to CAN1 transceiver STB pin
+ *
+ * GPIO keys are enabled by default. Use PMOD_GPIO macros to disable them
+ * if needed.
  */
 
 / {
@@ -35,6 +38,7 @@
        };
 
        aliases {
+               i2c0 = &i2c0;
                serial3 = &scif0;
                mmc1 = &sdhi1;
        };
                max-bitrate = <8000000>;
                status = "disabled";
        };
+
+       keys: keys {
+               compatible = "gpio-keys";
+
+               key-1 {
+                       interrupts-extended = <&pinctrl KEY_1_GPIO IRQ_TYPE_EDGE_FALLING>;
+                       linux,code = <KEY_1>;
+                       label = "USER_SW1";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+
+               key-2 {
+                       interrupts-extended = <&pinctrl KEY_2_GPIO IRQ_TYPE_EDGE_FALLING>;
+                       linux,code = <KEY_2>;
+                       label = "USER_SW2";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+
+               key-3 {
+                       interrupts-extended = <&pinctrl KEY_3_GPIO IRQ_TYPE_EDGE_FALLING>;
+                       linux,code = <KEY_3>;
+                       label = "USER_SW3";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+       };
 };
 
 &canfd {
        status = "okay";
 };
 
+&i2c0 {
+       status = "okay";
+       clock-frequency = <400000>;
+};
+
 &scif0 {
        status = "okay";
 };
index ecea29a76b144ef6869e8a92a1b395e09cc8ac83..7faa44510d98833bef396e9f069c7c2a4fe3991f 100644 (file)
@@ -26,6 +26,8 @@
        compatible = "renesas,rzg3e-smarcm", "renesas,r9a09g047e57", "renesas,r9a09g047";
 
        aliases {
+               ethernet0 = &eth0;
+               ethernet1 = &eth1;
                i2c2 = &i2c2;
                mmc0 = &sdhi0;
                mmc2 = &sdhi2;
        clock-frequency = <48000000>;
 };
 
+&eth0 {
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+
+       pinctrl-0 = <&eth0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&eth1 {
+       phy-handle = <&phy1>;
+       phy-mode = "rgmii-id";
+
+       pinctrl-0 = <&eth1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
 &gpu {
        status = "okay";
        mali-supply = <&reg_vdd0p8v_others>;
        };
 };
 
+&mdio0 {
+       phy0: ethernet-phy@7 {
+               compatible = "ethernet-phy-id0022.1640",
+                            "ethernet-phy-ieee802.3-c22";
+               reg = <7>;
+               interrupts-extended = <&icu 3 IRQ_TYPE_LEVEL_LOW>;
+               rxc-skew-psec = <1400>;
+               txc-skew-psec = <1400>;
+               rxdv-skew-psec = <0>;
+               txdv-skew-psec = <0>;
+               rxd0-skew-psec = <0>;
+               rxd1-skew-psec = <0>;
+               rxd2-skew-psec = <0>;
+               rxd3-skew-psec = <0>;
+               txd0-skew-psec = <0>;
+               txd1-skew-psec = <0>;
+               txd2-skew-psec = <0>;
+               txd3-skew-psec = <0>;
+       };
+};
+
+&mdio1 {
+       phy1: ethernet-phy@7 {
+               compatible = "ethernet-phy-id0022.1640",
+                            "ethernet-phy-ieee802.3-c22";
+               reg = <7>;
+               interrupts-extended = <&icu 16 IRQ_TYPE_LEVEL_LOW>;
+               rxc-skew-psec = <1400>;
+               txc-skew-psec = <1400>;
+               rxdv-skew-psec = <0>;
+               txdv-skew-psec = <0>;
+               rxd0-skew-psec = <0>;
+               rxd1-skew-psec = <0>;
+               rxd2-skew-psec = <0>;
+               rxd3-skew-psec = <0>;
+               txd0-skew-psec = <0>;
+               txd1-skew-psec = <0>;
+               txd2-skew-psec = <0>;
+               txd3-skew-psec = <0>;
+       };
+};
+
 &pinctrl {
+       eth0_pins: eth0 {
+               clk {
+                       pinmux = <RZG3E_PORT_PINMUX(B, 1, 1)>; /* TXC */
+                       output-enable;
+               };
+
+               ctrl {
+                       pinmux = <RZG3E_PORT_PINMUX(A, 1, 1)>, /* MDC */
+                                <RZG3E_PORT_PINMUX(A, 0, 1)>, /* MDIO */
+                                <RZG3E_PORT_PINMUX(C, 2, 15)>, /* PHY_INTR (IRQ2) */
+                                <RZG3E_PORT_PINMUX(C, 1, 1)>, /* RXD3 */
+                                <RZG3E_PORT_PINMUX(C, 0, 1)>, /* RXD2 */
+                                <RZG3E_PORT_PINMUX(B, 7, 1)>, /* RXD1 */
+                                <RZG3E_PORT_PINMUX(B, 6, 1)>, /* RXD0 */
+                                <RZG3E_PORT_PINMUX(B, 0, 1)>, /* RXC */
+                                <RZG3E_PORT_PINMUX(A, 2, 1)>, /* RX_CTL */
+                                <RZG3E_PORT_PINMUX(B, 5, 1)>, /* TXD3 */
+                                <RZG3E_PORT_PINMUX(B, 4, 1)>, /* TXD2 */
+                                <RZG3E_PORT_PINMUX(B, 3, 1)>, /* TXD1 */
+                                <RZG3E_PORT_PINMUX(B, 2, 1)>, /* TXD0 */
+                                <RZG3E_PORT_PINMUX(A, 3, 1)>; /* TX_CTL */
+               };
+       };
+
+       eth1_pins: eth1 {
+               clk {
+                       pinmux = <RZG3E_PORT_PINMUX(E, 1, 1)>; /* TXC */
+                       output-enable;
+               };
+
+               ctrl {
+
+                       pinmux = <RZG3E_PORT_PINMUX(D, 1, 1)>, /* MDC */
+                                <RZG3E_PORT_PINMUX(D, 0, 1)>, /* MDIO */
+                                <RZG3E_PORT_PINMUX(F, 2, 15)>, /* PHY_INTR (IRQ15) */
+                                <RZG3E_PORT_PINMUX(F, 1, 1)>, /* RXD3 */
+                                <RZG3E_PORT_PINMUX(F, 0, 1)>, /* RXD2 */
+                                <RZG3E_PORT_PINMUX(E, 7, 1)>, /* RXD1 */
+                                <RZG3E_PORT_PINMUX(E, 6, 1)>, /* RXD0 */
+                                <RZG3E_PORT_PINMUX(E, 0, 1)>, /* RXC */
+                                <RZG3E_PORT_PINMUX(D, 2, 1)>, /* RX_CTL */
+                                <RZG3E_PORT_PINMUX(E, 5, 1)>, /* TXD3 */
+                                <RZG3E_PORT_PINMUX(E, 4, 1)>, /* TXD2 */
+                                <RZG3E_PORT_PINMUX(E, 3, 1)>, /* TXD1 */
+                                <RZG3E_PORT_PINMUX(E, 2, 1)>, /* TXD0 */
+                                <RZG3E_PORT_PINMUX(D, 3, 1)>; /* TX_CTL */
+               };
+       };
+
        i2c2_pins: i2c {
                pinmux = <RZG3E_PORT_PINMUX(3, 4, 1)>, /* SCL2 */
                         <RZG3E_PORT_PINMUX(3, 5, 1)>; /* SDA2 */
                        pinmux = <RZG3E_PORT_PINMUX(K, 2, 1)>; /* SD2PWEN */
                };
        };
+
+       xspi_pins: xspi0 {
+               pinmux = <RZG3E_PORT_PINMUX(M, 0, 0)>, /* XSPI0_IO0 */
+                        <RZG3E_PORT_PINMUX(M, 1, 0)>, /* XSPI0_IO1 */
+                        <RZG3E_PORT_PINMUX(M, 2, 0)>, /* XSPI0_IO2 */
+                        <RZG3E_PORT_PINMUX(M, 3, 0)>, /* XSPI0_IO3 */
+                        <RZG3E_PORT_PINMUX(L, 0, 0)>, /* XSPI0_CKP */
+                        <RZG3E_PORT_PINMUX(L, 1, 0)>; /* XSPI0_CS0 */
+       };
 };
 
 &qextal_clk {
 &wdt1 {
        status = "okay";
 };
+
+&xspi {
+       pinctrl-0 = <&xspi_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               vcc-supply = <&reg_1p8v>;
+               m25p,fast-read;
+               spi-max-frequency = <50000000>;
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "bl2";
+                               reg = <0x00000000 0x00060000>;
+                       };
+
+                       partition@60000 {
+                               label = "fip";
+                               reg = <0x00060000 0x007a0000>;
+                       };
+
+                       partition@800000 {
+                               label = "user";
+                               reg = <0x800000 0x800000>;
+                       };
+               };
+       };
+};
diff --git a/src/arm64/renesas/rzv2-evk-cn15-emmc.dtso b/src/arm64/renesas/rzv2-evk-cn15-emmc.dtso
new file mode 100644 (file)
index 0000000..eda2b31
--- /dev/null
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Shared DT overlay for the eMMC Sub Board (RTK0EF0186B02000BJ), which
+ * is connected to the CN15 connector on the RZ/V2H and RZ/V2N EVKs.
+ *
+ * Copyright (C) 2025 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
+
+&{/} {
+       aliases {
+               mmc0 = "/soc/mmc@15c00000";
+       };
+};
+
+&pinctrl {
+       sdhi0_emmc_pins: emmc-pins {
+               sd0-clk {
+                       pins = "SD0CLK";
+                       renesas,output-impedance = <3>;
+                       slew-rate = <0>;
+               };
+
+               sd0-dat-cmd {
+                       pins = "SD0DAT0", "SD0DAT1", "SD0DAT2", "SD0DAT3", "SD0DAT4",
+                              "SD0DAT5", "SD0DAT6", "SD0DAT7", "SD0CMD";
+                       input-enable;
+                       renesas,output-impedance = <3>;
+                       slew-rate = <0>;
+               };
+       };
+};
+
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_emmc_pins>;
+       pinctrl-1 = <&sdhi0_emmc_pins>;
+       pinctrl-names = "default", "state_uhs";
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&reg_1p8v>;
+       bus-width = <8>;
+       mmc-hs200-1_8v;
+       non-removable;
+       fixed-emmc-driver-type = <1>;
+       status = "okay";
+};
diff --git a/src/arm64/renesas/rzv2-evk-cn15-sd.dtso b/src/arm64/renesas/rzv2-evk-cn15-sd.dtso
new file mode 100644 (file)
index 0000000..0af1e0a
--- /dev/null
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Shared DT overlay for the microSD Sub Board (RTK0EF0186B01000BJ), which
+ * is connected to the CN15 connector on the RZ/V2H and RZ/V2N EVKs.
+ *
+ * Copyright (C) 2025 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
+
+&{/} {
+       aliases {
+               mmc0 = "/soc/mmc@15c00000";
+       };
+
+       vqmmc_sdhi0: regulator-vqmmc-sdhi0 {
+               compatible = "regulator-gpio";
+               regulator-name = "SDHI0 VqmmC";
+               gpios = <&pinctrl RZG2L_GPIO(10, 0) GPIO_ACTIVE_HIGH>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios-states = <0>;
+               states = <3300000 0>, <1800000 1>;
+       };
+};
+
+&pinctrl {
+       sdhi0-pwr-en-hog {
+               gpio-hog;
+               gpios = <RZG2L_GPIO(10, 1) GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "sd0_pwr_en";
+       };
+
+       sdhi0_pins: sd0 {
+               sd0-cd {
+                       pinmux = <RZG2L_PORT_PINMUX(10, 5, 15)>; /* SD0_CD */
+               };
+
+               sd0-clk {
+                       pins = "SD0CLK";
+                       renesas,output-impedance = <3>;
+                       slew-rate = <0>;
+               };
+
+               sd0-dat-cmd {
+                       pins = "SD0DAT0", "SD0DAT1", "SD0DAT2", "SD0DAT3", "SD0CMD";
+                       input-enable;
+                       renesas,output-impedance = <3>;
+                       slew-rate = <0>;
+               };
+       };
+};
+
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_pins>;
+       pinctrl-1 = <&sdhi0_pins>;
+       pinctrl-names = "default", "state_uhs";
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&vqmmc_sdhi0>;
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       status = "okay";
+};
index 68971c870d1722fc9cb2d1e5d9c9da80de3139db..bbb3583372d043570305cd87ccfc3e8a9004c57c 100644 (file)
 };
 
 &i2c_dvfs {
+       bootph-all;
        status = "okay";
 
        clock-frequency = <400000>;
                compatible = "rohm,br24t01", "atmel,24c01";
                reg = <0x50>;
                pagesize = <8>;
+               bootph-all;
        };
 };
 
index fcab957b54f70479e6481e066935a8382e206505..8a30908992ab095f6a398b58c7dfe1bef008e472 100644 (file)
 };
 
 &i2c_dvfs {
+       bootph-all;
        status = "okay";
 
        clock-frequency = <400000>;
                compatible = "rohm,br24t01", "atmel,24c01";
                reg = <0x50>;
                pagesize = <8>;
+               bootph-all;
        };
 };
 
index 1d26164be7b86126c2cdf8b9cdcc8057a523eb2d..a31c61c8f148dcbdd7c67a091b86200e1337764a 100644 (file)
@@ -12,6 +12,8 @@
 };
 
 &dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
 
        panel@0 {
index 82c6acdb4fae7ad7f88794191fcdb2946dae8733..a3c6edfdb37cd5aaf5951ee8f64785af45d9ff89 100644 (file)
@@ -12,6 +12,8 @@
 };
 
 &dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
 
        panel@0 {
index 94449132df387b7ee964ce49307c020f57b5e558..9b5eff392dfa10a07a827df59be7736718d61c4e 100644 (file)
@@ -12,6 +12,8 @@
 };
 
 &dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
 
        panel@0 {
index d7b639e7ccab0825b039834d8dc1375af12ea0ed..36b7cae49e31306c483aecf101e68880431c1273 100644 (file)
@@ -16,6 +16,8 @@
 };
 
 &dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
 
        panel@0 {
index d93aaac7a42f151590808083e3956a0f64ce7710..85d1642eb9bee03cb7a532be0e1fd3ac80d61666 100644 (file)
 };
 
 &dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
 
        ports {
 
        ports {
                port@0 {
-                       mipi_in_ucam: endpoint@0 {
-                               reg = <0>;
+                       mipi_in_ucam: endpoint {
                                data-lanes = <1 2>;
                                remote-endpoint = <&ucam_out>;
                        };
index b71929bcb33e6a7d792246cda2feccc4fa370ed5..932721ffd47075ec67749b3cc071559f59f7d417 100644 (file)
@@ -12,6 +12,8 @@
 };
 
 &dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
 
        panel@0 {
index a9bd5936c701ac2e5080bee14c27b03056c764c5..70adf091371c3307b40daabfb22330528e8ae71d 100644 (file)
@@ -12,6 +12,8 @@
 };
 
 &dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
 
        panel@0 {
index 3f9a133d7373a122861931b7c8199bee485234a5..192791993f05911326bd8ae451daaa29ccc9ea73 100644 (file)
@@ -72,7 +72,7 @@
        };
 
        vcc_cam_avdd: regulator-vcc-cam-avdd {
-               compatible  = "regulator-fixed";
+               compatible = "regulator-fixed";
                regulator-name = "vcc_cam_avdd";
                gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>;
                pinctrl-names = "default";
@@ -83,7 +83,7 @@
        };
 
        vcc_cam_dovdd: regulator-vcc-cam-dovdd {
-               compatible  = "regulator-fixed";
+               compatible = "regulator-fixed";
                regulator-name = "vcc_cam_dovdd";
                gpio = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>;
                pinctrl-names = "default";
@@ -94,7 +94,7 @@
        };
 
        vcc_cam_dvdd: regulator-vcc-cam-dvdd {
-               compatible  = "regulator-fixed";
+               compatible = "regulator-fixed";
                regulator-name = "vcc_cam_dvdd";
                gpio = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
                enable-active-high;
        };
 
        vcc_lens_afvdd: regulator-vcc-lens-afvdd {
-               compatible  = "regulator-fixed";
+               compatible = "regulator-fixed";
                regulator-name = "vcc_lens_afvdd";
                gpio = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>;
                pinctrl-names = "default";
 
        ports {
                port@0 {
-                       mipi_in_ucam: endpoint@0 {
-                               reg = <0>;
+                       mipi_in_ucam: endpoint {
                                data-lanes = <1 2>;
                                remote-endpoint = <&ucam_out>;
                        };
index 7d9ea5aa598486680191d52e4c87af59f7b0e579..760d5139f95dfa4f71a2a03bfa140b7a71e40025 100644 (file)
@@ -26,7 +26,7 @@
        };
 
        cam_afvdd_2v8: regulator-cam-afvdd-2v8 {
-               compatible  = "regulator-fixed";
+               compatible = "regulator-fixed";
                gpio = <&pca9670 2 GPIO_ACTIVE_LOW>;
                regulator-max-microvolt = <2800000>;
                regulator-min-microvolt = <2800000>;
@@ -35,7 +35,7 @@
        };
 
        cam_avdd_2v8: regulator-cam-avdd-2v8 {
-               compatible  = "regulator-fixed";
+               compatible = "regulator-fixed";
                gpio = <&pca9670 4 GPIO_ACTIVE_LOW>;
                regulator-max-microvolt = <2800000>;
                regulator-min-microvolt = <2800000>;
@@ -44,7 +44,7 @@
        };
 
        cam_dovdd_1v8: regulator-cam-dovdd-1v8 {
-               compatible  = "regulator-fixed";
+               compatible = "regulator-fixed";
                gpio = <&pca9670 3 GPIO_ACTIVE_LOW>;
                regulator-max-microvolt = <1800000>;
                regulator-min-microvolt = <1800000>;
        };
 };
 
+&cif_clkout_m0 {
+       rockchip,pins =
+               <2 RK_PB3 1 &pcfg_pull_none_12ma>;
+};
+
+&csi_dphy {
+       status = "okay";
+};
+
 &display_subsystem {
        status = "okay";
 };
        /* OV5675, GT911, DW9714 are limited to 400KHz */
        clock-frequency = <400000>;
 
+       focus: focus@c {
+               compatible = "dongwoon,dw9714";
+               reg = <0xc>;
+               vcc-supply = <&cam_afvdd_2v8>;
+       };
+
        touchscreen@14 {
                compatible = "goodix,gt911";
                reg = <0x14>;
                pinctrl-names = "default";
                reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
        };
+
+       camera@36 {
+               compatible = "ovti,ov5675";
+               reg = <0x36>;
+               clocks = <&cru SCLK_CIF_OUT>;
+               assigned-clocks = <&cru SCLK_CIF_OUT>;
+               /* Only parent to get exactly 19.2MHz */
+               assigned-clock-parents = <&cru USB480M>;
+               assigned-clock-rates = <19200000>;
+               avdd-supply = <&cam_avdd_2v8>;
+               dvdd-supply = <&cam_dvdd_1v2>;
+               dovdd-supply = <&cam_dovdd_1v8>;
+               lens-focus = <&focus>;
+               orientation = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cif_clkout_m0>;
+               reset-gpios = <&pca9670 6 GPIO_ACTIVE_LOW>;
+               rotation = <180>;
+
+               port {
+                       cam_out: endpoint {
+                               data-lanes = <1 2>;
+                               link-frequencies = /bits/ 64 <450000000>;
+                               remote-endpoint = <&mipi_in_cam>;
+                       };
+               };
+       };
+};
+
+&isp {
+       status = "okay";
+};
+
+&isp_in {
+       mipi_in_cam: endpoint {
+               data-lanes = <1 2>;
+               remote-endpoint = <&cam_out>;
+       };
 };
 
 &pinctrl {
index feabdadfa440f96c0134a0bb05e64a0c7b5adf2e..46f64cd33b9b2671f8421e4ec8f7e8c2fb6dd340 100644 (file)
        pmugrf: syscon@ff010000 {
                compatible = "rockchip,px30-pmugrf", "syscon", "simple-mfd";
                reg = <0x0 0xff010000 0x0 0x1000>;
-               #address-cells = <1>;
-               #size-cells = <1>;
 
                pmu_io_domains: io-domains {
                        compatible = "rockchip,px30-pmu-io-voltage-domain";
        grf: syscon@ff140000 {
                compatible = "rockchip,px30-grf", "syscon", "simple-mfd";
                reg = <0x0 0xff140000 0x0 0x1000>;
-               #address-cells = <1>;
-               #size-cells = <1>;
 
                io_domains: io-domains {
                        compatible = "rockchip,px30-io-voltage-domain";
                resets = <&cru SRST_MIPIDSI_HOST_P>;
                reset-names = "apb";
                rockchip,grf = <&grf>;
-               #address-cells = <1>;
-               #size-cells = <0>;
                status = "disabled";
 
                ports {
                        #address-cells = <1>;
                        #size-cells = <0>;
 
-                       port@0 {
+                       isp_in: port@0 {
                                reg = <0>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
                        };
                };
        };
diff --git a/src/arm64/rockchip/rk3308-sakurapi-rk3308b.dts b/src/arm64/rockchip/rk3308-sakurapi-rk3308b.dts
new file mode 100644 (file)
index 0000000..e5e6b80
--- /dev/null
@@ -0,0 +1,265 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Akash Gajjar <akash@openedev.com>
+ * Copyright (c) 2019 Jagan Teki <jagan@openedev.com>
+ * Copyright (C) 2024 TheSnowfield <thesnowfield@sakurapi.org>
+ * Copyright (C) 2025 Hsun Lai <i@chainsx.cn>
+ */
+
+/dts-v1/;
+#include "rk3308.dtsi"
+#include <dt-bindings/leds/common.h>
+
+/ {
+       model = "Sakura Pi RK3308B";
+       compatible = "sakurapi,rk3308-sakurapi-rk3308b", "rockchip,rk3308";
+
+       aliases {
+               mmc0 = &emmc;
+               mmc1 = &sdmmc;
+               mmc2 = &sdio;
+       };
+
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       vcc5v0_sys: regulator-vcc5v0-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       vdd_core: regulator-vdd-core {
+               compatible = "pwm-regulator";
+               pwms = <&pwm0 0 5000 1>;
+               regulator-name = "vdd_core";
+               regulator-min-microvolt = <827000>;
+               regulator-max-microvolt = <1340000>;
+               regulator-settling-time-up-us = <250>;
+               regulator-always-on;
+               regulator-boot-on;
+               pwm-supply = <&vcc5v0_sys>;
+       };
+
+       vdd_log: regulator-vdd-log {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_log";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1050000>;
+               regulator-max-microvolt = <1050000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc_ddr: regulator-vcc-ddr {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_ddr";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       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 = <&vcc_io>;
+       };
+
+       vcc_io: regulator-vcc-io {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_io";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc_phy: regulator-vcc-phy-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_phy";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vcc5v0_otg: regulator-vcc5v0-otg {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&otg_vbus_drv>;
+               regulator-name = "vcc5v0_otg";
+               regulator-always-on;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               pinctrl-0 = <&wifi_enable_h>;
+               pinctrl-names = "default";
+               /*
+                * On the module itself this is one of these (depending
+                * on the actual card populated):
+                * - SDIO_RESET_L_WL_REG_ON
+                * - PDN (power down when low)
+                */
+               reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&vdd_core>;
+};
+
+&emmc {
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       non-removable;
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&rtc_32k>;
+
+       bluetooth {
+               bt_reg_on: bt-reg-on {
+                       rockchip,pins = <4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               bt_wake_host: bt-wake-host {
+                       rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               host_wake_bt: host-wake-bt {
+                       rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       sdio-pwrseq {
+               wifi_enable_h: wifi-enable-h {
+                       rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb {
+               otg_vbus_drv: otg-vbus-drv {
+                       rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       wifi {
+               wifi_host_wake: wifi-host-wake {
+                       rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+};
+
+&pwm0 {
+       status = "okay";
+       pinctrl-0 = <&pwm0_pin_pull_down>;
+};
+
+&pwm3 {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcc_1v8>;
+       status = "okay";
+};
+
+&sdio {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       non-removable;
+       no-mmc;
+       no-sd;
+       status = "okay";
+
+       brcmf: wifi@1 {
+               compatible = "brcm,bcm43455-fmac", "brcm,bcm4329-fmac";
+               reg = <1>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>;
+               interrupt-names = "host-wake";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_host_wake>;
+       };
+};
+
+&sdmmc {
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       disable-wp;
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_det &sdmmc_bus4>;
+       card-detect-delay = <800>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2m0_xfer>;
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm4345c5";
+               clocks = <&cru SCLK_RTC32K>;
+               clock-names = "lpo";
+               pinctrl-names = "default";
+               pinctrl-0 = <&host_wake_bt &bt_wake_host &bt_reg_on>;
+               device-wakeup-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
+               host-wakeup-gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_HIGH>;
+               shutdown-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_HIGH>;
+               max-speed = <1500000>;
+       };
+};
+
+&u2phy {
+       status = "okay";
+};
+
+&u2phy_otg {
+       status = "okay";
+};
+
+&u2phy_host {
+       status = "okay";
+};
+
+&usb20_otg {
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&usb_host_ehci {
+       status = "okay";
+};
+
+&usb_host_ohci {
+       status = "okay";
+};
index 150fadcb0b3c395fc1ea33e1696f3c1f60fb8b69..54395a40b087a546aa35bdc29eefee53a85ccfaf 100644 (file)
 };
 
 &dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
 
        ports {
index 10e6ab724ac4510fea6b2019dc96b3a56b10605e..4d306085646c1200ebb81d93636e9bd6636ffce4 100644 (file)
 };
 
 &dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
 
        internal_display: panel@0 {
index 446a1a6c12e7eb52d7505cc1db655982769db4f3..bf4554eff47d34bd167d6f7c0e97a77b311111b7 100644 (file)
 };
 
 &dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
 
        ports {
index 7d992c3c01ce83c2aa863eac8426aaac7d827fb5..6438c969f9d7a507f7ce052eb52b70460c84931a 100644 (file)
                status = "disabled";
 
                vop_out: port {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       vop_out_hdmi: endpoint@0 {
-                               reg = <0>;
+                       vop_out_hdmi: endpoint {
                                remote-endpoint = <&hdmi_in_vop>;
                        };
                };
index b99bb0a5f9006b288becfd845ecbfefceb5cf854..b9801a691b486cf13d24a8859254666025ec83f5 100644 (file)
 
        bluetooth {
                compatible = "brcm,bcm4345c5";
-               interrupts-extended = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
+               interrupts-extended = <&gpio3 RK_PA7 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "host-wakeup";
                clocks = <&rk808 RK808_CLKOUT1>;
                clock-names = "lpo";
index 9d5f5b083e3cfa51492b945d17d03dbd2a264a2d..4dcceb9136b7f29873e97b6309c8ae797b6875f7 100644 (file)
                resets = <&cru SRST_P_MIPI_DSI0>;
                reset-names = "apb";
                rockchip,grf = <&grf>;
-               #address-cells = <1>;
-               #size-cells = <0>;
                status = "disabled";
 
                ports {
                resets = <&cru SRST_P_MIPI_DSI1>;
                reset-names = "apb";
                rockchip,grf = <&grf>;
-               #address-cells = <1>;
-               #size-cells = <0>;
                #phy-cells = <0>;
                status = "disabled";
 
index a9ea4b0daa04c6e09a28e014bec9e164a81d4a3e..9d07353df52c899252f34964d972859f3f2c0e25 100644 (file)
         */
        assigned-clocks = <&cru PCLK_EDP>;
        assigned-clock-rates = <24000000>;
+};
 
-       ports {
-               edp_out: port@1 {
-                       reg = <1>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       edp_out_panel: endpoint@0 {
-                               reg = <0>;
-                               remote-endpoint = <&panel_in_edp>;
-                       };
-               };
+&edp_out {
+       edp_out_panel: endpoint {
+               remote-endpoint = <&panel_in_edp>;
        };
 };
 
index 5e068377a0a28e63817dfdb97396b350ffd8b0b1..6aaaf0f7f73f7727061ca2373f9d3dbbcda2ce32 100644 (file)
@@ -627,8 +627,10 @@ camera: &i2c7 {
 };
 
 &mipi_dsi {
-       status = "okay";
        clock-master;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
 
        ports {
                mipi_out: port@1 {
index 81c4fcb30f39c92a6acb8d3246238a8f19c76410..352c8efb37e0b3f1a5cb17a94b0f5ce1159974a9 100644 (file)
        vdd_cpu_b: syr827@40 {
                compatible = "silergy,syr827";
                reg = <0x40>;
-               regulator-compatible = "fan53555-reg";
                pinctrl-0 = <&vsel1_pin>;
                regulator-name = "vdd_cpu_b";
                regulator-min-microvolt = <712500>;
        vdd_gpu: syr828@41 {
                compatible = "silergy,syr828";
                reg = <0x41>;
-               regulator-compatible = "fan53555-reg";
                pinctrl-0 = <&vsel2_pin>;
                regulator-name = "vdd_gpu";
                regulator-min-microvolt = <712500>;
index 5473070823cb121c786b9fd47b6d89b0ed5dbb9d..b33a1509a8e939dedb56cf39f035e7316b80af7a 100644 (file)
        pinctrl-names = "default";
        pinctrl-0 = <&edp_hpd>;
        status = "okay";
+};
 
-       ports {
-               edp_out: port@1 {
-                       reg = <1>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       edp_out_panel: endpoint@0 {
-                               reg = <0>;
-                               remote-endpoint = <&panel_in_edp>;
-                       };
-               };
+&edp_out {
+       edp_out_panel: endpoint {
+               remote-endpoint = <&panel_in_edp>;
        };
 };
 
                reg = <0>;
                m25p,fast-read;
                spi-max-frequency = <10000000>;
+               vcc-supply = <&vcc_3v0>;
        };
 };
 
index 04ba4c4565d0a205e2e46d7535c6a3190993621d..6f97e57f36f5599f4027a0f3db98bcbc69cef5e5 100644 (file)
                regulator-boot-on;
        };
 
+       avdd2v8_dvp: regulator-avdd2v8-dvp {
+               compatible = "regulator-fixed";
+               regulator-name = "avdd2v8_dvp";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vcc3v3_sys>;
+       };
+
        vcc3v3_sys: regulator-vcc3v3-sys {
                compatible = "regulator-fixed";
                regulator-name = "vcc3v3_sys";
                vin-supply = <&vcc3v3_sys>;
        };
 
+       vcc1v2_dvp: regulator-vcc1v2-dvp {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc1v2_dvp";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               vin-supply = <&vcca1v8_s3>;
+       };
+
        wifi_pwrseq: sdio-wifi-pwrseq {
                compatible = "mmc-pwrseq-simple";
                clocks = <&rk818 1>;
 
                        vcca1v8_codec: LDO_REG3 {
                                regulator-name = "vcca1v8_codec";
+                               regulator-always-on;
+                               regulator-boot-on;
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
                        };
        };
 };
 
+&i2c1 {
+       assigned-clocks = <&cru SCLK_CIF_OUT>;
+       assigned-clock-rates = <24000000>;
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_xfer &cif_clkouta>;
+       status = "okay";
+
+       wcam: camera@1a {
+               compatible = "sony,imx258";
+               reg = <0x1a>;
+               clocks = <&cru SCLK_CIF_OUT>; /* MIPI_MCLK0, derived from CIF_CLKO */
+               lens-focus = <&wcam_lens>;
+               orientation = <1>; /* V4L2_CAMERA_ORIENTATION_BACK */
+               pinctrl-names = "default";
+               pinctrl-0 = <&camera_rst_l>;
+               reset-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_LOW>;
+               rotation = <270>;
+               /* Note: both cameras also depend on vcca1v8_codec to power the I2C bus. */
+               vif-supply = <&vcc1v8_dvp>;
+               vana-supply = <&avdd2v8_dvp>;
+               vdig-supply = <&vcc1v2_dvp>; /* DVDD_DVP is the same as VCC1V2_DVP */
+
+               port {
+                       wcam_out: endpoint {
+                               data-lanes = <1 2 3 4>;
+                               link-frequencies = /bits/ 64 <636000000>;
+                               remote-endpoint = <&mipi_in_wcam>;
+                       };
+               };
+       };
+
+       wcam_lens: camera-lens@c {
+               compatible = "dongwoon,dw9714";
+               reg = <0x0c>;
+               /* Same I2c bus as both cameras, depends on vcca1v8_codec for power. */
+               vcc-supply = <&vcc1v8_dvp>;
+       };
+
+       ucam: camera@36 {
+               compatible = "ovti,ov8858";
+               reg = <0x36>;
+               clocks = <&cru SCLK_CIF_OUT>; /* MIPI_MCLK1, derived from CIF_CLK0 */
+               clock-names = "xvclk";
+               dovdd-supply = <&vcc1v8_dvp>;
+               orientation = <0>; /* V4L2_CAMERA_ORIENTATION_FRONT */
+               pinctrl-names = "default";
+               pinctrl-0 = <&camera2_rst_l &dvp_pdn0_h>;
+               powerdown-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_LOW>;
+               reset-gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_LOW>;
+               rotation = <90>;
+
+               port {
+                       ucam_out: endpoint {
+                               data-lanes = <1 2 3 4>;
+                               remote-endpoint = <&mipi_in_ucam>;
+                       };
+               };
+       };
+};
+
 &i2c3 {
        i2c-scl-rising-time-ns = <450>;
        i2c-scl-falling-time-ns = <15>;
        status = "okay";
 };
 
-&mipi_dsi {
+&isp0 {
        status = "okay";
-       clock-master;
 
        ports {
-               mipi_out: port@1 {
-                       #address-cells = <0>;
-                       #size-cells = <0>;
-                       reg = <1>;
+               port@0 {
+                       mipi_in_ucam: endpoint@0 {
+                               reg = <0>;
+                               data-lanes = <1 2 3 4>;
+                               remote-endpoint = <&ucam_out>;
+                       };
+               };
+       };
+};
+
+&isp0_mmu {
+       status = "okay";
+};
+
+&isp1 {
+       status = "okay";
 
-                       mipi_out_panel: endpoint {
-                               remote-endpoint = <&mipi_in_panel>;
+       ports {
+               port@0 {
+                       mipi_in_wcam: endpoint@0 {
+                               reg = <0>;
+                               data-lanes = <1 2 3 4>;
+                               remote-endpoint = <&wcam_out>;
                        };
                };
        };
+};
+
+&mipi_dphy_rx0 {
+       status = "okay";
+};
+
+&isp1_mmu {
+       status = "okay";
+};
+
+&mipi_dsi {
+       clock-master;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
 
        panel@0 {
-               compatible = "hannstar,hsd060bhw4";
+               compatible = "hannstar,hsd060bhw4", "himax,hx8394";
                reg = <0>;
                backlight = <&backlight>;
-               reset-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_LOW>;
-               vcc-supply = <&vcc2v8_lcd>;
                iovcc-supply = <&vcc1v8_lcd>;
                pinctrl-names = "default";
+               pinctrl-0 = <&lcd1_rst_pin>;
+               reset-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_LOW>;
+               vcc-supply = <&vcc2v8_lcd>;
 
                port {
                        mipi_in_panel: endpoint {
        };
 };
 
+&mipi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
+
+&mipi_dsi1 {
+       status = "okay";
+};
+
 &pmu_io_domains {
        pmu1830-supply = <&vcc_1v8>;
        status = "okay";
                };
        };
 
+       lcd {
+               lcd1_rst_pin: lcd1-rst-pin {
+                       rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       cameras {
+               camera_rst_l: camera-rst-l {
+                       rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               camera2_rst_l: camera2-rst-l {
+                       rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               dvp_pdn0_h: dvp-pdn0-h {
+                       rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
        leds {
                red_led_pin: red-led-pin {
                        rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
                compatible = "jedec,spi-nor";
                reg = <0>;
                spi-max-frequency = <10000000>;
+               vcc-supply = <&vcc_1v8>;
        };
 };
 
index 0377ec860d35461b7d2d4ee1f20bdd4a076a5fe6..5e8f729c2cf2201fe6519272a3ad2d79f83b7e84 100644 (file)
@@ -26,7 +26,7 @@
        };
 
        cam_afvdd_2v8: regulator-cam-afvdd-2v8 {
-               compatible  = "regulator-fixed";
+               compatible = "regulator-fixed";
                gpio = <&pca9670 2 GPIO_ACTIVE_LOW>;
                regulator-max-microvolt = <2800000>;
                regulator-min-microvolt = <2800000>;
@@ -35,7 +35,7 @@
        };
 
        cam_avdd_2v8: regulator-cam-avdd-2v8 {
-               compatible  = "regulator-fixed";
+               compatible = "regulator-fixed";
                gpio = <&pca9670 4 GPIO_ACTIVE_LOW>;
                regulator-max-microvolt = <2800000>;
                regulator-min-microvolt = <2800000>;
@@ -44,7 +44,7 @@
        };
 
        cam_dovdd_1v8: regulator-cam-dovdd-1v8 {
-               compatible  = "regulator-fixed";
+               compatible = "regulator-fixed";
                gpio = <&pca9670 3 GPIO_ACTIVE_LOW>;
                regulator-max-microvolt = <1800000>;
                regulator-min-microvolt = <1800000>;
        };
 };
 
-&mipi_out {
-       mipi_out_panel: endpoint {
-               remote-endpoint = <&mipi_in_panel>;
-       };
-};
-
 &mipi_dsi {
        #address-cells = <1>;
        #size-cells = <0>;
        };
 };
 
+&mipi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
+
 &pinctrl {
        pca9670 {
                pca9670_resetn: pca9670-resetn {
index 15da5c80d25decdfbe3d69ad34f431fb96658b9a..962b8b231c96036b00ef6697db3beee6236fe3bd 100644 (file)
                compatible = "silergy,syr827";
                reg = <0x40>;
                fcs,suspend-voltage-selector = <1>;
-               regulator-compatible = "fan53555-reg";
                pinctrl-0 = <&vsel1_gpio>;
                vsel-gpios = <&gpio1 RK_PC1 GPIO_ACTIVE_HIGH>;
                regulator-name = "vdd_cpu_b";
                compatible = "silergy,syr828";
                reg = <0x41>;
                fcs,suspend-voltage-selector = <1>;
-               regulator-compatible = "fan53555-reg";
                pinctrl-0 = <&vsel2_gpio>;
                vsel-gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_HIGH>;
                regulator-name = "vdd_gpu";
diff --git a/src/arm64/rockchip/rk3399-rockpro64-screen.dtso b/src/arm64/rockchip/rk3399-rockpro64-screen.dtso
new file mode 100644 (file)
index 0000000..dabe535
--- /dev/null
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd.
+ * Copyright (c) 2025 Peter Robinson <pbrobinson@gmail.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+
+&{/} {
+       avdd: regulator-avdd {
+               compatible = "regulator-fixed";
+               regulator-name = "avdd";
+               regulator-min-microvolt = <11000000>;
+               regulator-max-microvolt = <11000000>;
+               vin-supply = <&vcc3v3_s0>;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <5>;
+               pwms = <&pwm0 0 1000000 0>;
+               status = "okay";
+       };
+};
+
+&i2c4 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       touch: touchscreen@5d {
+               compatible = "goodix,gt911";
+               reg = <0x5d>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <RK_PD5 IRQ_TYPE_EDGE_FALLING>;
+               AVDD28-supply = <&vcc3v0_touch>;
+               VDDIO-supply = <&vcc3v0_touch>;
+               irq-gpios = <&gpio4 RK_PD5 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&gpio4 RK_PD6 GPIO_ACTIVE_HIGH>;
+               status = "okay";
+       };
+};
+
+&mipi_dsi {
+       clock-master;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       mipi_panel: panel@0 {
+               compatible = "feiyang,fy07024di26a30d";
+               reg = <0>;
+               avdd-supply = <&avdd>;
+               backlight = <&backlight>;
+               dvdd-supply = <&vcc3v3_s0>;
+
+               port {
+                       mipi_in_panel: endpoint {
+                               remote-endpoint = <&mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&mipi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
+
+&pwm0 {
+       status = "okay";
+};
index a7e4adf87e7a12945097d09715c373d8f5a15b3e..8b72ae6449c91ae1e63cefb8c9de2f27a5e1042c 100644 (file)
                stdout-path = "serial2:1500000n8";
        };
 
-       /* enable for panel backlight support */
-       backlight: backlight {
-               compatible = "pwm-backlight";
-               brightness-levels = <0 4 8 16 32 64 128 255>;
-               default-brightness-level = <5>;
-               pwms = <&pwm0 0 1000000 0>;
-               status = "disabled";
-       };
-
        clkin_gmac: external-gmac-clock {
                compatible = "fixed-clock";
                clock-frequency = <125000000>;
                };
        };
 
-       avdd: regulator-avdd {
-               compatible = "regulator-fixed";
-               regulator-name = "avdd";
-               regulator-min-microvolt = <11000000>;
-               regulator-max-microvolt = <11000000>;
-               vin-supply = <&vcc3v3_s0>;
-       };
-
        vcc12v_dcin: regulator-vcc12v-dcin {
                compatible = "regulator-fixed";
                regulator-name = "vcc12v_dcin";
                vbus-supply = <&vcc5v0_typec>;
                status = "okay";
        };
-
-       /* enable for pine64 touch screen support */
-       touch: touchscreen@5d {
-               compatible = "goodix,gt911";
-               reg = <0x5d>;
-               interrupt-parent = <&gpio4>;
-               interrupts = <RK_PD5 IRQ_TYPE_EDGE_FALLING>;
-               AVDD28-supply = <&vcc3v0_touch>;
-               VDDIO-supply = <&vcc3v0_touch>;
-               irq-gpios = <&gpio4 RK_PD5 GPIO_ACTIVE_HIGH>;
-               reset-gpios = <&gpio4 RK_PD6 GPIO_ACTIVE_HIGH>;
-               status = "disabled";
-       };
 };
 
 &i2s0 {
        gpio1830-supply = <&vcc_3v0>;
 };
 
-/* enable for pine64 panel display support */
-&mipi_dsi {
-       clock-master;
-       status = "disabled";
-
-       ports {
-               mipi_out: port@1 {
-                       reg = <1>;
-
-                       mipi_out_panel: endpoint {
-                               remote-endpoint = <&mipi_in_panel>;
-                       };
-               };
-       };
-
-       mipi_panel: panel@0 {
-               compatible = "feiyang,fy07024di26a30d";
-               reg = <0>;
-               avdd-supply = <&avdd>;
-               backlight = <&backlight>;
-               dvdd-supply = <&vcc3v3_s0>;
-
-               port {
-                       mipi_in_panel: endpoint {
-                               remote-endpoint = <&mipi_out_panel>;
-                       };
-               };
-       };
-};
-
 &pcie0 {
        ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
        num-lanes = <4>;
        };
 };
 
-&pwm0 {
-       status = "okay";
-};
-
 &pwm1 {
        status = "okay";
 };
index fdaa8472b7a7207533e981b3ad04046fd5a9512b..a4ceafe6dd7a873206ccc9b3f2b12ad95513417e 100644 (file)
 
 &edp {
        status = "okay";
+};
 
-       ports {
-               edp_out: port@1 {
-                       reg = <1>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       edp_out_panel: endpoint@0 {
-                               reg = <0>;
-                               remote-endpoint = <&panel_in_edp>;
-                       };
-               };
+&edp_out {
+       edp_out_panel: endpoint {
+               remote-endpoint = <&panel_in_edp>;
        };
 };
-
 &i2c1 {
        i2c-scl-rising-time-ns = <300>;
        i2c-scl-falling-time-ns = <15>;
index ea051362fb265148a9288a56ced7b21c64ba6fbc..59b75c91bbb7f0854bfd68d110e3e6a05acb7c53 100644 (file)
 
        fephy {
                /omit-if-no-ref/
-               fephym0_led_dpx: fephym0-led_dpx {
+               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 {
+               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 {
+               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 {
+               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 {
+               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 {
+               fephym1_led_spd: fephym1-led-spd {
                        rockchip,pins =
                                /* fephy_led_spd_m1 */
                                <2 RK_PA5 5 &pcfg_pull_none>;
                };
 
                /omit-if-no-ref/
-               rgmii_rx_bus2: rgmii-rx_bus2 {
+               rgmii_rx_bus2: rgmii-rx-bus2 {
                        rockchip,pins =
                                /* rgmii_rxd0 */
                                <3 RK_PA3 2 &pcfg_pull_none>,
                };
 
                /omit-if-no-ref/
-               rgmii_tx_bus2: rgmii-tx_bus2 {
+               rgmii_tx_bus2: rgmii-tx-bus2 {
                        rockchip,pins =
                                /* rgmii_txd0 */
                                <3 RK_PA1 2 &pcfg_pull_none_drv_level_2>,
                };
 
                /omit-if-no-ref/
-               rgmii_rgmii_clk: rgmii-rgmii_clk {
+               rgmii_rgmii_clk: rgmii-rgmii-clk {
                        rockchip,pins =
                                /* rgmii_rxclk */
                                <3 RK_PA5 2 &pcfg_pull_none>,
                };
 
                /omit-if-no-ref/
-               rgmii_rgmii_bus: rgmii-rgmii_bus {
+               rgmii_rgmii_bus: rgmii-rgmii-bus {
                        rockchip,pins =
                                /* rgmii_rxd2 */
                                <3 RK_PA7 2 &pcfg_pull_none>,
index 9f6ccd9dd1f7aafe90af635fca3088da934b742e..12eec2c1db22a97308b37082a7bbed3a92c5195a 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&vdd_logic>;
+       status = "okay";
+};
+
 &i2c1 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c1m0_xfer>;
 &sdhci {
        bus-width = <8>;
        cap-mmc-highspeed;
+       mmc-hs200-1_8v;
        no-sd;
        no-sdio;
        non-removable;
index d1c72b52aa4e66c2c20c35a6be847c711959d954..001a555c83b7526d49a156ece06e749cc7697918 100644 (file)
                };
        };
 
+       gpu_opp_table: opp-table-gpu {
+               compatible = "operating-points-v2";
+
+               opp-300000000 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-microvolt = <875000 875000 1000000>;
+                       opp-suspend;
+               };
+
+               opp-500000000 {
+                       opp-hz = /bits/ 64 <500000000>;
+                       opp-microvolt = <875000 875000 1000000>;
+               };
+
+               opp-600000000 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <875000 875000 1000000>;
+               };
+
+               opp-700000000 {
+                       opp-hz = /bits/ 64 <700000000>;
+                       opp-microvolt = <900000 900000 1000000>;
+               };
+
+               opp-800000000 {
+                       opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <950000 950000 1000000>;
+               };
+       };
+
        pinctrl: pinctrl {
                compatible = "rockchip,rk3528-pinctrl";
                rockchip,grf = <&ioc_grf>;
                        reg = <0x0 0xff540000 0x0 0x40000>;
                };
 
+               pmu: power-management@ff600000 {
+                       compatible = "rockchip,rk3528-pmu", "syscon", "simple-mfd";
+                       reg = <0x0 0xff600000 0x0 0x2000>;
+
+                       power: power-controller {
+                               compatible = "rockchip,rk3528-power-controller";
+                               #power-domain-cells = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               /* These power domains are grouped by VD_GPU */
+                               power-domain@4 {
+                                       reg = <4>;
+                                       clocks = <&cru ACLK_GPU_MALI>,
+                                                <&cru PCLK_GPU_ROOT>;
+                                       pm_qos = <&qos_gpu_m0>,
+                                                <&qos_gpu_m1>;
+                                       #power-domain-cells = <0>;
+                               };
+
+                               /* These power domains are grouped by VD_LOGIC */
+                               power-domain@5 {
+                                       reg = <5>;
+                                       pm_qos = <&qos_rkvdec>;
+                                       #power-domain-cells = <0>;
+                                       status = "disabled";
+                               };
+                               power-domain@6 {
+                                       reg = <6>;
+                                       pm_qos = <&qos_rkvenc>;
+                                       #power-domain-cells = <0>;
+                                       status = "disabled";
+                               };
+                               power-domain@7 {
+                                       reg = <7>;
+                                       pm_qos = <&qos_gmac0>,
+                                                <&qos_hdcp>,
+                                                <&qos_jpegdec>,
+                                                <&qos_rga2_m0ro>,
+                                                <&qos_rga2_m0wo>,
+                                                <&qos_sdmmc0>,
+                                                <&qos_usb2host>,
+                                                <&qos_vdpp>,
+                                                <&qos_vop>;
+                                       #power-domain-cells = <0>;
+                                       status = "disabled";
+                               };
+                               power-domain@8 {
+                                       reg = <8>;
+                                       pm_qos = <&qos_emmc>,
+                                                <&qos_fspi>,
+                                                <&qos_gmac1>,
+                                                <&qos_pcie>,
+                                                <&qos_sdio0>,
+                                                <&qos_sdio1>,
+                                                <&qos_tsp>,
+                                                <&qos_usb3otg>,
+                                                <&qos_vpu>;
+                                       #power-domain-cells = <0>;
+                                       status = "disabled";
+                               };
+                       };
+               };
+
+               gpu: gpu@ff700000 {
+                       compatible = "rockchip,rk3528-mali", "arm,mali-450";
+                       reg = <0x0 0xff700000 0x0 0x40000>;
+                       assigned-clocks = <&cru ACLK_GPU_MALI>,
+                                         <&scmi_clk SCMI_CLK_GPU>;
+                       assigned-clock-rates = <297000000>, <300000000>;
+                       clocks = <&cru ACLK_GPU_MALI>, <&scmi_clk SCMI_CLK_GPU>;
+                       clock-names = "bus", "core";
+                       interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "gp",
+                                         "gpmmu",
+                                         "pp",
+                                         "pp0",
+                                         "ppmmu0",
+                                         "pp1",
+                                         "ppmmu1";
+                       operating-points-v2 = <&gpu_opp_table>;
+                       power-domains = <&power 4>;
+                       resets = <&cru SRST_A_GPU>;
+                       status = "disabled";
+               };
+
+               spi0: spi@ff9c0000 {
+                       compatible = "rockchip,rk3528-spi",
+                                    "rockchip,rk3066-spi";
+                       reg = <0x0 0xff9c0000 0x0 0x1000>;
+                       clocks = <&cru CLK_SPI0>, <&cru PCLK_SPI0>;
+                       clock-names = "spiclk", "apb_pclk";
+                       interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dmac 25>, <&dmac 24>;
+                       dma-names = "tx", "rx";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi1: spi@ff9d0000 {
+                       compatible = "rockchip,rk3528-spi",
+                                    "rockchip,rk3066-spi";
+                       reg = <0x0 0xff9d0000 0x0 0x1000>;
+                       clocks = <&cru CLK_SPI1>, <&cru PCLK_SPI1>;
+                       clock-names = "spiclk", "apb_pclk";
+                       interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dmac 31>, <&dmac 30>;
+                       dma-names = "tx", "rx";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                uart0: serial@ff9f0000 {
                        compatible = "rockchip,rk3528-uart", "snps,dw-apb-uart";
                        reg = <0x0 0xff9f0000 0x0 0x100>;
                        clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
-                       dmas = <&dmac 8>, <&dmac 9>;
+                       dmas = <&dmac 9>, <&dmac 8>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
-                       dmas = <&dmac 10>, <&dmac 11>;
+                       dmas = <&dmac 11>, <&dmac 10>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
-                       dmas = <&dmac 12>, <&dmac 13>;
+                       dmas = <&dmac 13>, <&dmac 12>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
-                       dmas = <&dmac 14>, <&dmac 15>;
+                       dmas = <&dmac 15>, <&dmac 14>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
-                       dmas = <&dmac 16>, <&dmac 17>;
+                       dmas = <&dmac 17>, <&dmac 16>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
-                       dmas = <&dmac 18>, <&dmac 19>;
+                       dmas = <&dmac 19>, <&dmac 18>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
-                       dmas = <&dmac 20>, <&dmac 21>;
+                       dmas = <&dmac 21>, <&dmac 20>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
-                       dmas = <&dmac 22>, <&dmac 23>;
+                       dmas = <&dmac 23>, <&dmac 22>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
index def504ffa3263629cb39fc52c822bd2eba556d17..f84676b47b27ae961d0f14e6c2e0d684c550be7d 100644 (file)
@@ -7,6 +7,7 @@
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/phy/phy.h>
+#include <dt-bindings/power/rockchip,rk3562-power.h>
 #include <dt-bindings/pinctrl/rockchip.h>
 #include <dt-bindings/reset/rockchip,rk3562-cru.h>
 #include <dt-bindings/soc/rockchip,boot-mode.h>
                        num-lanes = <1>;
                        phys = <&combphy PHY_TYPE_PCIE>;
                        phy-names = "pcie-phy";
-                       power-domains = <&power 15>;
+                       power-domains = <&power RK3562_PD_PHP>;
                        ranges = <0x01000000 0x0 0xfc100000 0x0 0xfc100000 0x0 0x100000
                                  0x02000000 0x0 0xfc200000 0x0 0xfc200000 0x0 0x1e00000
                                  0x03000000 0x3 0x00000000 0x3 0x00000000 0x0 0x40000000>;
                                #address-cells = <1>;
                                #size-cells = <0>;
 
-                               power-domain@8 {
-                                       reg = <8>;
+                               power-domain@RK3562_PD_GPU {
+                                       reg = <RK3562_PD_GPU>;
                                        pm_qos = <&qos_gpu>;
                                        #power-domain-cells = <0>;
                                };
 
-                               power-domain@7 {
-                                       reg = <7>;
+                               power-domain@RK3562_PD_NPU {
+                                       reg = <RK3562_PD_NPU>;
                                        pm_qos = <&qos_npu>;
                                        #power-domain-cells = <0>;
                                };
 
-                               power-domain@11 {
-                                       reg = <11>;
+                               power-domain@RK3562_PD_VDPU {
+                                       reg = <RK3562_PD_VDPU>;
                                        pm_qos = <&qos_rkvdec>;
                                        #power-domain-cells = <0>;
                                };
 
-                               power-domain@12 {
-                                       reg = <12>;
+                               power-domain@RK3562_PD_VI {
+                                       reg = <RK3562_PD_VI>;
                                        pm_qos = <&qos_isp>,
                                                 <&qos_vicap>;
                                        #power-domain-cells = <1>;
                                        #address-cells = <1>;
                                        #size-cells = <0>;
 
-                                       power-domain@10 {
-                                               reg = <10>;
+                                       power-domain@RK3562_PD_VEPU {
+                                               reg = <RK3562_PD_VEPU>;
                                                pm_qos = <&qos_vepu>;
                                                #power-domain-cells = <0>;
                                        };
                                };
 
-                               power-domain@13 {
-                                       reg = <13>;
+                               power-domain@RK3562_PD_VO {
+                                       reg = <RK3562_PD_VO>;
                                        pm_qos = <&qos_vop>;
                                        #power-domain-cells = <1>;
                                        #address-cells = <1>;
                                        #size-cells = <0>;
 
-                                       power-domain@14 {
-                                               reg = <14>;
+                                       power-domain@RK3562_PD_RGA {
+                                               reg = <RK3562_PD_RGA>;
                                                pm_qos = <&qos_rga_rd>,
                                                         <&qos_rga_wr>,
                                                         <&qos_jpeg>;
                                        };
                                };
 
-                               power-domain@15 {
-                                       reg = <15>;
+                               power-domain@RK3562_PD_PHP {
+                                       reg = <RK3562_PD_PHP>;
                                        pm_qos = <&qos_pcie>,
                                                 <&qos_usb3>;
                                        #power-domain-cells = <0>;
                                     <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "job", "mmu", "gpu";
                        operating-points-v2 = <&gpu_opp_table>;
-                       power-domains = <&power 8>;
+                       power-domains = <&power RK3562_PD_GPU>;
                        #cooling-cells = <2>;
                        status = "disabled";
                };
index 233eade30f211017e4db301cf67f0c66e8bef38f..645db9d3d2972d3a0b30d9aea7d4c831f5a3c74f 100644 (file)
 };
 
 &i2c1 {
-       /* Unknown/unused device at 0x3c */
+       /* Unused iSmartWare SW2001 encryption device at 0x3c */
        status = "disabled";
 };
 
index e7ba477e75f9bf4854d0ff4900422e362777801e..7f578c50b4ad1e37ff376b54aecc162e2ec5776b 100644 (file)
@@ -53,7 +53,7 @@
                        gpios = <&gpio4 RK_PA1 GPIO_ACTIVE_LOW>;
                        linux,default-trigger = "default-on";
                        pinctrl-names = "default";
-                       pinctrl-0 =<&blue_led>;
+                       pinctrl-0 = <&blue_led>;
                };
 
                led-1 {
@@ -62,7 +62,7 @@
                        gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_LOW>;
                        linux,default-trigger = "heartbeat";
                        pinctrl-names = "default";
-                       pinctrl-0 =<&heartbeat_led>;
+                       pinctrl-0 = <&heartbeat_led>;
                };
        };
 
index 3613661417b2c613275b7f1babbad3e74c156f82..5c6f8cc401c9f493bdb4eb1652561343fcf3e920 100644 (file)
@@ -55,7 +55,7 @@
                        label = "cover";
                        gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>;
                        linux,input-type = <EV_SW>;
-                       linux,code = <SW_MACHINE_COVER>;
+                       linux,code = <SW_LID>;
                        linux,can-disable;
                        wakeup-event-action = <EV_ACT_DEASSERTED>;
                        wakeup-source;
index 3473b1eef5cdb8824294b09a4a6ea55c94b7fefa..d0e38412d56a43a70098029be6d0a7e0bd894173 100644 (file)
                reg = <0>;
                backlight = <&backlight>;
                enable-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
-               rotation = <90>;
                power-supply = <&vcc_3v3>;
+               rotation = <90>;
 
-               port@0 {
-                       panel_in_dsi: endpoint@0 {
+               port {
+                       panel_in_dsi: endpoint {
                                remote-endpoint = <&dsi0_out_con>;
                        };
                };
index b073a4d03e4fbc27e9c59d779c4c5f35ee2dd182..b01f952b640ed1a2c72a3653a3681267dee0f7e0 100644 (file)
                mmc1 = &sdhci;
        };
 
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               brightness-levels = <20 220>;
+               default-brightness-level = <100>;
+               num-interpolated-steps = <200>;
+               power-supply = <&vcc3v3_sys>;
+               pwms = <&pwm4 0 25000 0>;
+       };
+
        chosen: chosen {
                stdout-path = "serial2:1500000n8";
        };
        cpu-supply = <&vdd_cpu>;
 };
 
+&dsi0 {
+       clock-master;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "wanchanglong,w552793baa", "raydium,rm67200";
+               reg = <0>;
+               backlight = <&backlight>;
+               iovcc-supply = <&vcc3v3_lcd0_n>;
+               reset-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>;
+               vdd-supply = <&vcc3v3_lcd0_n>;
+               vsn-supply = <&vcc5v0_sys>;
+               vsp-supply = <&vcc5v0_sys>;
+
+               port {
+                       panel_in_dsi: endpoint {
+                               remote-endpoint = <&dsi0_out_panel>;
+                       };
+               };
+       };
+
+};
+
+&dsi0_in {
+       dsi0_in_vp1: endpoint {
+               remote-endpoint = <&vp1_out_dsi0>;
+       };
+};
+
+&dsi0_out {
+       dsi0_out_panel: endpoint {
+               remote-endpoint = <&panel_in_dsi>;
+       };
+};
+
+&dsi_dphy0 {
+       status = "okay";
+};
+
 &gmac0 {
        assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
        assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
        status = "okay";
 };
 
+&pwm4 {
+       status = "okay";
+};
+
 &saradc {
        vref-supply = <&vcca_1v8>;
        status = "okay";
 };
 
 &vop {
-       assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
-       assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
+       assigned-clocks = <&cru DCLK_VOP0>, <&cru PLL_VPLL>, <&cru DCLK_VOP1>;
+       assigned-clock-parents = <&pmucru PLL_HPLL>, <&xin24m>, <&cru PLL_VPLL>;
+       assigned-clock-rates = <0>, <132000000>, <132000000>;
        status = "okay";
 };
 
                remote-endpoint = <&hdmi_in_vp0>;
        };
 };
+
+&vp1 {
+       vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 {
+               reg = <ROCKCHIP_VOP2_EP_MIPI0>;
+               remote-endpoint = <&dsi0_in_vp1>;
+       };
+};
index 539edc3c535fb9f82cdaedc58e22a0e874c45e40..718d1a2da8e5686d82cf67730855b581782819a7 100644 (file)
                ethernet0 = &gmac0;
        };
 
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-0 = <&gpio4_a0_k1_pin>;
+               pinctrl-names = "default";
+
+               button-reset {
+                       debounce-interval = <50>;
+                       gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>;
+                       label = "RESET";
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+
        gpio-leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
                };
        };
 
+       gpio-keys {
+               gpio4_a0_k1_pin: gpio4-a0-k1-pin {
+                       rockchip,pins = <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
        gpio-leds {
                lan1_led_pin: lan1-led-pin {
                        rockchip,pins = <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
index a28b4af10d13a2612f201743b9ed41fffde30ebf..e3f44ea4eabe771a3257f222ebf744b5ed1ccf36 100644 (file)
        aliases {
                mmc0 = &sdmmc0;
                mmc1 = &sdhci;
+               rtc0 = &hym8563;
        };
 
        chosen: chosen {
                stdout-path = "serial2: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>;
+               };
+       };
+
        hdmi-con {
                compatible = "hdmi-connector";
                type = "a";
diff --git a/src/arm64/rockchip/rk3576-armsom-sige5-v1.2-wifibt.dtso b/src/arm64/rockchip/rk3576-armsom-sige5-v1.2-wifibt.dtso
new file mode 100644 (file)
index 0000000..242ccfa
--- /dev/null
@@ -0,0 +1,49 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * DT-overlay to enable the onboard WiFi and Bluetooth module present in v1.2
+ * boards. Note that v1.1 boards use a different module, so this probably won't
+ * work there.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+
+&sdio {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       wifi@1 {
+               compatible = "brcm,bcm4329-fmac";
+               reg = <1>;
+               clock-names = "lpo";
+               clocks = <&hym8563>;
+               interrupt-names = "host-wake";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PB0 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-0 = <&wifi_wake_host>;
+               pinctrl-names = "default";
+       };
+};
+
+&uart4 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               clock-names = "lpo";
+               clocks = <&hym8563>;
+               device-wakeup-gpios = <&gpio1 RK_PD7 GPIO_ACTIVE_HIGH>;
+               interrupt-names = "host-wakeup";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PB1 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-0 = <&bt_reg_on>, <&bt_wake_host>, <&host_wake_bt>;
+               pinctrl-names = "default";
+               shutdown-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
+               vbat-supply = <&vcc_3v3_s3>;
+               vddio-supply = <&vcc_1v8_s3>;
+       };
+};
index 801b40fea4e8808c3f889ddd3ed3aa875a377567..3386084f63183efe62beea86bc6fe310cc4ed565 100644 (file)
                vin-supply = <&vcc_12v0_dcin>;
        };
 
+       vcc_5v0_typec0: regulator-vcc-5v0-typec0 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_otg0_pwren>;
+               regulator-name = "vcc_5v0_typec0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc_5v0_device>;
+       };
+
+       vcc_5v0_usbhost: regulator-vcc-5v0-usbhost {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_host_pwren>;
+               regulator-name = "vcc_5v0_usbhost";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc_5v0_device>;
+       };
+
        vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
                compatible = "regulator-fixed";
                regulator-name = "vcc_3v3_ufs_s0";
                regulator-max-microvolt = <3300000>;
                vin-supply = <&vcc_5v0_sys>;
        };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&hym8563>;
+               clock-names = "ext_clock";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_reg_on>;
+               reset-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&combphy1_psu {
+       status = "okay";
 };
 
 &combphy0_ps {
 &gmac0 {
        phy-mode = "rgmii-id";
        clock_in_out = "output";
-
-       snps,reset-gpio = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>;
-       snps,reset-active-low;
-       snps,reset-delays-us = <0 20000 100000>;
-
+       phy-handle = <&rgmii_phy0>;
        pinctrl-names = "default";
        pinctrl-0 = <&eth0m0_miim
                     &eth0m0_tx_bus2
                     &eth0m0_rx_bus2
                     &eth0m0_rgmii_clk
                     &eth0m0_rgmii_bus>;
-
-       phy-handle = <&rgmii_phy0>;
        status = "okay";
 };
 
 &gmac1 {
        phy-mode = "rgmii-id";
        clock_in_out = "output";
-
-       snps,reset-gpio = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>;
-       snps,reset-active-low;
-       snps,reset-delays-us = <0 20000 100000>;
-
+       phy-handle = <&rgmii_phy1>;
        pinctrl-names = "default";
        pinctrl-0 = <&eth1m0_miim
                     &eth1m0_tx_bus2
                     &eth1m0_rx_bus2
                     &eth1m0_rgmii_clk
-                    &eth1m0_rgmii_bus
-                    &ethm0_clk1_25m_out>;
-
-       phy-handle = <&rgmii_phy1>;
+                    &eth1m0_rgmii_bus>;
        status = "okay";
 };
 
 &i2c2 {
        status = "okay";
 
+       usbc0: typec-portc@22 {
+               compatible = "fcs,fusb302";
+               reg = <0x22>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usbc0_interrupt>;
+               vbus-supply = <&vcc_5v0_typec0>;
+
+               connector {
+                       compatible = "usb-c-connector";
+                       label = "USB-C";
+                       data-role = "dual";
+                       /* fusb302 supports PD Rev 2.0 Ver 1.2 */
+                       pd-revision = /bits/ 8 <0x2 0x0 0x1 0x2>;
+                       power-role = "source";
+                       source-pdos = <PDO_FIXED(5000, 2000,
+                                                PDO_FIXED_USB_COMM | PDO_FIXED_DATA_SWAP)>;
+
+                       altmodes {
+                               displayport {
+                                       svid = /bits/ 16 <0xff01>;
+                                       vdo = <0xffffffff>;
+                               };
+                       };
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       usbc0_hs_ep: endpoint {
+                                               remote-endpoint = <&usb_drd0_hs_ep>;
+                                       };
+                               };
+                               port@1 {
+                                       reg = <1>;
+                                       usbc0_ss_ep: endpoint {
+                                               remote-endpoint = <&usb_drd0_ss_ep>;
+                                       };
+                               };
+                               port@2 {
+                                       reg = <2>;
+                                       usbc0_dp_ep: endpoint {
+                                               remote-endpoint = <&usbdp_phy_ep>;
+                                       };
+                               };
+                       };
+               };
+       };
+
        hym8563: rtc@51 {
                compatible = "haoyu,hym8563";
                reg = <0x51>;
        rgmii_phy0: phy@1 {
                compatible = "ethernet-phy-ieee802.3-c22";
                reg = <0x1>;
-               clocks = <&cru REFCLKO25M_GMAC0_OUT>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gmac0_rst>;
+               reset-assert-us = <20000>;
+               reset-deassert-us = <100000>;
+               reset-gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>;
        };
 };
 
        rgmii_phy1: phy@1 {
                compatible = "ethernet-phy-ieee802.3-c22";
                reg = <0x1>;
-               clocks = <&cru REFCLKO25M_GMAC1_OUT>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gmac1_rst>;
+               reset-assert-us = <20000>;
+               reset-deassert-us = <100000>;
+               reset-gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>;
        };
 };
 
 };
 
 &pinctrl {
+       gmac {
+               gmac0_rst: gmac0-rst {
+                       rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               gmac1_rst: gmac1-rst {
+                       rockchip,pins = <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
        headphone {
                hp_det: hp-det {
                        rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
                        rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>;
                };
        };
+
+       usb {
+               usb_host_pwren: usb-host-pwren {
+                       rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               usb_otg0_pwren: usb-otg0-pwren {
+                       rockchip,pins = <4 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               usbc0_interrupt: usbc0-interrupt {
+                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+               usbc0_sbu1: usbc0-sbu1 {
+                       rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+               usbc0_sbu2: usbc0-sbu2 {
+                       rockchip,pins = <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+
+       wireless-bluetooth {
+               bt_reg_on: bt-reg-on {
+                       rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               host_wake_bt: host-wake-bt {
+                       rockchip,pins = <1 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               bt_wake_host: bt-wake-host {
+                       rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+
+       wireless-wlan {
+               wifi_wake_host: wifi-wake-host {
+                       rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               wifi_reg_on: wifi-reg-on {
+                       rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
 };
 
 &sai1 {
        status = "okay";
 };
 
+&sdio {
+       bus-width = <4>;
+       cap-sdio-irq;
+       disable-wp;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       no-sd;
+       no-mmc;
+       non-removable;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_3v3_s3>;
+       vqmmc-supply = <&vcc_1v8_s3>;
+       wakeup-source;
+       status = "okay";
+};
+
 &sdmmc {
        bus-width = <4>;
        cap-mmc-highspeed;
        status = "okay";
 };
 
+&u2phy0 {
+       status = "okay";
+};
+
+&u2phy0_otg {
+       status = "okay";
+};
+
+&u2phy1 {
+       status = "okay";
+};
+
+&u2phy1_otg {
+       phy-supply = <&vcc_5v0_usbhost>;
+       status = "okay";
+};
+
 &uart0 {
        pinctrl-0 = <&uart0m0_xfer>;
        status = "okay";
 };
 
+/* Used by Bluetooth modules, enabled in a version specific overlay */
+&uart4 {
+       pinctrl-0 = <&uart4m1_xfer &uart4m1_ctsn &uart4m1_rtsn>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+};
+
+&usb_drd0_dwc3 {
+       usb-role-switch;
+       dr_mode = "otg";
+       status = "okay";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+                       usb_drd0_hs_ep: endpoint {
+                               remote-endpoint = <&usbc0_hs_ep>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+                       usb_drd0_ss_ep: endpoint {
+                               remote-endpoint = <&usbc0_ss_ep>;
+                       };
+               };
+       };
+};
+
+&usb_drd1_dwc3 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usbdp_phy {
+       mode-switch;
+       orientation-switch;
+       pinctrl-names = "default";
+       pinctrl-0 = <&usbc0_sbu1 &usbc0_sbu2>;
+       sbu1-dc-gpios = <&gpio2 RK_PA6 GPIO_ACTIVE_HIGH>;
+       sbu2-dc-gpios = <&gpio2 RK_PA7 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+
+       port {
+               usbdp_phy_ep: endpoint {
+                       remote-endpoint = <&usbc0_dp_ep>;
+               };
+       };
+};
+
 &vop {
        status = "okay";
 };
index 0902d694cef43a0c46ce62c490495e0a8b591a0a..56527c56830e3fd81855652f7bcc31215c771c0a 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&vdd_gpu_s0>;
+       status = "okay";
+};
+
 &hdmi {
        status = "okay";
 };
diff --git a/src/arm64/rockchip/rk3576-luckfox-core3576.dtsi b/src/arm64/rockchip/rk3576-luckfox-core3576.dtsi
new file mode 100644 (file)
index 0000000..9187012
--- /dev/null
@@ -0,0 +1,749 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
+ * Copyright (c) 2025 John Clark <inindev@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
+#include "rk3576.dtsi"
+
+/ {
+       model = "Luckfox Core3576 Module";
+       compatible = "luckfox,core3576","rockchip,rk3576";
+
+       aliases {
+               mmc0 = &sdhci;
+       };
+
+       chosen {
+               stdout-path = "serial0:1500000n8";
+       };
+
+       hdmi-con {
+               compatible = "hdmi-connector";
+               hdmi-pwr-supply = <&vcc_5v0_hdmi>;
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi_out_con>;
+                       };
+               };
+       };
+
+       vbus_5v0_typec: regulator-vbus-5v0-typec {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_otg0_pwr_en>;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vbus5v0_typec";
+               vin-supply = <&vcc_5v0_device>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       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>;
+
+               regulator-state-mem {
+                       regulator-on-in-suspend;
+               };
+       };
+
+       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>;
+
+               regulator-state-mem {
+                       regulator-on-in-suspend;
+               };
+       };
+
+       vcc_3v3_pcie: regulator-vcc-3v3-pcie {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pcie_pwr_en>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "vcc_3v3_pcie";
+               startup-delay-us = <1000>;
+               vin-supply = <&vcc_5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       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>;
+
+               regulator-state-mem {
+                       regulator-on-in-suspend;
+               };
+       };
+
+       vcc_5v0_dcin: regulator-vcc-5v0-dcin {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc_5v0_dcin";
+
+               regulator-state-mem {
+                       regulator-on-in-suspend;
+               };
+       };
+
+       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_5v0_dcin>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       vcc_5v0_hdmi: regulator-vcc-5v0-hdmi {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hdmi_con_en>;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc_5v0_hdmi";
+               vin-supply = <&vcc_5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       vcc_5v0_host: regulator-vcc-5v0-host {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_host_pwr_en>;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc_5v0_host";
+               vin-supply = <&vcc_5v0_device>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       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_5v0_dcin>;
+
+               regulator-state-mem {
+                       regulator-on-in-suspend;
+               };
+       };
+};
+
+&combphy0_ps {
+       status = "okay";
+};
+
+&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>;
+};
+
+&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_pwrctrl2";
+                       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";
+
+       hym8563: rtc@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+               clock-output-names = "hym8563";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hym8563_int>;
+               wakeup-source;
+       };
+};
+
+&pcie0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie_reset>;
+       reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc_3v3_pcie>;
+       status = "okay";
+};
+
+&pinctrl {
+       hdmi {
+               hdmi_con_en: hdmi-con-en {
+                       rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       hym8563 {
+               hym8563_int: hym8563-int {
+                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       pcie {
+               pcie_pwr_en: pcie-pwr-en {
+                       rockchip,pins = <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               pcie_reset: pcie-reset {
+                       rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       usb {
+               usb_host_pwr_en: usb-host-pwr-en {
+                       rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               usb_otg0_pwr_en: usb-otg0-pwr-en {
+                       rockchip,pins = <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               usbc0_int: usbc0-int {
+                       rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&rng {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcca_1v8_s0>;
+       status = "okay";
+};
+
+&sdhci {
+       bus-width = <8>;
+       full-pwr-cycle-in-suspend;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       no-sd;
+       no-sdio;
+       non-removable;
+       vmmc-supply = <&vcc_3v3_s3>;
+       vqmmc-supply = <&vccio_sd_s0>;
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart4m1_xfer &uart4m1_ctsn>;
+       status = "okay";
+};
+
+&u2phy1 {
+       status = "okay";
+};
+
+&u2phy1_otg {
+       phy-supply = <&vcc_5v0_host>;
+       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>;
+       };
+};
diff --git a/src/arm64/rockchip/rk3576-luckfox-omni3576.dts b/src/arm64/rockchip/rk3576-luckfox-omni3576.dts
new file mode 100644 (file)
index 0000000..6c75959
--- /dev/null
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
+ * Copyright (c) 2025 John Clark <inindev@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "rk3576-luckfox-core3576.dtsi"
+
+/ {
+       model = "Luckfox Omni3576 Carrier Board";
+       compatible = "luckfox,omni3576", "luckfox,core3576", "rockchip,rk3576";
+
+       aliases {
+               mmc1 = &sdmmc;
+       };
+
+       leds: leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_green_pin>;
+
+               green_led: green-led {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_HEARTBEAT;
+                       gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+};
+
+&pinctrl {
+       leds {
+               led_green_pin: led-green-pin {
+                       rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       disable-wp;
+       no-sdio;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_3v3_s3>;
+       vqmmc-supply = <&vccio_sd_s0>;
+       status = "okay";
+};
diff --git a/src/arm64/rockchip/rk3576-nanopi-m5.dts b/src/arm64/rockchip/rk3576-nanopi-m5.dts
new file mode 100644 (file)
index 0000000..cce34c5
--- /dev/null
@@ -0,0 +1,941 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 FriendlyElec Computer Tech. Co., Ltd.
+ * Copyright (c) 2025 John Clark <inindev@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
+#include <dt-bindings/usb/pd.h>
+#include "rk3576.dtsi"
+
+/ {
+       model = "FriendlyElec NanoPi M5";
+       compatible = "friendlyarm,nanopi-m5", "rockchip,rk3576";
+
+       aliases {
+               ethernet0 = &gmac0;
+               ethernet1 = &gmac1;
+               mmc0 = &sdmmc;
+       };
+
+       chosen {
+               stdout-path = "serial0:1500000n8";
+       };
+
+       hdmi-con {
+               compatible = "hdmi-connector";
+               hdmi-pwr-supply = <&vcc5v_hdmi_tx>;
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi_out_con>;
+                       };
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               usr_button: key-1 {
+                       debounce-interval = <50>;
+                       gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_LOW>;
+                       label = "user";
+                       linux,code = <BTN_1>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&usr_button_l>;
+                       wakeup-source;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_sys: led-0 {
+                       color = <LED_COLOR_ID_RED>;
+                       function = LED_FUNCTION_HEARTBEAT;
+                       gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>;
+                       label = "sys";
+                       linux,default-trigger = "heartbeat";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&led_sys_h>;
+               };
+
+               led1: led-1 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_LAN;
+                       gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>;
+                       label = "led1";
+                       linux,default-trigger = "netdev";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&led1_h>;
+               };
+
+               led2: led-2 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_LAN;
+                       gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>;
+                       label = "led2";
+                       linux,default-trigger = "netdev";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&led2_h>;
+               };
+       };
+
+       usb3_port2_5v: regulator-usb3-port2-5v {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb3_host_pwren_h>;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "usb3_port2_5v";
+               vin-supply = <&vcc5v0_sys_s5>;
+       };
+
+       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";
+       };
+
+       vcc3v3_m2_keym: regulator-vcc3v3-m2-keym {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio0 RK_PD3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pcie0_pwren_h>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "vcc3v3_m2_keym";
+               vin-supply = <&vcc5v0_sys_s5>;
+       };
+
+       vcc3v3_sd_s0: regulator-vcc3v3-sd-s0 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&sdmmc0_pwren_h>;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "vcc3v3_sd_s0";
+               vin-supply = <&vcc_3v3_s3>;
+       };
+
+       vcc5v0_sys_s5: regulator-vcc5v0-sys-s5 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc5v0_sys_s5";
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_usb_otg0: regulator-vcc5v0-usb-otg0 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio0 RK_PD1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_otg0_pwren_h>;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc5v0_usb_otg0";
+               vin-supply = <&vcc5v0_sys_s5>;
+       };
+
+       vcc5v_hdmi_tx: regulator-vcc5v-hdmi-tx {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc5v_hdmi_tx";
+               vin-supply = <&vcc5v0_sys_s5>;
+       };
+
+       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 = <&vcc5v0_sys_s5>;
+       };
+
+       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 = <&vcc5v0_sys_s5>;
+       };
+
+       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>;
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               pinctrl-names = "default";
+               pinctrl-0 = <&hp_det_l>;
+
+               simple-audio-card,format = "i2s";
+               simple-audio-card,hp-det-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_LOW>;
+               simple-audio-card,mclk-fs = <256>;
+               simple-audio-card,name = "realtek,rt5616-codec";
+
+               simple-audio-card,routing =
+                       "Headphones", "HPOL",
+                       "Headphones", "HPOR",
+                       "IN1P", "Microphone Jack";
+               simple-audio-card,widgets =
+                       "Headphone", "Headphone Jack",
+                       "Microphone", "Microphone Jack";
+
+               simple-audio-card,codec {
+                       sound-dai = <&rt5616>;
+               };
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai2>;
+               };
+       };
+};
+
+&combphy0_ps {
+       status = "okay";
+};
+
+&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>;
+};
+
+&fspi1m1_pins {
+       /* gpio1_d5, gpio1_c4-c7 (clk, d0-d4) are for spi nor flash */
+       /* gpio1_d0-d4 muxed to sai2 audio functions */
+       rockchip,pins =
+               <1 RK_PD5 3 &pcfg_pull_none>,
+               <1 RK_PC4 3 &pcfg_pull_none>,
+               <1 RK_PC5 3 &pcfg_pull_none>,
+               <1 RK_PC6 3 &pcfg_pull_none>,
+               <1 RK_PC7 3 &pcfg_pull_none>;
+};
+
+&gmac0 {
+       clock_in_out = "output";
+       phy-handle = <&rgmii_phy0>;
+       phy-mode = "rgmii-id";
+       phy-supply = <&vcc_3v3_s3>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&eth0m0_miim>,
+                   <&eth0m0_tx_bus2>,
+                   <&eth0m0_rx_bus2>,
+                   <&eth0m0_rgmii_clk>,
+                   <&eth0m0_rgmii_bus>;
+       status = "okay";
+};
+
+&gmac1 {
+       clock_in_out = "output";
+       phy-handle = <&rgmii_phy1>;
+       phy-mode = "rgmii-id";
+       phy-supply = <&vcc_3v3_s3>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&eth1m0_miim>,
+                   <&eth1m0_tx_bus2>,
+                   <&eth1m0_rx_bus2>,
+                   <&eth1m0_rgmii_clk>,
+                   <&eth1m0_rgmii_bus>;
+       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 = <&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_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_null: dvs2-null-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun0";
+               };
+
+               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_null: dvs3-null-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun0";
+               };
+
+               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-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_PA5 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hym8563_int>;
+               wakeup-source;
+       };
+};
+
+&i2c5 {
+       clock-frequency = <200000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c5m3_xfer>;
+       status = "okay";
+
+       rt5616: audio-codec@1b {
+               compatible = "realtek,rt5616";
+               reg = <0x1b>;
+               assigned-clocks = <&cru CLK_SAI2_MCLKOUT>;
+               assigned-clock-rates = <12288000>;
+               clocks = <&cru CLK_SAI2_MCLKOUT>;
+               clock-names = "mclk";
+               #sound-dai-cells = <0>;
+       };
+};
+
+&mdio0 {
+       rgmii_phy0: phy@1 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x1>;
+               clocks = <&cru REFCLKO25M_GMAC0_OUT>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <RK_PB1 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gmac0_int>, <&gmac0_rst>;
+               reset-assert-us = <20000>;
+               reset-deassert-us = <100000>;
+               reset-gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&mdio1 {
+       rgmii_phy1: phy@1 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x1>;
+               clocks = <&cru REFCLKO25M_GMAC1_OUT>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gmac1_int>, <&gmac1_rst>;
+               reset-assert-us = <20000>;
+               reset-deassert-us = <100000>;
+               reset-gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&pcie0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie0_perstn>;
+       reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_m2_keym>;
+       status = "okay";
+};
+
+&pinctrl {
+       gmac {
+               gmac0_int: gmac0-int {
+                       rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+               gmac0_rst: gmac0-rst {
+                       rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               gmac1_int: gmac1-int {
+                       rockchip,pins = <3 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+               gmac1_rst: gmac1-rst {
+                       rockchip,pins = <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       hym8563 {
+               hym8563_int: hym8563-int {
+                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       keys {
+               usr_button_l: usr-button-l {
+                       rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       leds {
+               led_sys_h: led-sys-h {
+                       rockchip,pins = <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               led1_h: led1-h {
+                       rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               led2_h: led2-h {
+                       rockchip,pins = <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie {
+               pcie0_pwren_h: pcie0-pwren-h {
+                       rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               pcie0_perstn: pcie0-perstn {
+                       rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       sdmmc {
+               sdmmc0_pwren_h: sdmmc0-pwren-h {
+                       rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       sound {
+               hp_det_l: hp-det-l {
+                       rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb {
+               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>;
+               };
+       };
+};
+
+&sai2 {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcca_1v8_s0>;
+       status = "okay";
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       disable-wp;
+       no-mmc;
+       no-sdio;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc0_clk>, <&sdmmc0_cmd>, <&sdmmc0_det>, <&sdmmc0_bus4>;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_3v3_s3>;
+       vqmmc-supply = <&vcc3v3_sd_s0>;
+       status = "okay";
+};
+
+&sfc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&fspi1m1_csn0>, <&fspi1m1_pins>;
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               m25p,fast-read;
+               spi-max-frequency = <50000000>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <1>;
+               vcc-supply = <&vcc_1v8_s3>;
+       };
+};
+
+&u2phy0 {
+       status = "okay";
+};
+
+&u2phy0_otg {
+       phy-supply = <&vcc5v0_usb_otg0>;
+       status = "okay";
+};
+
+&u2phy1 {
+       status = "okay";
+};
+
+&u2phy1_otg {
+       phy-supply = <&usb3_port2_5v>;
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&usbdp_phy {
+       status = "okay";
+};
+
+&usb_drd0_dwc3 {
+       dr_mode = "otg";
+       extcon = <&u2phy0>;
+       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>;
+       };
+};
+
+&wdt {
+       status = "okay";
+};
index 6756403111e704cad42f6674d5ab55eb0306f1e3..9bc33422ced5017a7c7a9788919838fd72c9626e 100644 (file)
                };
        };
 
+       rfkill {
+               compatible = "rfkill-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_en_h>;
+               radio-type = "wlan";
+               shutdown-gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_HIGH>;
+       };
+
        leds: leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
                };
        };
 
-       vcc_12v0_dcin: regulator-vcc-12v0-dcin {
+       vcc_5v0_dcin: regulator-vcc-5v0-dcin {
                compatible = "regulator-fixed";
                regulator-always-on;
                regulator-boot-on;
-               regulator-min-microvolt = <12000000>;
-               regulator-max-microvolt = <12000000>;
-               regulator-name = "vcc_12v0_dcin";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc_5v0_dcin";
        };
 
        vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 {
                vin-supply = <&vcc_5v0_sys>;
        };
 
+       vcc_3v3_wifi: regulator-vcc-3v3-wifi {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio2 RK_PC7 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_wifi_pwr>;
+               regulator-always-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "vcc_3v3_wifi";
+               vin-supply = <&vcc_3v3_s3>;
+       };
+
        vcc_5v0_device: regulator-vcc-5v0-device {
                compatible = "regulator-fixed";
                regulator-always-on;
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                regulator-name = "vcc_5v0_device";
-               vin-supply = <&vcc_12v0_dcin>;
+               vin-supply = <&vcc_5v0_sys>;
        };
 
        vcc_5v0_host: regulator-vcc-5v0-host {
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                regulator-name = "vcc5v0_host";
-               vin-supply = <&vcc_5v0_device>;
+               vin-supply = <&vcc_5v0_sys>;
+       };
+
+       vcc_5v0_otg: regulator-vcc-5v0-otg {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_otg_pwren>;
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc5v0_otg";
+               vin-supply = <&vcc_5v0_sys>;
        };
 
        vcc_5v0_sys: regulator-vcc-5v0-sys {
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                regulator-name = "vcc_5v0_sys";
-               vin-supply = <&vcc_12v0_dcin>;
+               vin-supply = <&vcc_5v0_dcin>;
        };
 };
 
+&combphy0_ps {
+       status = "okay";
+};
+
 &combphy1_psu {
        status = "okay";
 };
        };
 };
 
+&hdmi_sound {
+       status = "okay";
+};
+
 &hdptxphy {
        status = "okay";
 };
 
 &mdio0 {
        rgmii_phy0: ethernet-phy@1 {
-               compatible = "ethernet-phy-ieee802.3-c22";
+               compatible = "ethernet-phy-id001c.c916";
                reg = <0x1>;
                clocks = <&cru REFCLKO25M_GMAC0_OUT>;
+               assigned-clocks = <&cru REFCLKO25M_GMAC0_OUT>;
+               assigned-clock-rates = <25000000>;
                pinctrl-names = "default";
                pinctrl-0 = <&rtl8211f_rst>;
                reset-assert-us = <20000>;
                reset-deassert-us = <100000>;
-               reset-gpio = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>;
+               reset-gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>;
        };
 };
 
+&pcie0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie_reset>;
+       reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc_3v3_pcie>;
+       status = "okay";
+};
+
 &pinctrl {
        hym8563 {
                hym8563_int: hym8563-int {
                pcie_pwren: pcie-pwren {
                        rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
                };
+               pcie_reset: pcie-reset {
+                       rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
        };
 
        usb {
                usb_host_pwren: usb-host-pwren {
-                       rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
+                       rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+               usb_otg_pwren: usb-otg-pwren {
+                       rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_down>;
+
+               };
+       };
+
+       wifi {
+               usb_wifi_pwr: usb-wifi-pwr {
+                       rockchip,pins = <2 RK_PC7 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+               wifi_en_h: wifi-en-h {
+                       rockchip,pins = <2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_down>;
                };
        };
 };
 
+&sai6 {
+       status = "okay";
+};
+
 &sdmmc {
        bus-width = <4>;
        cap-mmc-highspeed;
        status = "okay";
 };
 
+&u2phy0_otg {
+       phy-supply = <&vcc_5v0_otg>;
+       status = "okay";
+};
+
 &u2phy1 {
        status = "okay";
 };
 
+&u2phy1_otg {
+       phy-supply = <&vcc_5v0_host>;
+       status = "okay";
+};
+
 &uart0 {
        pinctrl-0 = <&uart0m0_xfer>;
        status = "okay";
 };
 
+&ufshc {
+       status = "okay";
+};
+
+&usbdp_phy {
+       status = "okay";
+};
+
+&usb_drd0_dwc3 {
+       dr_mode = "host";
+       status = "okay";
+};
+
 &usb_drd1_dwc3 {
        dr_mode = "host";
        status = "okay";
index 64812e3bcb613c2dfc6c0fd215408fb688293487..c3cdae8a54941a75821aa6a642c535ced66a116a 100644 (file)
                                 <&cru HCLK_VOP>,
                                 <&cru DCLK_VP0>,
                                 <&cru DCLK_VP1>,
-                                <&cru DCLK_VP2>;
+                                <&cru DCLK_VP2>,
+                                <&hdptxphy>;
                        clock-names = "aclk",
                                      "hclk",
                                      "dclk_vp0",
                                      "dclk_vp1",
-                                     "dclk_vp2";
+                                     "dclk_vp2",
+                                     "pll_hdmiphy0";
                        iommus = <&vop_mmu>;
                        power-domains = <&power RK3576_PD_VOP>;
                        rockchip,grf = <&sys_grf>;
                        status = "disabled";
                };
 
+               sdio: mmc@2a320000 {
+                       compatible = "rockchip,rk3576-dw-mshc";
+                       reg = <0x0 0x2a320000 0x0 0x4000>;
+                       clocks = <&cru HCLK_SDIO>, <&cru CCLK_SRC_SDIO>;
+                       clock-names = "biu", "ciu";
+                       fifo-depth = <0x100>;
+                       interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>;
+                       max-frequency = <200000000>;
+                       pinctrl-0 = <&sdmmc1m0_clk &sdmmc1m0_cmd &sdmmc1m0_bus4>;
+                       pinctrl-names = "default";
+                       power-domains = <&power RK3576_PD_SDGMAC>;
+                       resets = <&cru SRST_H_SDIO>;
+                       reset-names = "reset";
+                       status = "disabled";
+               };
+
                sdhci: mmc@2a330000 {
                        compatible = "rockchip,rk3576-dwcmshc", "rockchip,rk3588-dwcmshc";
                        reg = <0x0 0x2a330000 0x0 0x10000>;
                        reg = <0x0 0x2b000000 0x0 0x2000>;
                        clocks = <&cru CLK_PHY_REF_SRC>, <&cru PCLK_HDPTX_APB>;
                        clock-names = "ref", "apb";
+                       #clock-cells = <0>;
                        resets = <&cru SRST_P_HDPTX_APB>, <&cru SRST_HDPTX_INIT>,
                                 <&cru SRST_HDPTX_CMN>, <&cru SRST_HDPTX_LANE>;
                        reset-names = "apb", "init", "cmn", "lane";
index e04f21d8c831ebe8386b6e952ec8320ab2bca918..431ff77d4518033a1d4c9e89f31adf28e2cc12c2 100644 (file)
                compatible = "belling,bl24c16a", "atmel,24c16";
                reg = <0x50>;
                pagesize = <16>;
+               read-only;
                vcc-supply = <&vcc_3v3_pmu>;
        };
 };
index ae9274365bedf17fe2d21549fb321cb2ccdb78d8..39197ee198370b8166c486052d1c4c95b3810afd 100644 (file)
                        rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
+
+       wireless-bluetooth {
+               bt_reset_pin: bt-reset-pin {
+                       rockchip,pins = <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               bt_wake_pin: bt-wake-pin {
+                       rockchip,pins = <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               bt_wake_host_irq: bt-wake-host-irq {
+                       rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
 };
 
 &pwm1 {
        status = "okay";
 };
 
+&uart6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart6m1_xfer &uart6m1_ctsn &uart6m1_rtsn>;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               clocks = <&hym8563>;
+               clock-names = "lpo";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PC5 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "host-wakeup";
+               device-wakeup-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
+               shutdown-gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>;
+               max-speed = <1500000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_wake_host_irq &bt_wake_pin &bt_reset_pin>;
+               vbat-supply = <&vcc_3v3_s3>;
+               vddio-supply = <&vcc_1v8_s3>;
+       };
+};
+
 &usbdp_phy1 {
        status = "okay";
 };
index 8e912da299a218b61623e6973d2f955504bd44aa..ff1ba5ed56ef5b985c54fa9e1a433fc81f988f8b 100644 (file)
        };
 };
 
+&hdmi_receiver_cma {
+       status = "okay";
+};
+
+&hdmi_receiver {
+       hpd-gpios = <&gpio2 RK_PB5 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";
 };
 
        };
 
+       hdmirx {
+               hdmirx_hpd: hdmirx-5v-detection {
+                       rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
        hym8563 {
                hym8563_int: hym8563-int {
                        rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
index 8171fbfd819a7b087752080e7e8dd4d8bade6533..5fbbeb6f5a935fd81d04248a4bfb608189a13ace 100644 (file)
        };
 };
 
+&hdmi_receiver_cma {
+       status = "okay";
+};
+
+&hdmi_receiver {
+       hpd-gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>;
+       pinctrl-0 = <&hdmim1_rx_cec &hdmim1_rx_hpdin &hdmim1_rx_scl &hdmim1_rx_sda &hdmirx_hpd>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
 &hdptxphy0 {
        status = "okay";
 };
                };
        };
 
+       hdmirx {
+               hdmirx_hpd: hdmirx-5v-detection {
+                       rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
        pcie {
                pcie2_0_rst: pcie2-0-rst {
                        rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
diff --git a/src/arm64/rockchip/rk3588-jaguar-ethernet-switch.dtso b/src/arm64/rockchip/rk3588-jaguar-ethernet-switch.dtso
new file mode 100644 (file)
index 0000000..7d9b1f0
--- /dev/null
@@ -0,0 +1,195 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Cherry Embedded Solutions GmbH
+ *
+ * Device Tree Overlay for the Ethernet Switch adapter for the Mezzanine
+ * connector on RK3588 Jaguar
+ * (manual: https://embedded.cherry.de/jaguar-ethernet-switch-user-manual/)
+ *
+ * This adapter has a KSZ9896 Ethernet Switch with 4 1GbE Ethernet connectors,
+ * two user controllable LEDs, and an M12 12-pin connector which exposes the
+ * following signals:
+ *  - RS232/RS485 (max 250Kbps/500Kbps, RX pin1, TX pin2)
+ *  - two digital inputs (pin4 routed to GPIO3_C5 on SoC, pin5 to GPIO4_B4)
+ *  - two digital outputs (pin7 routed to GPIO3_D3 on SoC, pin8 to GPIO3_D1)
+ *  - two analog inputs (pin10 to channel1 of ADS1015, pin11 to channel2)
+ *
+ * RK3588 Jaguar can be powered entirely through the adapter via the M8 3-pin
+ * connector (12-24V).
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/clock/rockchip,rk3588-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>
+
+&{/} {
+       aliases {
+               ethernet1 = "/ethernet@fe1c0000";
+       };
+
+       mezzanine-leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_usr1_pin &led_usr2_pin>;
+
+               led-1 {
+                       gpios = <&gpio1 RK_PC1 GPIO_ACTIVE_HIGH>;
+                       label = "USR1";
+               };
+
+               led-2 {
+                       gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>;
+                       label = "USR2";
+               };
+       };
+};
+
+&gmac1 {
+       clock_in_out = "output";
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&gmac1_rx_bus2
+                    &gmac1_tx_bus2
+                    &gmac1_rgmii_clk
+                    &gmac1_rgmii_bus
+                    &eth1_pins>;
+       rx_delay = <0x0>;
+       tx_delay = <0x0>;
+       status = "okay";
+
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
+
+&i2c1 {
+       #address-cells = <1>;
+       /*
+        * ADS1015 can handle high-speed (HS) mode (up to 3.4MHz) on I2C bus,
+        * but SoC can handle only up to 400kHz.
+        */
+       clock-frequency = <400000>;
+       #size-cells = <0>;
+       status = "okay";
+
+       adc@48 {
+               compatible = "ti,ads1015";
+               reg = <0x48>;
+               #address-cells = <1>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <RK_PC7 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-0 = <&adc_alert>;
+               pinctrl-names = "default";
+               #io-channel-cells = <1>;
+               #size-cells = <0>;
+
+               channel@1 {
+                       reg = <5>; /* Single-ended between AIN1 and GND */
+                       ti,datarate = <0>;
+                       ti,gain = <5>;
+               };
+
+               channel@2 {
+                       reg = <6>; /* Single-ended between AIN2 and GND */
+                       ti,datarate = <0>;
+                       ti,gain = <5>;
+               };
+       };
+
+       switch@5f {
+               compatible = "microchip,ksz9896";
+               reg = <0x5f>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <RK_PB7 IRQ_TYPE_EDGE_FALLING>; /* ETH_INTRP_N */
+               pinctrl-0 = <&eth_reset_n &eth_intrp_n>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_LOW>; /* ETH_RESET */
+               microchip,synclko-disable; /* CLKO_25_125 only routed to TP1 */
+
+               ethernet-ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       lan1: port@0 {
+                               reg = <0>;
+                               label = "ETH1";
+                       };
+
+                       lan2: port@1 {
+                               reg = <1>;
+                               label = "ETH2";
+                       };
+
+                       lan3: port@2 {
+                               reg = <2>;
+                               label = "ETH3";
+                       };
+
+                       lan4: port@3 {
+                               reg = <3>;
+                               label = "ETH4";
+                       };
+
+                       port@5 {
+                               reg = <5>;
+                               ethernet = <&gmac1>;
+                               label = "CPU";
+                               phy-mode = "rgmii-id";
+                               rx-internal-delay-ps = <2000>;
+                               tx-internal-delay-ps = <2000>;
+
+                               fixed-link {
+                                       speed = <1000>;
+                                       full-duplex;
+                               };
+                       };
+               };
+       };
+};
+
+&pinctrl {
+       adc {
+               adc_alert: adc-alert-irq {
+                       rockchip,pins =
+                               <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       ethernet {
+               eth_intrp_n: eth-intrp-n {
+                       rockchip,pins =
+                               <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               eth_reset_n: eth-reset-n {
+                       rockchip,pins =
+                               <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       leds {
+               led_usr1_pin: led-usr1-pin {
+                       rockchip,pins =
+                               <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               led_usr2_pin: led-usr2-pin {
+                       rockchip,pins =
+                               <3 RK_PC4 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+};
+
+&uart9 {
+       /* GPIO3_D0/EN_RS485_MODE for switching between RS232 and RS485 */
+       pinctrl-0 = <&uart9m2_xfer &uart9m2_rtsn>;
+       pinctrl-names = "default";
+       linux,rs485-enabled-at-boot-time;
+       status = "okay";
+};
index ebe77cdd24e803b00fb848dc81258909472290f1..176925d0a1a809d1e2500f5e5efbbfa6a6d0bd42 100644 (file)
@@ -10,6 +10,7 @@
 #include <dt-bindings/pinctrl/rockchip.h>
 #include <dt-bindings/soc/rockchip,vop2.h>
 #include <dt-bindings/usb/pd.h>
+#include "rk8xx.h"
 #include "rk3588.dtsi"
 
 / {
                vcc13-supply = <&vcc_1v1_nldo_s3>;
                vcc14-supply = <&vcc_1v1_nldo_s3>;
                vcca-supply = <&vcc5v0_sys>;
+               rockchip,reset-mode = <RK806_RESTART>;
 
                rk806_dvs1_null: dvs1-null-pins {
                        pins = "gpio_pwrctrl1";
index 3d8b6f0c55418805c0d614a4d65f67b0c660ca0f..69833a0a94d0f18d9ca86005ac22e58f4c036fa8 100644 (file)
                spi-max-frequency = <104000000>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <1>;
+               vcc-supply = <&vcc_1v8_s3>;
        };
 };
 
index 121e4d1c3fa5dab0d08edf7cba692a765b48f7b4..8222f1fae8fadc5cbb4ef16b3db5ed975ed43915 100644 (file)
@@ -77,7 +77,7 @@
        pinctrl-names = "default";
        pinctrl-0 = <&hp_detect>;
        simple-audio-card,aux-devs = <&speaker_amp>, <&headphone_amp>;
-       simple-audio-card,hp-det-gpios = <&gpio1 RK_PD3 GPIO_ACTIVE_LOW>;
+       simple-audio-card,hp-det-gpios = <&gpio1 RK_PD3 GPIO_ACTIVE_HIGH>;
        simple-audio-card,widgets =
                "Microphone", "Onboard Microphone",
                "Microphone", "Microphone Jack",
index 91d56c34a1e456e18db31e1bbe7252b7e4632588..8a8f3b26754d74f07a5ebd738e28340e7174725b 100644 (file)
        max-frequency = <200000000>;
        mmc-hs400-1_8v;
        mmc-hs400-enhanced-strobe;
+       vmmc-supply = <&vcc_3v3_s3>;
+       vqmmc-supply = <&vcc_1v8_s3>;
        status = "okay";
 };
 
diff --git a/src/arm64/rockchip/rk3588-rock-5b-5bp-5t.dtsi b/src/arm64/rockchip/rk3588-rock-5b-5bp-5t.dtsi
new file mode 100644 (file)
index 0000000..973d39a
--- /dev/null
@@ -0,0 +1,878 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
+#include "rk3588.dtsi"
+
+/ {
+       aliases {
+               mmc0 = &sdhci;
+               mmc1 = &sdmmc;
+               mmc2 = &sdio;
+       };
+
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       hdmi0-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi0_con_in: endpoint {
+                               remote-endpoint = <&hdmi0_out_con>;
+                       };
+               };
+       };
+
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
+
+       fan: pwm-fan {
+               compatible = "pwm-fan";
+               cooling-levels = <0 120 150 180 210 240 255>;
+               fan-supply = <&vcc5v0_sys>;
+               pwms = <&pwm1 0 50000 0>;
+               #cooling-cells = <2>;
+       };
+
+       rfkill-bt {
+               compatible = "rfkill-gpio";
+               label = "rfkill-m2-bt";
+               radio-type = "bluetooth";
+               shutdown-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
+       };
+
+       vcc3v3_pcie2x1l0: regulator-vcc3v3-pcie2x1l0 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               regulator-name = "vcc3v3_pcie2x1l0";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <50000>;
+               vin-supply = <&vcc5v0_sys>;
+               status = "disabled";
+       };
+
+       vcc3v3_pcie2x1l2: regulator-vcc3v3-pcie2x1l2 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_pcie2x1l2";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <5000>;
+               vin-supply = <&vcc_3v3_s3>;
+       };
+
+       vcc3v3_pcie30: regulator-vcc3v3-pcie30 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pcie3_vcc3v3_en>;
+               regulator-name = "vcc3v3_pcie30";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <5000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc5v0_host: regulator-vcc5v0-host {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_host";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc5v0_sys: regulator-vcc5v0-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_1v1_nldo_s3";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1100000>;
+               regulator-max-microvolt = <1100000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+};
+
+&combphy0_ps {
+       status = "okay";
+};
+
+&combphy1_ps {
+       status = "okay";
+};
+
+&combphy2_psu {
+       status = "okay";
+};
+
+&cpu_b0 {
+       cpu-supply = <&vdd_cpu_big0_s0>;
+};
+
+&cpu_b1 {
+       cpu-supply = <&vdd_cpu_big0_s0>;
+};
+
+&cpu_b2 {
+       cpu-supply = <&vdd_cpu_big1_s0>;
+};
+
+&cpu_b3 {
+       cpu-supply = <&vdd_cpu_big1_s0>;
+};
+
+&cpu_l0 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l1 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l2 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l3 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&gpu {
+       mali-supply = <&vdd_gpu_s0>;
+       status = "okay";
+};
+
+&hdmi0 {
+       status = "okay";
+};
+
+&hdmi0_in {
+       hdmi0_in_vp0: endpoint {
+               remote-endpoint = <&vp0_out_hdmi0>;
+       };
+};
+
+&hdmi0_out {
+       hdmi0_out_con: endpoint {
+               remote-endpoint = <&hdmi0_con_in>;
+       };
+};
+
+&hdmi0_sound {
+       status = "okay";
+};
+
+&hdmi1 {
+       pinctrl-0 = <&hdmim0_tx1_cec &hdmim0_tx1_hpd
+                    &hdmim1_tx1_scl &hdmim1_tx1_sda>;
+       status = "okay";
+};
+
+&hdmi1_in {
+       hdmi1_in_vp1: endpoint {
+               remote-endpoint = <&vp1_out_hdmi1>;
+       };
+};
+
+&hdmi1_out {
+       hdmi1_out_con: endpoint {
+               remote-endpoint = <&hdmi1_con_in>;
+       };
+};
+
+&hdmi1_sound {
+       status = "okay";
+};
+
+&hdmi_receiver_cma {
+       status = "okay";
+};
+
+&hdmi_receiver {
+       pinctrl-0 = <&hdmim1_rx_cec &hdmim1_rx_hpdin &hdmim1_rx_scl &hdmim1_rx_sda &hdmirx_hpd>;
+       pinctrl-names = "default";
+};
+
+&hdptxphy0 {
+       status = "okay";
+};
+
+&hdptxphy1 {
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0m2_xfer>;
+       status = "okay";
+
+       vdd_cpu_big0_s0: regulator@42 {
+               compatible = "rockchip,rk8602";
+               reg = <0x42>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_cpu_big0_s0";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <550000>;
+               regulator-max-microvolt = <1050000>;
+               regulator-ramp-delay = <2300>;
+               vin-supply = <&vcc5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       vdd_cpu_big1_s0: regulator@43 {
+               compatible = "rockchip,rk8603", "rockchip,rk8602";
+               reg = <0x43>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_cpu_big1_s0";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <550000>;
+               regulator-max-microvolt = <1050000>;
+               regulator-ramp-delay = <2300>;
+               vin-supply = <&vcc5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+};
+
+&i2c6 {
+       status = "okay";
+
+       hym8563: rtc@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+               clock-output-names = "hym8563";
+               pinctrl-names = "default";
+               pinctrl-0 = <&hym8563_int>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
+               wakeup-source;
+       };
+};
+
+&i2c7 {
+       status = "okay";
+
+       es8316: audio-codec@11 {
+               compatible = "everest,es8316";
+               reg = <0x11>;
+               clocks = <&cru I2S0_8CH_MCLKOUT>;
+               clock-names = "mclk";
+               assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
+               assigned-clock-rates = <12288000>;
+               #sound-dai-cells = <0>;
+
+               port {
+                       es8316_p0_0: endpoint {
+                               remote-endpoint = <&i2s0_8ch_p0_0>;
+                       };
+               };
+       };
+};
+
+&i2s0_8ch {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2s0_lrck
+                    &i2s0_mclk
+                    &i2s0_sclk
+                    &i2s0_sdi0
+                    &i2s0_sdo0>;
+       status = "okay";
+
+       i2s0_8ch_p0: port {
+               i2s0_8ch_p0_0: endpoint {
+                       dai-format = "i2s";
+                       mclk-fs = <256>;
+                       remote-endpoint = <&es8316_p0_0>;
+               };
+       };
+};
+
+&i2s5_8ch {
+       status = "okay";
+};
+
+&i2s6_8ch {
+       status = "okay";
+};
+
+&package_thermal {
+       polling-delay = <1000>;
+
+       trips {
+               package_fan0: package-fan0 {
+                       temperature = <55000>;
+                       hysteresis = <2000>;
+                       type = "active";
+               };
+
+               package_fan1: package-fan1 {
+                       temperature = <65000>;
+                       hysteresis = <2000>;
+                       type = "active";
+               };
+       };
+
+       cooling-maps {
+               map0 {
+                       trip = <&package_fan0>;
+                       cooling-device = <&fan THERMAL_NO_LIMIT 1>;
+               };
+
+               map1 {
+                       trip = <&package_fan1>;
+                       cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
+               };
+       };
+};
+
+&pcie2x1l0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie2_0_rst>;
+       reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie2x1l0>;
+       status = "okay";
+};
+
+&pcie2x1l2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie2_2_rst>;
+       reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie2x1l2>;
+       status = "okay";
+};
+
+&pcie30phy {
+       status = "okay";
+};
+
+&pcie3x4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie3_rst>;
+       reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie30>;
+       status = "okay";
+};
+
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
+&pinctrl {
+       hym8563 {
+               hym8563_int: hym8563-int {
+                       rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie2 {
+               pcie2_0_rst: pcie2-0-rst {
+                       rockchip,pins = <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               pcie2_2_rst: pcie2-2-rst {
+                       rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie3 {
+               pcie3_rst: pcie3-rst {
+                       rockchip,pins = <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               pcie3_vcc3v3_en: pcie3-vcc3v3-en {
+                       rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&avcc_1v8_s0>;
+       status = "okay";
+};
+
+&sdhci {
+       bus-width = <8>;
+       no-sdio;
+       no-sd;
+       non-removable;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       status = "okay";
+};
+
+&sdmmc {
+       max-frequency = <200000000>;
+       no-sdio;
+       no-mmc;
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
+       disable-wp;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_3v3_s3>;
+       vqmmc-supply = <&vccio_sd_s0>;
+       status = "okay";
+};
+
+&sfc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&fspim2_pins>;
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <104000000>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <1>;
+               vcc-supply = <&vcc_3v3_s3>;
+       };
+};
+
+&spi2 {
+       status = "okay";
+       assigned-clocks = <&cru CLK_SPI2>;
+       assigned-clock-rates = <200000000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi2m2_cs0 &spi2m2_pins>;
+       num-cs = <1>;
+
+       pmic@0 {
+               compatible = "rockchip,rk806";
+               spi-max-frequency = <1000000>;
+               reg = <0x0>;
+
+               interrupt-parent = <&gpio0>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
+                           <&rk806_dvs2_null>, <&rk806_dvs3_null>;
+
+               system-power-controller;
+
+               vcc1-supply = <&vcc5v0_sys>;
+               vcc2-supply = <&vcc5v0_sys>;
+               vcc3-supply = <&vcc5v0_sys>;
+               vcc4-supply = <&vcc5v0_sys>;
+               vcc5-supply = <&vcc5v0_sys>;
+               vcc6-supply = <&vcc5v0_sys>;
+               vcc7-supply = <&vcc5v0_sys>;
+               vcc8-supply = <&vcc5v0_sys>;
+               vcc9-supply = <&vcc5v0_sys>;
+               vcc10-supply = <&vcc5v0_sys>;
+               vcc11-supply = <&vcc_2v0_pldo_s3>;
+               vcc12-supply = <&vcc5v0_sys>;
+               vcc13-supply = <&vcc_1v1_nldo_s3>;
+               vcc14-supply = <&vcc_1v1_nldo_s3>;
+               vcca-supply = <&vcc5v0_sys>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               rk806_dvs1_null: dvs1-null-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs2_null: dvs2-null-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs3_null: dvs3-null-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun0";
+               };
+
+               regulators {
+                       vdd_gpu_s0: vdd_gpu_mem_s0: dcdc-reg1 {
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_gpu_s0";
+                               regulator-enable-ramp-delay = <400>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_lit_s0: vdd_cpu_lit_mem_s0: dcdc-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_cpu_lit_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_log_s0: dcdc-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_log_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <750000>;
+                               };
+                       };
+
+                       vdd_vdenc_s0: vdd_vdenc_mem_s0: dcdc-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_vdenc_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_ddr_s0: dcdc-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_ddr_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <850000>;
+                               };
+                       };
+
+                       vdd2_ddr_s3: dcdc-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vdd2_ddr_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_2v0_pldo_s3: dcdc-reg7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2000000>;
+                               regulator-max-microvolt = <2000000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_2v0_pldo_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <2000000>;
+                               };
+                       };
+
+                       vcc_3v3_s3: dcdc-reg8 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc_3v3_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vddq_ddr_s0: dcdc-reg9 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vddq_ddr_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8_s3: dcdc-reg10 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc_1v8_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       avcc_1v8_s0: pldo-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "avcc_1v8_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8_s0: pldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc_1v8_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       avdd_1v2_s0: pldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-name = "avdd_1v2_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v3_s0: pldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vcc_3v3_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vccio_sd_s0: pldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vccio_sd_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       pldo6_s3: pldo-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "pldo6_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vdd_0v75_s3: nldo-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-name = "vdd_0v75_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <750000>;
+                               };
+                       };
+
+                       vdd_ddr_pll_s0: nldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-name = "vdd_ddr_pll_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <850000>;
+                               };
+                       };
+
+                       avdd_0v75_s0: nldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-name = "avdd_0v75_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_0v85_s0: nldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-name = "vdd_0v85_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_0v75_s0: nldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-name = "vdd_0v75_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&tsadc {
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-0 = <&uart2m0_xfer>;
+       status = "okay";
+};
+
+&u2phy1 {
+       status = "okay";
+};
+
+&u2phy1_otg {
+       status = "okay";
+};
+
+&u2phy2 {
+       status = "okay";
+};
+
+&u2phy2_host {
+       /* connected to USB hub, which is powered by vcc5v0_sys */
+       phy-supply = <&vcc5v0_sys>;
+       status = "okay";
+};
+
+&u2phy3 {
+       status = "okay";
+};
+
+&u2phy3_host {
+       phy-supply = <&vcc5v0_host>;
+       status = "okay";
+};
+
+&usbdp_phy1 {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&usb_host1_ehci {
+       status = "okay";
+};
+
+&usb_host1_ohci {
+       status = "okay";
+};
+
+&usb_host1_xhci {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&vop {
+       status = "okay";
+};
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vp0 {
+       vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+               remote-endpoint = <&hdmi0_in_vp0>;
+       };
+};
+
+&vp1 {
+       vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI1>;
+               remote-endpoint = <&hdmi1_in_vp1>;
+       };
+};
index 6052787d2560978d2bae6cfbeea5fc1d419d583a..e5c474e4d02a6582efc3bd704d95df95bf9fb0ee 100644 (file)
@@ -2,22 +2,9 @@
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/leds/common.h>
-#include <dt-bindings/soc/rockchip,vop2.h>
-#include "rk3588.dtsi"
+#include "rk3588-rock-5b-5bp-5t.dtsi"
 
 / {
-       aliases {
-               mmc0 = &sdhci;
-               mmc1 = &sdmmc;
-               mmc2 = &sdio;
-       };
-
-       chosen {
-               stdout-path = "serial2:1500000n8";
-       };
-
        analog-sound {
                compatible = "audio-graph-card";
                label = "rk3588-es8316";
                pinctrl-0 = <&hp_detect>;
        };
 
-       hdmi0-con {
-               compatible = "hdmi-connector";
-               type = "a";
-
-               port {
-                       hdmi0_con_in: endpoint {
-                               remote-endpoint = <&hdmi0_out_con>;
-                       };
-               };
-       };
-
-       hdmi1-con {
-               compatible = "hdmi-connector";
-               type = "a";
-
-               port {
-                       hdmi1_con_in: endpoint {
-                               remote-endpoint = <&hdmi1_out_con>;
-                       };
-               };
-       };
-
        leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
                };
        };
 
-       fan: pwm-fan {
-               compatible = "pwm-fan";
-               cooling-levels = <0 120 150 180 210 240 255>;
-               fan-supply = <&vcc5v0_sys>;
-               pwms = <&pwm1 0 50000 0>;
-               #cooling-cells = <2>;
-       };
-
        rfkill {
                compatible = "rfkill-gpio";
                label = "rfkill-m2-wlan";
                radio-type = "wlan";
                shutdown-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
        };
-
-       rfkill-bt {
-               compatible = "rfkill-gpio";
-               label = "rfkill-m2-bt";
-               radio-type = "bluetooth";
-               shutdown-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
-       };
-
-       vcc3v3_pcie2x1l0: regulator-vcc3v3-pcie2x1l0 {
-               compatible = "regulator-fixed";
-               enable-active-high;
-               gpios = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pcie2_0_vcc3v3_en>;
-               regulator-name = "vcc3v3_pcie2x1l0";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               startup-delay-us = <50000>;
-               vin-supply = <&vcc5v0_sys>;
-       };
-
-       vcc3v3_pcie2x1l2: regulator-vcc3v3-pcie2x1l2 {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc3v3_pcie2x1l2";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               startup-delay-us = <5000>;
-               vin-supply = <&vcc_3v3_s3>;
-       };
-
-       vcc3v3_pcie30: regulator-vcc3v3-pcie30 {
-               compatible = "regulator-fixed";
-               enable-active-high;
-               gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pcie3_vcc3v3_en>;
-               regulator-name = "vcc3v3_pcie30";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               startup-delay-us = <5000>;
-               vin-supply = <&vcc5v0_sys>;
-       };
-
-       vcc5v0_host: regulator-vcc5v0-host {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc5v0_host";
-               regulator-boot-on;
-               regulator-always-on;
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               vin-supply = <&vcc5v0_sys>;
-       };
-
-       vcc5v0_sys: regulator-vcc5v0-sys {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc5v0_sys";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-       };
-
-       vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc_1v1_nldo_s3";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <1100000>;
-               regulator-max-microvolt = <1100000>;
-               vin-supply = <&vcc5v0_sys>;
-       };
-};
-
-&combphy0_ps {
-       status = "okay";
-};
-
-&combphy1_ps {
-       status = "okay";
-};
-
-&combphy2_psu {
-       status = "okay";
-};
-
-&cpu_b0 {
-       cpu-supply = <&vdd_cpu_big0_s0>;
-};
-
-&cpu_b1 {
-       cpu-supply = <&vdd_cpu_big0_s0>;
-};
-
-&cpu_b2 {
-       cpu-supply = <&vdd_cpu_big1_s0>;
-};
-
-&cpu_b3 {
-       cpu-supply = <&vdd_cpu_big1_s0>;
-};
-
-&cpu_l0 {
-       cpu-supply = <&vdd_cpu_lit_s0>;
-};
-
-&cpu_l1 {
-       cpu-supply = <&vdd_cpu_lit_s0>;
-};
-
-&cpu_l2 {
-       cpu-supply = <&vdd_cpu_lit_s0>;
-};
-
-&cpu_l3 {
-       cpu-supply = <&vdd_cpu_lit_s0>;
-};
-
-&gpu {
-       mali-supply = <&vdd_gpu_s0>;
-       status = "okay";
-};
-
-&hdmi0 {
-       status = "okay";
-};
-
-&hdmi0_in {
-       hdmi0_in_vp0: endpoint {
-               remote-endpoint = <&vp0_out_hdmi0>;
-       };
-};
-
-&hdmi0_out {
-       hdmi0_out_con: endpoint {
-               remote-endpoint = <&hdmi0_con_in>;
-       };
-};
-
-&hdmi0_sound {
-       status = "okay";
-};
-
-&hdmi1 {
-       pinctrl-0 = <&hdmim0_tx1_cec &hdmim0_tx1_hpd
-                    &hdmim1_tx1_scl &hdmim1_tx1_sda>;
-       status = "okay";
-};
-
-&hdmi1_in {
-       hdmi1_in_vp1: endpoint {
-               remote-endpoint = <&vp1_out_hdmi1>;
-       };
-};
-
-&hdmi1_out {
-       hdmi1_out_con: endpoint {
-               remote-endpoint = <&hdmi1_con_in>;
-       };
-};
-
-&hdmi1_sound {
-       status = "okay";
-};
-
-&hdmi_receiver_cma {
-       status = "okay";
 };
 
 &hdmi_receiver {
        hpd-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
-       pinctrl-0 = <&hdmim1_rx_cec &hdmim1_rx_hpdin &hdmim1_rx_scl &hdmim1_rx_sda &hdmirx_hpd>;
-       pinctrl-names = "default";
-       status = "okay";
-};
-
-&hdptxphy0 {
-       status = "okay";
-};
-
-&hdptxphy1 {
        status = "okay";
 };
 
-&i2c0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c0m2_xfer>;
-       status = "okay";
-
-       vdd_cpu_big0_s0: regulator@42 {
-               compatible = "rockchip,rk8602";
-               reg = <0x42>;
-               fcs,suspend-voltage-selector = <1>;
-               regulator-name = "vdd_cpu_big0_s0";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <550000>;
-               regulator-max-microvolt = <1050000>;
-               regulator-ramp-delay = <2300>;
-               vin-supply = <&vcc5v0_sys>;
-
-               regulator-state-mem {
-                       regulator-off-in-suspend;
-               };
-       };
-
-       vdd_cpu_big1_s0: regulator@43 {
-               compatible = "rockchip,rk8603", "rockchip,rk8602";
-               reg = <0x43>;
-               fcs,suspend-voltage-selector = <1>;
-               regulator-name = "vdd_cpu_big1_s0";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <550000>;
-               regulator-max-microvolt = <1050000>;
-               regulator-ramp-delay = <2300>;
-               vin-supply = <&vcc5v0_sys>;
-
-               regulator-state-mem {
-                       regulator-off-in-suspend;
-               };
-       };
-};
-
-&i2c6 {
-       status = "okay";
-
-       hym8563: rtc@51 {
-               compatible = "haoyu,hym8563";
-               reg = <0x51>;
-               #clock-cells = <0>;
-               clock-output-names = "hym8563";
-               pinctrl-names = "default";
-               pinctrl-0 = <&hym8563_int>;
-               interrupt-parent = <&gpio0>;
-               interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
-               wakeup-source;
-       };
-};
-
-&i2c7 {
-       status = "okay";
-
-       es8316: audio-codec@11 {
-               compatible = "everest,es8316";
-               reg = <0x11>;
-               clocks = <&cru I2S0_8CH_MCLKOUT>;
-               clock-names = "mclk";
-               assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
-               assigned-clock-rates = <12288000>;
-               #sound-dai-cells = <0>;
-
-               port {
-                       es8316_p0_0: endpoint {
-                               remote-endpoint = <&i2s0_8ch_p0_0>;
-                       };
-               };
-       };
-};
-
-&i2s0_8ch {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2s0_lrck
-                    &i2s0_mclk
-                    &i2s0_sclk
-                    &i2s0_sdi0
-                    &i2s0_sdo0>;
-       status = "okay";
-
-       i2s0_8ch_p0: port {
-               i2s0_8ch_p0_0: endpoint {
-                       dai-format = "i2s";
-                       mclk-fs = <256>;
-                       remote-endpoint = <&es8316_p0_0>;
-               };
-       };
-};
-
-&i2s5_8ch {
-       status = "okay";
-};
-
-&i2s6_8ch {
-       status = "okay";
-};
-
-&package_thermal {
-       polling-delay = <1000>;
-
-       trips {
-               package_fan0: package-fan0 {
-                       temperature = <55000>;
-                       hysteresis = <2000>;
-                       type = "active";
-               };
-
-               package_fan1: package-fan1 {
-                       temperature = <65000>;
-                       hysteresis = <2000>;
-                       type = "active";
-               };
-       };
-
-       cooling-maps {
-               map0 {
-                       trip = <&package_fan0>;
-                       cooling-device = <&fan THERMAL_NO_LIMIT 1>;
-               };
-
-               map1 {
-                       trip = <&package_fan1>;
-                       cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
-               };
-       };
-};
-
-&pcie2x1l0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pcie2_0_rst>;
-       reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
-       vpcie3v3-supply = <&vcc3v3_pcie2x1l0>;
-       status = "okay";
-};
-
-&pcie2x1l2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pcie2_2_rst>;
-       reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
-       vpcie3v3-supply = <&vcc3v3_pcie2x1l2>;
-       status = "okay";
-};
-
-&pcie30phy {
-       status = "okay";
-};
-
-&pcie3x4 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pcie3_rst>;
-       reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
-       vpcie3v3-supply = <&vcc3v3_pcie30>;
-       status = "okay";
-};
-
-&pd_gpu {
-       domain-supply = <&vdd_gpu_s0>;
-};
-
 &pinctrl {
        hdmirx {
                hdmirx_hpd: hdmirx-5v-detection {
                };
        };
 
-       hym8563 {
-               hym8563_int: hym8563-int {
-                       rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-
        leds {
                led_rgb_b: led-rgb-b {
                        rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
 
-       sound {
-               hp_detect: hp-detect {
-                       rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-
        pcie2 {
-               pcie2_0_rst: pcie2-0-rst {
-                       rockchip,pins = <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-
                pcie2_0_vcc3v3_en: pcie2-0-vcc-en {
                        rockchip,pins = <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
                };
-
-               pcie2_2_rst: pcie2-2-rst {
-                       rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
        };
 
-       pcie3 {
-               pcie3_rst: pcie3-rst {
-                       rockchip,pins = <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-
-               pcie3_vcc3v3_en: pcie3-vcc3v3-en {
-                       rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-};
-
-&pwm1 {
-       status = "okay";
-};
-
-&saradc {
-       vref-supply = <&avcc_1v8_s0>;
-       status = "okay";
-};
-
-&sdhci {
-       bus-width = <8>;
-       no-sdio;
-       no-sd;
-       non-removable;
-       mmc-hs400-1_8v;
-       mmc-hs400-enhanced-strobe;
-       status = "okay";
-};
-
-&sdmmc {
-       max-frequency = <200000000>;
-       no-sdio;
-       no-mmc;
-       bus-width = <4>;
-       cap-mmc-highspeed;
-       cap-sd-highspeed;
-       cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
-       disable-wp;
-       sd-uhs-sdr104;
-       vmmc-supply = <&vcc_3v3_s3>;
-       vqmmc-supply = <&vccio_sd_s0>;
-       status = "okay";
-};
-
-&sfc {
-       pinctrl-names = "default";
-       pinctrl-0 = <&fspim2_pins>;
-       status = "okay";
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <104000000>;
-               spi-rx-bus-width = <4>;
-               spi-tx-bus-width = <1>;
-               vcc-supply = <&vcc_3v3_s3>;
-       };
-};
-
-&spi2 {
-       status = "okay";
-       assigned-clocks = <&cru CLK_SPI2>;
-       assigned-clock-rates = <200000000>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&spi2m2_cs0 &spi2m2_pins>;
-       num-cs = <1>;
-
-       pmic@0 {
-               compatible = "rockchip,rk806";
-               spi-max-frequency = <1000000>;
-               reg = <0x0>;
-
-               interrupt-parent = <&gpio0>;
-               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
-
-               pinctrl-names = "default";
-               pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
-                           <&rk806_dvs2_null>, <&rk806_dvs3_null>;
-
-               system-power-controller;
-
-               vcc1-supply = <&vcc5v0_sys>;
-               vcc2-supply = <&vcc5v0_sys>;
-               vcc3-supply = <&vcc5v0_sys>;
-               vcc4-supply = <&vcc5v0_sys>;
-               vcc5-supply = <&vcc5v0_sys>;
-               vcc6-supply = <&vcc5v0_sys>;
-               vcc7-supply = <&vcc5v0_sys>;
-               vcc8-supply = <&vcc5v0_sys>;
-               vcc9-supply = <&vcc5v0_sys>;
-               vcc10-supply = <&vcc5v0_sys>;
-               vcc11-supply = <&vcc_2v0_pldo_s3>;
-               vcc12-supply = <&vcc5v0_sys>;
-               vcc13-supply = <&vcc_1v1_nldo_s3>;
-               vcc14-supply = <&vcc_1v1_nldo_s3>;
-               vcca-supply = <&vcc5v0_sys>;
-
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               rk806_dvs1_null: dvs1-null-pins {
-                       pins = "gpio_pwrctrl1";
-                       function = "pin_fun0";
-               };
-
-               rk806_dvs2_null: dvs2-null-pins {
-                       pins = "gpio_pwrctrl2";
-                       function = "pin_fun0";
-               };
-
-               rk806_dvs3_null: dvs3-null-pins {
-                       pins = "gpio_pwrctrl3";
-                       function = "pin_fun0";
-               };
-
-               regulators {
-                       vdd_gpu_s0: vdd_gpu_mem_s0: dcdc-reg1 {
-                               regulator-boot-on;
-                               regulator-min-microvolt = <550000>;
-                               regulator-max-microvolt = <950000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_gpu_s0";
-                               regulator-enable-ramp-delay = <400>;
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_cpu_lit_s0: vdd_cpu_lit_mem_s0: dcdc-reg2 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <550000>;
-                               regulator-max-microvolt = <950000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_cpu_lit_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_log_s0: dcdc-reg3 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <675000>;
-                               regulator-max-microvolt = <750000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_log_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                                       regulator-suspend-microvolt = <750000>;
-                               };
-                       };
-
-                       vdd_vdenc_s0: vdd_vdenc_mem_s0: dcdc-reg4 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <550000>;
-                               regulator-max-microvolt = <950000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_vdenc_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_ddr_s0: dcdc-reg5 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <675000>;
-                               regulator-max-microvolt = <900000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_ddr_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                                       regulator-suspend-microvolt = <850000>;
-                               };
-                       };
-
-                       vdd2_ddr_s3: dcdc-reg6 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-name = "vdd2_ddr_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                               };
-                       };
-
-                       vcc_2v0_pldo_s3: dcdc-reg7 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <2000000>;
-                               regulator-max-microvolt = <2000000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_2v0_pldo_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <2000000>;
-                               };
-                       };
-
-                       vcc_3v3_s3: dcdc-reg8 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <3300000>;
-                               regulator-max-microvolt = <3300000>;
-                               regulator-name = "vcc_3v3_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <3300000>;
-                               };
-                       };
-
-                       vddq_ddr_s0: dcdc-reg9 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-name = "vddq_ddr_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc_1v8_s3: dcdc-reg10 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-name = "vcc_1v8_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <1800000>;
-                               };
-                       };
-
-                       avcc_1v8_s0: pldo-reg1 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-name = "avcc_1v8_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc_1v8_s0: pldo-reg2 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-name = "vcc_1v8_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                                       regulator-suspend-microvolt = <1800000>;
-                               };
-                       };
-
-                       avdd_1v2_s0: pldo-reg3 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1200000>;
-                               regulator-max-microvolt = <1200000>;
-                               regulator-name = "avdd_1v2_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc_3v3_s0: pldo-reg4 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <3300000>;
-                               regulator-max-microvolt = <3300000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vcc_3v3_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vccio_sd_s0: pldo-reg5 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <3300000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vccio_sd_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       pldo6_s3: pldo-reg6 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-name = "pldo6_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <1800000>;
-                               };
-                       };
-
-                       vdd_0v75_s3: nldo-reg1 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <750000>;
-                               regulator-name = "vdd_0v75_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <750000>;
-                               };
-                       };
-
-                       vdd_ddr_pll_s0: nldo-reg2 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <850000>;
-                               regulator-max-microvolt = <850000>;
-                               regulator-name = "vdd_ddr_pll_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                                       regulator-suspend-microvolt = <850000>;
-                               };
-                       };
-
-                       avdd_0v75_s0: nldo-reg3 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <750000>;
-                               regulator-name = "avdd_0v75_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_0v85_s0: nldo-reg4 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <850000>;
-                               regulator-max-microvolt = <850000>;
-                               regulator-name = "vdd_0v85_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_0v75_s0: nldo-reg5 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <750000>;
-                               regulator-name = "vdd_0v75_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
+       sound {
+               hp_detect: hp-detect {
+                       rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
 };
 
-&tsadc {
-       status = "okay";
-};
-
-&uart2 {
-       pinctrl-0 = <&uart2m0_xfer>;
-       status = "okay";
-};
-
-&u2phy1 {
-       status = "okay";
-};
-
-&u2phy1_otg {
-       status = "okay";
-};
-
-&u2phy2 {
-       status = "okay";
-};
-
-&u2phy2_host {
-       /* connected to USB hub, which is powered by vcc5v0_sys */
-       phy-supply = <&vcc5v0_sys>;
-       status = "okay";
-};
-
-&u2phy3 {
-       status = "okay";
-};
-
-&u2phy3_host {
-       phy-supply = <&vcc5v0_host>;
-       status = "okay";
-};
-
-&usbdp_phy1 {
-       status = "okay";
-};
-
-&usb_host0_ehci {
-       status = "okay";
-};
-
-&usb_host0_ohci {
-       status = "okay";
-};
-
-&usb_host1_ehci {
-       status = "okay";
-};
-
-&usb_host1_ohci {
-       status = "okay";
-};
-
-&usb_host1_xhci {
-       dr_mode = "host";
-       status = "okay";
-};
-
 &usb_host2_xhci {
        status = "okay";
 };
 
-&vop {
-       status = "okay";
-};
-
-&vop_mmu {
+&vcc3v3_pcie2x1l0 {
+       gpios = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie2_0_vcc3v3_en>;
        status = "okay";
 };
-
-&vp0 {
-       vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
-               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
-               remote-endpoint = <&hdmi0_in_vp0>;
-       };
-};
-
-&vp1 {
-       vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
-               reg = <ROCKCHIP_VOP2_EP_HDMI1>;
-               remote-endpoint = <&hdmi1_in_vp1>;
-       };
-};
diff --git a/src/arm64/rockchip/rk3588-rock-5t.dts b/src/arm64/rockchip/rk3588-rock-5t.dts
new file mode 100644 (file)
index 0000000..f16ff00
--- /dev/null
@@ -0,0 +1,140 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include "rk3588-rock-5b-5bp-5t.dtsi"
+
+/ {
+       model = "Radxa ROCK 5T";
+       compatible = "radxa,rock-5t", "rockchip,rk3588";
+
+       analog-sound {
+               compatible = "audio-graph-card";
+               label = "rk3588-es8316";
+
+               widgets = "Microphone", "Mic Jack",
+               "Headphone", "Headphones";
+
+               routing = "MIC2", "Mic Jack",
+               "Headphones", "HPOL",
+               "Headphones", "HPOR";
+
+               dais = <&i2s0_8ch_p0>;
+               hp-det-gpios = <&gpio4 RK_PC3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hp_detect>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_rgb_b>;
+
+               led_rgb_b {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       rfkill {
+               compatible = "rfkill-gpio";
+               label = "rfkill-m2-wlan";
+               radio-type = "wlan";
+               shutdown-gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>;
+       };
+
+       vcc3v3_pcie2x1l1: regulator-vcc3v3-pcie2x1l2 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_pcie2x1l1";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <5000>;
+               vin-supply = <&vcc_3v3_s3>;
+       };
+};
+
+&hdmi_receiver {
+       hpd-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&pcie2x1l1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie2_1_rst>;
+       reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie2x1l1>;
+       status = "okay";
+};
+
+&pcie30phy {
+       data-lanes = <1 1 2 2>;
+};
+
+&pcie3x2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie3x2_rst>;
+       reset-gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie30>;
+       status = "okay";
+};
+
+&pcie3x4 {
+       num-lanes = <2>;
+};
+
+&pinctrl {
+       hdmirx {
+               hdmirx_hpd: hdmirx-5v-detection {
+                       rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       leds {
+               led_rgb_b: led-rgb-b {
+                       rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie2 {
+               pcie2_1_rst: pcie2-1-rst {
+                       rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               pcie2_0_vcc3v3_en: pcie2-0-vcc-en {
+                       rockchip,pins = <2 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie3 {
+               pcie3x2_rst: pcie3x2-rst {
+                       rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       sound {
+               hp_detect: hp-detect {
+                       rockchip,pins = <4 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb {
+               vcc5v0_host_en: vcc5v0-host-en {
+                       rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&vcc3v3_pcie2x1l0 {
+       gpios = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie2_0_vcc3v3_en>;
+       status = "okay";
+};
+
+&vcc5v0_host {
+       enable-active-high;
+       gpio = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&vcc5v0_host_en>;
+};
index c4933a08dd1e3c92f3e0747135faf97c5eeca906..b44e89e1bb1599ee70b921598c2eb6fd54614f55 100644 (file)
@@ -6,6 +6,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/leds/common.h>
 #include <dt-bindings/pinctrl/rockchip.h>
+#include "rk8xx.h"
 #include "rk3588.dtsi"
 
 / {
                vcc13-supply = <&vcc_1v1_nldo_s3>;
                vcc14-supply = <&vcc_1v1_nldo_s3>;
                vcca-supply = <&vcc5v0_sys>;
+               rockchip,reset-mode = <RK806_RESTART>;
 
                rk806_dvs1_null: dvs1-null-pins {
                        pins = "gpio_pwrctrl1";
index 60ad272982ad512d611f4eec0b4ef6d52322eb78..6daea8961fdd651584932e6309b13ddaca908de2 100644 (file)
 
                regulators {
                        vdd_gpu_s0: vdd_gpu_mem_s0: dcdc-reg1 {
-                               /*
-                                * RK3588's GPU power domain cannot be enabled
-                                * without this regulator active, but it
-                                * doesn't have to be on when the GPU PD is
-                                * disabled.  Because the PD binding does not
-                                * currently allow us to express this
-                                * relationship, we have no choice but to do
-                                * this instead:
-                                */
-                               regulator-always-on;
-
                                regulator-boot-on;
                                regulator-min-microvolt = <550000>;
                                regulator-max-microvolt = <950000>;
index 3045cb3bd68c638a645e9e0cafe2dde260c58a91..9884a5df47dfedc1b283c4ae257edfe23635a033 100644 (file)
@@ -28,7 +28,7 @@
                compatible = "operating-points-v2";
                opp-shared;
 
-               opp-1200000000{
+               opp-1200000000 {
                        opp-hz = /bits/ 64 <1200000000>;
                        opp-microvolt = <750000 750000 950000>;
                        clock-latency-ns = <40000>;
@@ -49,7 +49,7 @@
                compatible = "operating-points-v2";
                opp-shared;
 
-               opp-1200000000{
+               opp-1200000000 {
                        opp-hz = /bits/ 64 <1200000000>;
                        opp-microvolt = <750000 750000 950000>;
                        clock-latency-ns = <40000>;
index 873a2bd6a6de6744542ae5ccab0956b7f73a9fa4..55fc7cbef58d906a0572d19e6f07686ba5d02f38 100644 (file)
@@ -7,6 +7,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/thermal/thermal.h>
 #include <dt-bindings/usb/pd.h>
 #include "rk3588s.dtsi"
        cpu-supply = <&vdd_cpu_big1_s0>;
 };
 
+&dsi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "huiling,hl055fhav028c", "himax,hx8399c";
+               reg = <0>;
+               backlight = <&backlight>;
+               iovcc-supply = <&vcc3v3_lcd0_n>;
+               pinctrl-0 = <&lcd_rst>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_LOW>;
+               rotation = <90>;
+               vcc-supply = <&vcc3v3_lcd0_n>;
+
+               port {
+                       mipi_panel_in: endpoint {
+                               remote-endpoint = <&dsi0_out_panel>;
+                       };
+               };
+       };
+};
+
+&dsi0_in {
+       dsi0_in_vp3: endpoint {
+               remote-endpoint = <&vp3_out_dsi0>;
+       };
+};
+
+&dsi0_out {
+       dsi0_out_panel: endpoint {
+               remote-endpoint = <&mipi_panel_in>;
+       };
+};
+
 &gpu {
        mali-supply = <&vdd_gpu_s0>;
        status = "okay";
        status = "okay";
 };
 
+&mipidcphy0 {
+       status = "okay";
+};
+
 &package_thermal {
        polling-delay = <1000>;
 
                };
        };
 
-       lcd_bl_en {
+       lcd {
                lcd_bl_en: lcd-bl-en {
                        rockchip,pins =
                                <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
                };
+
+               lcd_rst: lcd-rst {
+                       rockchip,pins =
+                               <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
        };
 
        pcie-pins {
                shutdown-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
        };
 };
+
+&vop {
+       status = "okay";
+};
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vp3 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       vp3_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 {
+               reg = <ROCKCHIP_VOP2_EP_MIPI0>;
+               remote-endpoint = <&dsi0_in_vp3>;
+       };
+};
index 4fedc50cce8c8601fedbe0f7fff719fade27a145..11940c77f2bd018a39ffd4e558e2f3688245e1d4 100644 (file)
@@ -42,9 +42,8 @@
                simple-audio-card,bitclock-master = <&masterdai>;
                simple-audio-card,format = "i2s";
                simple-audio-card,frame-master = <&masterdai>;
-               simple-audio-card,hp-det-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_LOW>;
+               simple-audio-card,hp-det-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
                simple-audio-card,mclk-fs = <256>;
-               simple-audio-card,pin-switches = "Headphones";
                simple-audio-card,routing =
                        "Headphones", "LOUT1",
                        "Headphones", "ROUT1",
diff --git a/src/arm64/rockchip/rk3588s-roc-pc.dts b/src/arm64/rockchip/rk3588s-roc-pc.dts
new file mode 100644 (file)
index 0000000..7e17986
--- /dev/null
@@ -0,0 +1,840 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
+#include <dt-bindings/usb/pd.h>
+#include "rk3588s.dtsi"
+
+/ {
+       model = "Firefly Station M3";
+       compatible = "firefly,rk3588s-roc-pc", "rockchip,rk3588s";
+
+       aliases {
+               ethernet0 = &gmac1;
+               mmc0 = &sdhci;
+               mmc1 = &sdmmc;
+       };
+
+       analog-sound {
+               compatible = "simple-audio-card";
+               pinctrl-names = "default";
+               pinctrl-0 = <&hp_detect>;
+               simple-audio-card,name = "rockchip,es8388";
+               simple-audio-card,bitclock-master = <&masterdai>;
+               simple-audio-card,format = "i2s";
+               simple-audio-card,frame-master = <&masterdai>;
+               simple-audio-card,hp-det-gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>;
+               simple-audio-card,mclk-fs = <256>;
+               simple-audio-card,pin-switches = "Headphones";
+               simple-audio-card,routing =
+                       "Headphones", "LOUT1",
+                       "Headphones", "ROUT1",
+                       "LINPUT1", "Microphone Jack",
+                       "RINPUT1", "Microphone Jack",
+                       "LINPUT2", "Onboard Microphone",
+                       "RINPUT2", "Onboard Microphone";
+               simple-audio-card,widgets =
+                       "Microphone", "Microphone Jack",
+                       "Microphone", "Onboard Microphone",
+                       "Headphone", "Headphones";
+
+               masterdai: simple-audio-card,codec {
+                       sound-dai = <&es8388>;
+                       system-clock-frequency = <12288000>;
+               };
+
+               simple-audio-card,cpu {
+                       sound-dai = <&i2s0_8ch>;
+               };
+       };
+
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       hdmi-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi0_out_con>;
+                       };
+               };
+       };
+
+       fan: fan {
+               compatible = "pwm-fan";
+               cooling-levels = <60 100 140 160 185 220 255>;
+               fan-supply = <&vcc12v_dcin>;
+               pwms = <&pwm11 0 50000 1>;
+               #cooling-cells = <2>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_pins>;
+
+               led-0 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "on";
+                       function = LED_FUNCTION_POWER;
+                       gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-1 {
+                       color = <LED_COLOR_ID_BLUE>;
+                       default-state = "off";
+                       gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-2 {
+                       color = <LED_COLOR_ID_RED>;
+                       default-state = "off";
+                       gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       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>;
+       };
+
+       vbus5v0_typec: regulator-vbus5v0-typec {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&typec5v_pwren>;
+               regulator-name = "vbus5v0_typec";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc3v3_pcie20: regulator-vcc3v3-pcie20 {
+               compatible = "regulator-fixed";
+               gpio = <&gpio1 RK_PD7 GPIO_ACTIVE_HIGH>;
+               regulator-name = "vcc3v3_pcie20";
+               enable-active-high;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <5000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_host: regulator-vcc5v0-host {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio1 RK_PB6 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc5v0_host_en>;
+               regulator-name = "vcc5v0_host";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc5v0_sys: regulator-vcc5v0-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_usb: regulator-vcc5v0-usb {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_usb";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+};
+
+&combphy0_ps {
+       status = "okay";
+};
+
+&combphy2_psu {
+       status = "okay";
+};
+
+&cpu_b0 {
+       cpu-supply = <&vdd_cpu_big0_s0>;
+};
+
+&cpu_b1 {
+       cpu-supply = <&vdd_cpu_big0_s0>;
+};
+
+&cpu_b2 {
+       cpu-supply = <&vdd_cpu_big1_s0>;
+};
+
+&cpu_b3 {
+       cpu-supply = <&vdd_cpu_big1_s0>;
+};
+
+&cpu_l0 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l1 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l2 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l3 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&gmac1 {
+       clock_in_out = "output";
+       phy-handle = <&rgmii_phy1>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&gmac1_miim
+                    &gmac1_tx_bus2
+                    &gmac1_rx_bus2
+                    &gmac1_rgmii_clk
+                    &gmac1_rgmii_bus>;
+       status = "okay";
+};
+
+&gpu {
+       mali-supply = <&vdd_gpu_s0>;
+       status = "okay";
+};
+
+&hdmi0 {
+       status = "okay";
+};
+
+&hdmi0_in {
+       hdmi0_in_vp0: endpoint {
+               remote-endpoint = <&vp0_out_hdmi0>;
+       };
+};
+
+&hdmi0_out {
+       hdmi0_out_con: endpoint {
+               remote-endpoint = <&hdmi_con_in>;
+       };
+};
+
+&hdptxphy0 {
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0m2_xfer>;
+       status = "okay";
+
+       vdd_cpu_big0_s0: regulator@42 {
+               compatible = "rockchip,rk8602";
+               reg = <0x42>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_cpu_big0_s0";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <550000>;
+               regulator-max-microvolt = <1050000>;
+               regulator-ramp-delay = <2300>;
+               vin-supply = <&vcc5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       vdd_cpu_big1_s0: regulator@43 {
+               compatible = "rockchip,rk8603", "rockchip,rk8602";
+               reg = <0x43>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_cpu_big1_s0";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <550000>;
+               regulator-max-microvolt = <1050000>;
+               regulator-ramp-delay = <2300>;
+               vin-supply = <&vcc5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2m0_xfer>;
+       status = "okay";
+
+       vdd_npu_s0: regulator@42 {
+               compatible = "rockchip,rk8602";
+               reg = <0x42>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_npu_s0";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <550000>;
+               regulator-max-microvolt = <950000>;
+               regulator-ramp-delay = <2300>;
+               vin-supply = <&vcc5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       hym8563: rtc@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+               clock-output-names = "hym8563";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hym8563_int>;
+       };
+};
+
+&i2c3 {
+       status = "okay";
+
+       es8388: audio-codec@11 {
+               compatible = "everest,es8388", "everest,es8328";
+               reg = <0x11>;
+               clocks = <&cru I2S1_8CH_MCLKOUT>;
+               AVDD-supply = <&vcc_3v3_s0>;
+               DVDD-supply = <&vcc_1v8_s0>;
+               HPVDD-supply = <&vcc_3v3_s0>;
+               PVDD-supply = <&vcc_3v3_s0>;
+               assigned-clocks = <&cru I2S1_8CH_MCLKOUT>;
+               assigned-clock-rates = <12288000>;
+               #sound-dai-cells = <0>;
+       };
+};
+
+&i2s0_8ch {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2s0_lrck
+                    &i2s0_mclk
+                    &i2s0_sclk
+                    &i2s0_sdi0
+                    &i2s0_sdo0>;
+       status = "okay";
+};
+
+&mdio1 {
+       rgmii_phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&rtl8211f_rst>;
+               reset-assert-us = <20000>;
+               reset-deassert-us = <100000>;
+               reset-gpios = <&gpio0 RK_PD3 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&pcie2x1l1 {
+       reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie20>;
+       status = "okay";
+};
+
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
+&pinctrl {
+       hym8563 {
+               hym8563_int: hym8563-int {
+                       rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       headphone {
+               hp_detect: hp-detect {
+                       rockchip,pins = <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       leds {
+               led_pins: led-pins {
+                       rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>,
+                                       <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>,
+                                       <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       rtl8211 {
+               rtl8211f_rst: rtl8211f-rst {
+                       rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       usb {
+               typec5v_pwren: typec5v-pwren {
+                       rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               vcc5v0_host_en: vcc5v0-host-en {
+                       rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm11 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm11m3_pins>;
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcc_1v8_s0>;
+       status = "okay";
+};
+
+&sdhci {
+       bus-width = <8>;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       no-sdio;
+       no-sd;
+       non-removable;
+       status = "okay";
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-sd-highspeed;
+       disable-wp;
+       max-frequency = <150000000>;
+       no-sdio;
+       no-mmc;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_3v3_s3>;
+       vqmmc-supply = <&vccio_sd_s0>;
+       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>;
+               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>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               rk806_dvs1_null: dvs1-null-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs2_null: dvs2-null-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs3_null: dvs3-null-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun0";
+               };
+
+               regulators {
+                       vdd_gpu_s0: dcdc-reg1 {
+                               regulator-name = "vdd_gpu_s0";
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-enable-ramp-delay = <400>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_lit_s0: dcdc-reg2 {
+                               regulator-name = "vdd_cpu_lit_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_log_s0: dcdc-reg3 {
+                               regulator-name = "vdd_log_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-ramp-delay = <12500>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <750000>;
+                               };
+                       };
+
+                       vdd_vdenc_s0: dcdc-reg4 {
+                               regulator-name = "vdd_vdenc_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_ddr_s0: dcdc-reg5 {
+                               regulator-name = "vdd_ddr_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-ramp-delay = <12500>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <850000>;
+                               };
+                       };
+
+                       vcc_1v1_nldo_s3: vdd2_ddr_s3: dcdc-reg6 {
+                               regulator-name = "vdd2_ddr_s3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-min-microvolt = <1100000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_2v0_pldo_s3: dcdc-reg7 {
+                               regulator-name = "vdd_2v0_pldo_s3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2000000>;
+                               regulator-max-microvolt = <2000000>;
+                               regulator-ramp-delay = <12500>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <2000000>;
+                               };
+                       };
+
+                       vcc_3v3_s3: dcdc-reg8 {
+                               regulator-name = "vcc_3v3_s3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vddq_ddr_s0: dcdc-reg9 {
+                               regulator-name = "vddq_ddr_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8_s3: dcdc-reg10 {
+                               regulator-name = "vcc_1v8_s3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       avcc_1v8_s0: pldo-reg1 {
+                               regulator-name = "avcc_1v8_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8_s0: pldo-reg2 {
+                               regulator-name = "vcc_1v8_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       avdd_1v2_s0: pldo-reg3 {
+                               regulator-name = "avdd_1v2_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v3_s0: pldo-reg4 {
+                               regulator-name = "vcc_3v3_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12500>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vccio_sd_s0: pldo-reg5 {
+                               regulator-name = "vccio_sd_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12500>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       pldo6_s3: pldo-reg6 {
+                               regulator-name = "pldo6_s3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vdd_0v75_s3: nldo-reg1 {
+                               regulator-name = "vdd_0v75_s3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <750000>;
+                               };
+                       };
+
+                       vdd_ddr_pll_s0: nldo-reg2 {
+                               regulator-name = "vdd_ddr_pll_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <850000>;
+                               };
+                       };
+
+                       avdd_0v75_s0: nldo-reg3 {
+                               regulator-name = "avdd_0v75_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_0v85_s0: nldo-reg4 {
+                               regulator-name = "vdd_0v85_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_0v75_s0: nldo-reg5 {
+                               regulator-name = "vdd_0v75_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&tsadc {
+       status = "okay";
+};
+
+&u2phy0 {
+       status = "okay";
+};
+
+&u2phy0_otg {
+       status = "okay";
+};
+
+&u2phy2 {
+       status = "okay";
+};
+
+&u2phy3 {
+       status = "okay";
+};
+
+&u2phy2_host {
+       phy-supply = <&vcc5v0_host>;
+       status = "okay";
+};
+
+&u2phy3_host {
+       phy-supply = <&vcc5v0_host>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2m0_xfer>;
+       status = "okay";
+};
+
+&uart7 {
+       pinctrl-0 = <&uart7m2_xfer>;
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&usb_host0_xhci {
+       extcon = <&u2phy0>;
+       status = "okay";
+};
+
+&usb_host1_ehci {
+       status = "okay";
+};
+
+&usb_host1_ohci {
+       status = "okay";
+};
+
+&vop {
+       status = "okay";
+};
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vp0 {
+       vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+               remote-endpoint = <&hdmi0_in_vp0>;
+       };
+};
diff --git a/src/arm64/rockchip/rk8xx.h b/src/arm64/rockchip/rk8xx.h
new file mode 100644 (file)
index 0000000..a6fbef7
--- /dev/null
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: (GPL-2.0-or-later OR MIT) */
+/*
+ * Device Tree defines for Rockchip RK8xx PMICs
+ *
+ * Copyright 2025 Cherry Embedded Solutions GmbH
+ *
+ * Author: Quentin Schulz <quentin.schulz@cherry.de>
+ */
+
+#ifndef _DT_MFD_ROCKCHIP_RK8XX_H
+#define _DT_MFD_ROCKCHIP_RK8XX_H
+
+/* For use with rockchip,reset-mode property */
+#define RK806_RESTART          0
+#define RK806_RESET            1
+#define RK806_RESET_NOTIFY     2
+
+#endif
diff --git a/src/arm64/sophgo/sg2000-milkv-duo-module-01-evb.dts b/src/arm64/sophgo/sg2000-milkv-duo-module-01-evb.dts
new file mode 100644 (file)
index 0000000..a281fee
--- /dev/null
@@ -0,0 +1,76 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+
+#include "sg2000-milkv-duo-module-01.dtsi"
+
+/ {
+       model = "Milk-V Duo Module 01 Evaluation Board";
+       compatible = "milkv,duo-module-01-evb", "milkv,duo-module-01", "sophgo,sg2000";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&pinctrl {
+       sdhci0_cfg: sdhci0-cfg {
+               sdhci0-cd-pins {
+                       pinmux = <PINMUX(PIN_SD0_CD, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <10800>;
+                       power-source = <3300>;
+               };
+
+               sdhci0-clk-pins {
+                       pinmux = <PINMUX(PIN_SD0_CLK, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <16100>;
+                       power-source = <3300>;
+               };
+
+               sdhci0-cmd-pins {
+                       pinmux = <PINMUX(PIN_SD0_CMD, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <10800>;
+                       power-source = <3300>;
+               };
+
+               sdhci0-data-pins {
+                       pinmux = <PINMUX(PIN_SD0_D0, 0)>,
+                                <PINMUX(PIN_SD0_D1, 0)>,
+                                <PINMUX(PIN_SD0_D2, 0)>,
+                                <PINMUX(PIN_SD0_D3, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <10800>;
+                       power-source = <3300>;
+               };
+       };
+
+       uart0_cfg: uart0-cfg {
+               uart0-pins {
+                       pinmux = <PINMUX(PIN_UART0_TX, 0)>,
+                                <PINMUX(PIN_UART0_RX, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <10800>;
+                       power-source = <3300>;
+               };
+       };
+};
+
+&uart0 {
+       pinctrl-0 = <&uart0_cfg>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhci0 {
+       bus-width = <4>;
+       no-1-8-v;
+       no-mmc;
+       no-sdio;
+       disable-wp;
+       pinctrl-0 = <&sdhci0_cfg>;
+       pinctrl-names = "default";
+       status = "okay";
+};
diff --git a/src/arm64/sophgo/sg2000-milkv-duo-module-01.dtsi b/src/arm64/sophgo/sg2000-milkv-duo-module-01.dtsi
new file mode 100644 (file)
index 0000000..32c988f
--- /dev/null
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+#include <dt-bindings/pinctrl/pinctrl-sg2000.h>
+#include "sg2000.dtsi"
+
+/ {
+       model = "Milk-V Duo Module 01";
+       compatible = "milkv,duo-module-01", "sophgo,sg2000";
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               serial4 = &uart4;
+       };
+};
+
+&osc {
+       clock-frequency = <25000000>;
+};
+
+&emmc {
+       bus-width = <4>;
+       no-1-8-v;
+       cap-mmc-hw-reset;
+       no-sd;
+       no-sdio;
+       non-removable;
+       status = "okay";
+};
+
+/* Wi-Fi */
+&sdhci1 {
+       bus-width = <4>;
+       cap-sdio-irq;
+       no-mmc;
+       no-sd;
+       non-removable;
+};
diff --git a/src/arm64/sophgo/sg2000.dtsi b/src/arm64/sophgo/sg2000.dtsi
new file mode 100644 (file)
index 0000000..51177df
--- /dev/null
@@ -0,0 +1,86 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+#define SOC_PERIPHERAL_IRQ(nr)         GIC_SPI (nr)
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <riscv/sophgo/cv180x.dtsi>
+#include <riscv/sophgo/cv181x.dtsi>
+
+/ {
+       compatible = "sophgo,sg2000";
+       interrupt-parent = <&gic>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       compatible = "arm,cortex-a53";
+                       device_type = "cpu";
+                       reg = <0>;
+                       enable-method = "psci";
+                       i-cache-size = <32768>;
+                       d-cache-size = <32768>;
+                       next-level-cache = <&l2>;
+               };
+
+               l2: l2-cache {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x20000>;
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>;  /* 512MiB */
+       };
+
+       pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       psci {
+               compatible = "arm,psci-0.2";
+               method = "smc";
+               cpu_on = <0xc4000003>;
+               cpu_off = <0x84000002>;
+       };
+
+       soc {
+               gic: interrupt-controller@1f01000 {
+                       compatible = "arm,cortex-a15-gic";
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       reg = <0x01f01000 0x1000>,
+                             <0x01f02000 0x2000>;
+               };
+
+               pinctrl: pinctrl@3001000 {
+                       compatible = "sophgo,sg2000-pinctrl";
+                       reg = <0x03001000 0x1000>,
+                             <0x05027000 0x1000>;
+                       reg-names = "sys", "rtc";
+               };
+
+               clk: clock-controller@3002000 {
+                       compatible = "sophgo,sg2000-clk";
+                       reg = <0x03002000 0x1000>;
+                       clocks = <&osc>;
+                       #clock-cells = <1>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-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)>;
+               always-on;
+               clock-frequency = <25000000>;
+       };
+};
index aba90d555f4ee5749f1873206f11dfac46b7817f..5ac9e72478dddb82be0ef7432d7e728932b2f4d6 100644 (file)
                };
        };
 
+       pwm3_pins_a: pwm3-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('B', 15, AF7)>; /* TIM3_CH2 */
+                       bias-pull-down;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       pwm3_sleep_pins_a: pwm3-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('B', 15, ANALOG)>; /* TIM3_CH2 */
+               };
+       };
+
+       pwm8_pins_a: pwm8-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('J', 5, AF8)>, /* TIM8_CH1 */
+                                <STM32_PINMUX('J', 4, AF8)>; /* TIM8_CH4 */
+                       bias-pull-down;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       pwm8_sleep_pins_a: pwm8-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('J', 5, ANALOG)>, /* TIM8_CH1 */
+                                <STM32_PINMUX('J', 4, ANALOG)>; /* TIM8_CH4 */
+               };
+       };
+
+       pwm12_pins_a: pwm12-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('B', 11, AF9)>; /* TIM12_CH2 */
+                       bias-pull-down;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       pwm12_sleep_pins_a: pwm12-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('B', 11, ANALOG)>; /* TIM12_CH2 */
+               };
+       };
+
        sdmmc1_b4_pins_a: sdmmc1-b4-0 {
                pins1 {
                        pinmux = <STM32_PINMUX('E', 4, AF10)>, /* SDMMC1_D0 */
                };
        };
 
+       tim10_counter_pins_a: tim10-counter-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('B', 9, AF9)>; /* TIM10_CH1 */
+                       bias-disable;
+               };
+       };
+
+       tim10_counter_sleep_pins_a: tim10-counter-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('B', 9, ANALOG)>; /* TIM10_CH1 */
+                       bias-disable;
+               };
+       };
+
        usart2_pins_a: usart2-0 {
                pins1 {
                        pinmux = <STM32_PINMUX('A', 4, AF6)>; /* USART2_TX */
index 8d87865850a7a6e8095c36acdef83c8e3a73ae54..303abf915b8e489671b51a8c832041c14a42ecb8 100644 (file)
                             <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;
+               arm,no-tick-in-suspend;
        };
 
        soc@0 {
                        #access-controller-cells = <1>;
                        ranges;
 
+                       timers2: timer@40000000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40000000 0x400>;
+                               interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM2>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 1>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@1 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <1>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers3: timer@40010000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40010000 0x400>;
+                               interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM3>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 2>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@2 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <2>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers4: timer@40020000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40020000 0x400>;
+                               interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM4>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 3>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@3 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <3>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers5: timer@40030000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40030000 0x400>;
+                               interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM5>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 4>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@4 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <4>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers6: timer@40040000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40040000 0x400>;
+                               interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM6>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 5>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               timer@5 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <5>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers7: timer@40050000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40050000 0x400>;
+                               interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM7>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 6>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               timer@6 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <6>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers12: timer@40060000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40060000 0x400>;
+                               interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM12>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 10>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@11 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <11>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers13: timer@40070000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40070000 0x400>;
+                               interrupts = <GIC_SPI 203 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM13>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 11>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@12 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <12>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers14: timer@40080000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40080000 0x400>;
+                               interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM14>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 12>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@13 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <13>;
+                                       status = "disabled";
+                               };
+                       };
+
                        lptimer1: timer@40090000 {
                                compatible = "st,stm32mp25-lptimer", "st,stm32-lptimer";
                                reg = <0x40090000 0x400>;
                                status = "disabled";
                        };
 
+                       timers10: timer@401c0000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x401c0000 0x400>;
+                               interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM10>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 8>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@9 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <9>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers11: timer@401d0000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x401d0000 0x400>;
+                               interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM11>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 9>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@10 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <10>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers1: timer@40200000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40200000 0x400>;
+                               interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "brk", "up", "trg-com", "cc";
+                               clocks = <&rcc CK_KER_TIM1>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 0>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@0 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <0>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers8: timer@40210000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40210000 0x400>;
+                               interrupts = <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>;
+                               interrupt-names = "brk", "up", "trg-com", "cc";
+                               clocks = <&rcc CK_KER_TIM8>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 7>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@7 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <7>;
+                                       status = "disabled";
+                               };
+                       };
+
                        usart6: serial@40220000 {
                                compatible = "st,stm32h7-uart";
                                reg = <0x40220000 0x400>;
                                status = "disabled";
                        };
 
+                       timers15: timer@40250000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40250000 0x400>;
+                               interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM15>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 13>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@14 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <14>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers16: timer@40260000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40260000 0x400>;
+                               interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM16>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 14>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@15 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <15>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       timers17: timer@40270000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40270000 0x400>;
+                               interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "global";
+                               clocks = <&rcc CK_KER_TIM17>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 15>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@16 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <16>;
+                                       status = "disabled";
+                               };
+                       };
+
                        spi5: spi@40280000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                        };
 
+                       timers20: timer@40320000 {
+                               compatible = "st,stm32mp25-timers";
+                               reg = <0x40320000 0x400>;
+                               interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "brk", "up", "trg-com", "cc";
+                               clocks = <&rcc CK_KER_TIM20>;
+                               clock-names = "int";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 16>;
+                               power-domains = <&CLUSTER_PD>;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-timer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer@19 {
+                                       compatible = "st,stm32mp25-timer-trigger";
+                                       reg = <19>;
+                                       status = "disabled";
+                               };
+                       };
+
                        usart1: serial@40330000 {
                                compatible = "st,stm32h7-uart";
                                reg = <0x40330000 0x400>;
                                st,bank-ioport = <11>;
                                status = "disabled";
                        };
-
                };
 
                exti2: interrupt-controller@46230000 {
index 2f561ad4066544445e93db78557bc4be1c27095a..836b1958ce65fb72c99d634a92af3efaf9844d76 100644 (file)
        status = "disabled";
 };
 
+&timers3 {
+       status = "disabled";
+       counter {
+               status = "okay";
+       };
+       pwm {
+               pinctrl-0 = <&pwm3_pins_a>;
+               pinctrl-1 = <&pwm3_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+       timer@2 {
+               status = "okay";
+       };
+};
+
+&timers8 {
+       status = "disabled";
+       counter {
+               status = "okay";
+       };
+       pwm {
+               pinctrl-0 = <&pwm8_pins_a>;
+               pinctrl-1 = <&pwm8_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+       timer@7 {
+               status = "okay";
+       };
+};
+
+&timers10 {
+       status = "disabled";
+       counter {
+               pinctrl-0 = <&tim10_counter_pins_a>;
+               pinctrl-1 = <&tim10_counter_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+};
+
+&timers12 {
+       status = "disabled";
+       counter {
+               status = "okay";
+       };
+       pwm {
+               pinctrl-0 = <&pwm12_pins_a>;
+               pinctrl-1 = <&pwm12_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+       timer@11 {
+               status = "okay";
+       };
+};
+
 &usart2 {
        pinctrl-names = "default", "idle", "sleep";
        pinctrl-0 = <&usart2_pins_a>;
index aafdb90c0eb700b554c6c308be6c1732d0459a8c..4609f366006e4cdf0c162f72634ce90623f60a90 100644 (file)
 };
 
 &main_pmx0 {
+       main_mmc0_pins_default: main-mmc0-default-pins {
+               bootph-all;
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (V3) MMC0_CMD */
+                       AM62X_IOPAD(0x218, PIN_INPUT, 0) /* (Y1) MMC0_CLK */
+                       AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (V2) MMC0_DAT0 */
+                       AM62X_IOPAD(0x210, PIN_INPUT, 0) /* (V1) MMC0_DAT1 */
+                       AM62X_IOPAD(0x20c, PIN_INPUT, 0) /* (W2) MMC0_DAT2 */
+                       AM62X_IOPAD(0x208, PIN_INPUT, 0) /* (W1) MMC0_DAT3 */
+                       AM62X_IOPAD(0x204, PIN_INPUT, 0) /* (Y2) MMC0_DAT4 */
+                       AM62X_IOPAD(0x200, PIN_INPUT, 0) /* (W3) MMC0_DAT5 */
+                       AM62X_IOPAD(0x1fc, PIN_INPUT, 0) /* (W4) MMC0_DAT6 */
+                       AM62X_IOPAD(0x1f8, PIN_INPUT, 0) /* (V4) MMC0_DAT7 */
+               >;
+       };
+
        vddshv_sdio_pins_default: vddshv-sdio-default-pins {
                pinctrl-single,pins = <
                        AM62X_IOPAD(0x07c, PIN_OUTPUT, 7) /* (M19) GPMC0_CLK.GPIO0_31 */
        };
 };
 
+&sdhci0 {
+       bootph-all;
+       non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mmc0_pins_default>;
+       status = "okay";
+};
+
 &sdhci1 {
        vmmc-supply = <&vdd_mmc1>;
        vqmmc-supply = <&vddshv_sdio>;
index 9e0b6eee9ac77d66869915b2d7bec3e2275c03ea..120ba8f9dd0e7e2e8ebefc5ad28b0193e24fb37e 100644 (file)
                clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
                clock-names = "clk_ahb", "clk_xin";
                bus-width = <8>;
-               mmc-ddr-1_8v;
                mmc-hs200-1_8v;
                ti,clkbuf-sel = <0x7>;
                ti,otap-del-sel-legacy = <0x0>;
index 1ea8f64b1b3bd351501f0de32292469cb45d87a3..bc2289d74774575648ca74403b7164e03e6d146f 100644 (file)
        /* Verdin I2C_2_DSI */
        pinctrl_i2c2: main-i2c2-default-pins {
                pinctrl-single,pins = <
-                       AM62X_IOPAD(0x00b0, PIN_INPUT, 1) /* (K22) GPMC0_CSn2.I2C2_SCL */ /* SODIMM 55 */
-                       AM62X_IOPAD(0x00b4, PIN_INPUT, 1) /* (K24) GPMC0_CSn3.I2C2_SDA */ /* SODIMM 53 */
+                       AM62X_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (K22) GPMC0_CSn2.I2C2_SCL */ /* SODIMM 55 */
+                       AM62X_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (K24) GPMC0_CSn3.I2C2_SDA */ /* SODIMM 53 */
                >;
        };
 
        /* Verdin I2C_4_CSI */
        pinctrl_i2c3: main-i2c3-default-pins {
                pinctrl-single,pins = <
-                       AM62X_IOPAD(0x01d0, PIN_INPUT, 2) /* (A15) UART0_CTSn.I2C3_SCL */ /* SODIMM 95 */
-                       AM62X_IOPAD(0x01d4, PIN_INPUT, 2) /* (B15) UART0_RTSn.I2C3_SDA */ /* SODIMM 93 */
+                       AM62X_IOPAD(0x01d0, PIN_INPUT_PULLUP, 2) /* (A15) UART0_CTSn.I2C3_SCL */ /* SODIMM 95 */
+                       AM62X_IOPAD(0x01d4, PIN_INPUT_PULLUP, 2) /* (B15) UART0_RTSn.I2C3_SDA */ /* SODIMM 93 */
                >;
        };
 
        /* Verdin I2C_3_HDMI */
        pinctrl_mcu_i2c0: mcu-i2c0-default-pins {
                pinctrl-single,pins = <
-                       AM62X_MCU_IOPAD(0x0044, PIN_INPUT, 0) /*  (A8) MCU_I2C0_SCL */ /* SODIMM 59 */
-                       AM62X_MCU_IOPAD(0x0048, PIN_INPUT, 0) /* (D10) MCU_I2C0_SDA */ /* SODIMM 57 */
+                       AM62X_MCU_IOPAD(0x0044, PIN_INPUT_PULLUP, 0) /*  (A8) MCU_I2C0_SCL */ /* SODIMM 59 */
+                       AM62X_MCU_IOPAD(0x0048, PIN_INPUT_PULLUP, 0) /* (D10) MCU_I2C0_SDA */ /* SODIMM 57 */
                >;
        };
 
index 2fbfa371934575efc4e9118a705f062bdea55f4f..d240165bda9c57b01772feb57f14f209bbcc5668 100644 (file)
 };
 
 &main_pmx0 {
+       main_mmc0_pins_default: main-mmc0-default-pins {
+               bootph-all;
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3) MMC0_CMD */
+                       AM62X_IOPAD(0x218, PIN_INPUT, 0) /* (AB1) MMC0_CLK */
+                       AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2) MMC0_DAT0 */
+                       AM62X_IOPAD(0x210, PIN_INPUT_PULLUP, 0) /* (AA1) MMC0_DAT1 */
+                       AM62X_IOPAD(0x20c, PIN_INPUT_PULLUP, 0) /* (AA3) MMC0_DAT2 */
+                       AM62X_IOPAD(0x208, PIN_INPUT_PULLUP, 0) /* (Y4) MMC0_DAT3 */
+                       AM62X_IOPAD(0x204, PIN_INPUT_PULLUP, 0) /* (AB2) MMC0_DAT4 */
+                       AM62X_IOPAD(0x200, PIN_INPUT_PULLUP, 0) /* (AC1) MMC0_DAT5 */
+                       AM62X_IOPAD(0x1fc, PIN_INPUT_PULLUP, 0) /* (AD2) MMC0_DAT6 */
+                       AM62X_IOPAD(0x1f8, PIN_INPUT_PULLUP, 0) /* (AC2) MMC0_DAT7 */
+               >;
+       };
+
        main_rgmii2_pins_default: main-rgmii2-default-pins {
                bootph-all;
                pinctrl-single,pins = <
        };
 };
 
+&sdhci0 {
+       bootph-all;
+       non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mmc0_pins_default>;
+       status = "okay";
+};
+
 &sdhci1 {
        vmmc-supply = <&vdd_mmc1>;
        vqmmc-supply = <&vdd_sd_dv>;
index 63e097ddf988cabc93c7fad08485e990e742ca92..44e7e459f1769ea85356eaa7f61f43d0fc0ec7fe 100644 (file)
@@ -51,6 +51,7 @@
                        compatible = "ti,am654-phy-gmii-sel";
                        reg = <0x4044 0x8>;
                        #phy-cells = <1>;
+                       bootph-all;
                };
 
                epwm_tbclk: clock-controller@4130 {
@@ -96,6 +97,7 @@
                        #mbox-cells = <1>;
                        interrupt-names = "rx_012";
                        interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+                       bootph-all;
                };
 
                inta_main_dmss: interrupt-controller@48000000 {
                        ti,sci-rm-range-bchan = <0x20>; /* BLOCK_COPY_CHAN */
                        ti,sci-rm-range-rchan = <0x21>; /* SPLIT_TR_RX_CHAN */
                        ti,sci-rm-range-tchan = <0x22>; /* SPLIT_TR_TX_CHAN */
+                       bootph-all;
                };
 
                main_pktdma: dma-controller@485c0000 {
                                    "ring", "tchan", "rchan", "rflow";
                        msi-parent = <&inta_main_dmss>;
                        #dma-cells = <2>;
+                       bootph-all;
+
                        ti,sci = <&dmsc>;
                        ti,sci-dev-id = <30>;
                        ti,sci-rm-range-tchan = <0x23>, /* UNMAPPED_TX_CHAN */
                k3_pds: power-controller {
                        compatible = "ti,sci-pm-domain";
                        #power-domain-cells = <2>;
+                       bootph-all;
                };
 
                k3_clks: clock-controller {
                        compatible = "ti,k2g-sci-clk";
                        #clock-cells = <2>;
+                       bootph-all;
                };
 
                k3_reset: reset-controller {
                        compatible = "ti,sci-reset";
                        #reset-cells = <2>;
+                       bootph-all;
                };
        };
 
                 * firmware on non-MPU processors
                 */
                status = "disabled";
+               bootph-all;
        };
 
        main_pmx0: pinctrl@f4000 {
                assigned-clock-parents = <&k3_clks 36 3>;
                power-domains = <&k3_pds 36 TI_SCI_PD_EXCLUSIVE>;
                ti,timer-pwm;
+               bootph-all;
        };
 
        main_timer1: timer@2410000 {
                        interrupt-names = "host", "peripheral";
                        maximum-speed = "high-speed";
                        dr_mode = "otg";
+                       bootph-all;
                        snps,usb2-gadget-lpm-disable;
                        snps,usb2-lpm-disable;
                };
                                phys = <&phy_gmii_sel 1>;
                                mac-address = [00 00 00 00 00 00];
                                ti,syscon-efuse = <&cpsw_mac_syscon 0x0>;
+                               bootph-all;
                        };
 
                        cpsw_port2: port@2 {
                        clocks = <&k3_clks 13 0>;
                        clock-names = "fck";
                        bus_freq = <1000000>;
+                       bootph-all;
                };
 
                cpts@3d000 {
index 259ae6ebbfb5ac5f83cc2c159c779ecaf9f96dcf..9ef1c829a9df555d3694d063d149342d1a50fc9d 100644 (file)
@@ -17,6 +17,7 @@
                chipid: chipid@14 {
                        compatible = "ti,am654-chipid";
                        reg = <0x14 0x4>;
+                       bootph-all;
                };
 
                opp_efuse_table: syscon@18 {
@@ -67,6 +68,7 @@
                        reg = <0 0x100>;
                        interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
+                       bootph-pre-ram;
               };
        };
 
index b2775902601495cf95d5146265516bce6c1727db..bceead5e288e6d78c671baf0afabd1a9aa23fbee 100644 (file)
@@ -36,6 +36,7 @@
                /* 4G RAM */
                reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
                      <0x00000008 0x80000000 0x00000000 0x80000000>;
+               bootph-all;
        };
 
        reserved-memory {
                regulator-boot-on;
                enable-active-high;
                gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
+               bootph-all;
        };
 
        vcc_3v3_sys: regulator-4 {
                        AM62AX_IOPAD(0x1c8, PIN_INPUT, 0) /* (E14) UART0_RXD */
                        AM62AX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */
                >;
+               bootph-all;
        };
 
        main_uart1_pins_default: main-uart1-default-pins {
                pinctrl-single,pins = <
-                       AM62AX_IOPAD(0x01e8, PIN_INPUT, 1) /* (C17) I2C1_SCL.UART1_RXD */
-                       AM62AX_IOPAD(0x01ec, PIN_OUTPUT, 1) /* (E17) I2C1_SDA.UART1_TXD */
+                       AM62AX_IOPAD(0x01ac, PIN_INPUT, 2) /* (B21) MCASP0_AFSR.UART1_RXD */
+                       AM62AX_IOPAD(0x01b0, PIN_OUTPUT, 2) /* (A21) MCASP0_ACLKR.UART1_TXD */
                        AM62AX_IOPAD(0x0194, PIN_INPUT, 2) /* (C19) MCASP0_AXR3.UART1_CTSn */
                        AM62AX_IOPAD(0x0198, PIN_OUTPUT, 2) /* (B19) MCASP0_AXR2.UART1_RTSn */
                >;
                        AM62AX_IOPAD(0x1e8, PIN_INPUT_PULLUP, 0) /* (B17) I2C1_SCL */
                        AM62AX_IOPAD(0x1ec, PIN_INPUT_PULLUP, 0) /* (A17) I2C1_SDA */
                >;
+               bootph-all;
        };
 
        main_i2c2_pins_default: main-i2c2-default-pins {
                        AM62AX_IOPAD(0x224, PIN_INPUT, 0) /* (D22) MMC1_DAT3 */
                        AM62AX_IOPAD(0x240, PIN_INPUT, 0) /* (D17) MMC1_SDCD */
                >;
+               bootph-all;
        };
 
        usr_led_pins_default: usr-led-default-pins {
                        AM62AX_IOPAD(0x160, PIN_OUTPUT, 0) /* (V12) MDIO0_MDC */
                        AM62AX_IOPAD(0x15c, PIN_INPUT, 0) /* (V13) MDIO0_MDIO */
                >;
+               bootph-all;
        };
 
        main_rgmii1_pins_default: main-rgmii1-default-pins {
                        AM62AX_IOPAD(0x130, PIN_INPUT, 0) /* (AB17) RGMII1_TXC */
                        AM62AX_IOPAD(0x12c, PIN_INPUT, 0) /* (W16) RGMII1_TX_CTL */
                >;
+               bootph-all;
        };
 
        main_mcasp1_pins_default: main-mcasp1-default-pins {
                #interrupt-cells = <2>;
                pinctrl-names = "default";
                pinctrl-0 = <&main_gpio1_ioexp_intr_pins_default>;
+               bootph-all;
 
                gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
                                   "BT_EN_SOC", "MMC1_SD_EN",
        pinctrl-names = "default";
        pinctrl-0 = <&main_mmc1_pins_default>;
        disable-wp;
+       bootph-all;
 };
 
 &main_gpio0 {
        status = "okay";
+       bootph-all;
 };
 
 &main_gpio1 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_uart0_pins_default>;
+       bootph-all;
 };
 
 /* Main UART1 is used for TIFS firmware logs */
        pinctrl-0 = <&main_rgmii1_pins_default>;
 };
 
+&phy_gmii_sel {
+       bootph-all;
+};
+
 &cpsw_port1 {
        status = "okay";
        phy-mode = "rgmii-rxid";
        phy-handle = <&cpsw3g_phy0>;
+       bootph-all;
 };
 
 &cpsw_port2 {
                ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
                ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
                ti,min-output-impedance;
+               bootph-all;
        };
 };
 
 &main_rti4 {
        status = "reserved";
 };
+
+&fss {
+       status = "okay";
+};
+
+&ospi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&ospi0_pins_default>;
+
+       flash@0 {
+               compatible = "spi-nand";
+               reg = <0>;
+               spi-tx-bus-width = <8>;
+               spi-rx-bus-width = <8>;
+               spi-max-frequency = <25000000>;
+               cdns,tshsl-ns = <60>;
+               cdns,tsd2d-ns = <60>;
+               cdns,tchsh-ns = <60>;
+               cdns,tslch-ns = <60>;
+               cdns,read-delay = <2>;
+               bootph-all;
+       };
+};
+
+&main_pmx0 {
+       ospi0_pins_default: ospi0-default-pins {
+               bootph-all;
+               pinctrl-single,pins = <
+                       AM62AX_IOPAD(0x000, PIN_OUTPUT, 0) /* (H24) OSPI0_CLK */
+                       AM62AX_IOPAD(0x02c, PIN_OUTPUT, 0) /* (F23) OSPI0_CSn0 */
+                       AM62AX_IOPAD(0x00c, PIN_INPUT, 0) /* (E25) OSPI0_D0 */
+                       AM62AX_IOPAD(0x010, PIN_INPUT, 0) /* (G24) OSPI0_D1 */
+                       AM62AX_IOPAD(0x014, PIN_INPUT, 0) /* (F25) OSPI0_D2 */
+                       AM62AX_IOPAD(0x018, PIN_INPUT, 0) /* (F24) OSPI0_D3 */
+                       AM62AX_IOPAD(0x01c, PIN_INPUT, 0) /* (J23) OSPI0_D4 */
+                       AM62AX_IOPAD(0x020, PIN_INPUT, 0) /* (J25) OSPI0_D5 */
+                       AM62AX_IOPAD(0x024, PIN_INPUT, 0) /* (H25) OSPI0_D6 */
+                       AM62AX_IOPAD(0x028, PIN_INPUT, 0) /* (J22) OSPI0_D7 */
+                       AM62AX_IOPAD(0x008, PIN_INPUT, 0) /* (J24) OSPI0_DQS */
+               >;
+       };
+};
diff --git a/src/arm64/ti/k3-am62d2-evm.dts b/src/arm64/ti/k3-am62d2-evm.dts
new file mode 100644 (file)
index 0000000..daea18b
--- /dev/null
@@ -0,0 +1,615 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * AM62D2 EVM: https://www.ti.com/lit/zip/sprcal5
+ *
+ * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/net/ti-dp83867.h>
+#include "k3-am62d2.dtsi"
+
+/ {
+       compatible = "ti,am62d2-evm", "ti,am62d2";
+       model = "Texas Instruments AM62D2 EVM";
+
+       aliases {
+               serial0 = &wkup_uart0;
+               serial1 = &mcu_uart0;
+               serial2 = &main_uart0;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
+               rtc0 = &wkup_rtc0;
+               ethernet0 = &cpsw_port1;
+               ethernet1 = &cpsw_port2;
+       };
+
+       chosen {
+               stdout-path = &main_uart0;
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               /* 4G RAM */
+               reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
+                     <0x00000008 0x80000000 0x00000000 0x80000000>;
+               bootph-all;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /* global cma region */
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0x00 0x2000000>;
+                       alloc-ranges = <0x00 0xc0000000 0x00 0x2000000>;
+                       linux,cma-default;
+               };
+
+               secure_tfa_ddr: tfa@80000000 {
+                       reg = <0x00 0x80000000 0x00 0x80000>;
+                       no-map;
+               };
+
+               c7x_0_dma_memory_region: c7x-dma-memory@99800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x99800000 0x00 0x100000>;
+                       no-map;
+               };
+
+               c7x_0_memory_region: c7x-memory@99900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x99900000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@9b800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9b800000 0x00 0x100000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_memory_region: r5f-dma-memory@9b900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9b900000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9c800000 0x00 0x100000>;
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9c900000 0x00 0xf00000>;
+                       no-map;
+                       bootph-pre-ram;
+               };
+
+               secure_ddr: optee@9e800000 {
+                       reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
+                       no-map;
+               };
+
+               rtos_ipc_memory_region: ipc-memories@a0000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa0000000 0x00 0x01000000>;
+                       no-map;
+               };
+       };
+
+       opp-table {
+               /* Requires VDD_CORE at 0v85 */
+               opp-1400000000 {
+                       opp-hz = /bits/ 64 <1400000000>;
+                       opp-supported-hw = <0x01 0x0004>;
+                       clock-latency-ns = <6000000>;
+               };
+       };
+
+       vout_pd: regulator-0 {
+               /* TPS65988 PD CONTROLLER OUTPUT */
+               compatible = "regulator-fixed";
+               regulator-name = "vout_pd";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               bootph-all;
+       };
+
+       vmain_pd: regulator-1 {
+               /* Output of TPS22811 */
+               compatible = "regulator-fixed";
+               regulator-name = "vmain_pd";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vout_pd>;
+               regulator-always-on;
+               regulator-boot-on;
+               bootph-all;
+       };
+
+       vcc_5v0: regulator-2 {
+               /* Output of TPS630702RNMR */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vmain_pd>;
+               regulator-always-on;
+               regulator-boot-on;
+               bootph-all;
+       };
+
+       vcc_3v3_main: regulator-3 {
+               /* output of LM5141-Q1 */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_3v3_main";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vmain_pd>;
+               regulator-always-on;
+               regulator-boot-on;
+               bootph-all;
+       };
+
+       vdd_mmc1: regulator-4 {
+               /* TPS22918DBVR */
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_mmc1";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               enable-active-high;
+               gpio = <&exp1 3 GPIO_ACTIVE_HIGH>;
+               bootph-all;
+       };
+
+       vcc_3v3_sys: regulator-5 {
+               /* output of TPS222965DSGT */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_3v3_sys";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_3v3_main>;
+               regulator-always-on;
+               regulator-boot-on;
+               bootph-all;
+       };
+
+       vddshv_sdio: regulator-6 {
+               compatible = "regulator-gpio";
+               regulator-name = "vddshv_sdio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&vddshv_sdio_pins_default>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               gpios = <&main_gpio1 31 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x0>,
+                        <3300000 0x1>;
+               bootph-all;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&usr_led_pins_default>;
+
+               led-0 {
+                       label = "am62d-evm:green:heartbeat";
+                       gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+                       function = LED_FUNCTION_HEARTBEAT;
+                       default-state = "off";
+               };
+       };
+};
+
+&mcu_pmx0 {
+       status = "okay";
+
+       pmic_irq_pins_default: pmic-irq-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_MCU_IOPAD(0x000, PIN_INPUT, 7) /* (E11) MCU_GPIO0_0 */
+               >;
+       };
+
+       wkup_uart0_pins_default: wkup-uart0-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_MCU_IOPAD(0x0024, PIN_INPUT, 0) /* (C9) WKUP_UART0_RXD */
+                       AM62DX_MCU_IOPAD(0x0028, PIN_OUTPUT, 0) /* (E9) WKUP_UART0_TXD */
+                       AM62DX_MCU_IOPAD(0x002c, PIN_INPUT, 0) /* (C10) WKUP_UART0_CTSn */
+                       AM62DX_MCU_IOPAD(0x0030, PIN_OUTPUT, 0) /* (C8) WKUP_UART0_RTSn */
+               >;
+               bootph-all;
+       };
+};
+
+/* WKUP UART0 is used for DM firmware logs */
+&wkup_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&wkup_uart0_pins_default>;
+       bootph-all;
+       status = "reserved";
+};
+
+&main_pmx0 {
+       main_uart0_pins_default: main-uart0-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x01c8, PIN_INPUT, 0) /* (E14) UART0_RXD */
+                       AM62DX_IOPAD(0x01cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */
+               >;
+               bootph-all;
+       };
+
+       main_i2c0_pins_default: main-i2c0-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (D17) I2C0_SCL */
+                       AM62DX_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (E16) I2C0_SDA */
+               >;
+               bootph-all;
+       };
+
+       main_i2c1_pins_default: main-i2c1-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x01e8, PIN_INPUT_PULLUP, 0) /* (C17) I2C1_SCL */
+                       AM62DX_IOPAD(0x01ec, PIN_INPUT_PULLUP, 0) /* (E17) I2C1_SDA */
+               >;
+               bootph-all;
+       };
+
+       main_i2c2_pins_default: main-i2c2-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (M22) GPMC0_CSn2.I2C2_SCL */
+                       AM62DX_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (M20) GPMC0_CSn3.I2C2_SDA */
+               >;
+       };
+
+       main_mmc0_pins_default: main-mmc0-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x0220, PIN_INPUT_PULLUP, 0) /* (Y6) MMC0_CMD */
+                       AM62DX_IOPAD(0x0218, PIN_OUTPUT, 0) /* (AB7) MMC0_CLK */
+                       AM62DX_IOPAD(0x0214, PIN_INPUT_PULLUP, 0) /* (AA6) MMC0_DAT0 */
+                       AM62DX_IOPAD(0x0210, PIN_INPUT_PULLUP, 0) /* (AB6) MMC0_DAT1 */
+                       AM62DX_IOPAD(0x020c, PIN_INPUT_PULLUP, 0) /* (Y7) MMC0_DAT2 */
+                       AM62DX_IOPAD(0x0208, PIN_INPUT_PULLUP, 0) /* (AA7) MMC0_DAT3 */
+                       AM62DX_IOPAD(0x0204, PIN_INPUT_PULLUP, 0) /* (Y8) MMC0_DAT4 */
+                       AM62DX_IOPAD(0x0200, PIN_INPUT_PULLUP, 0) /* (W7) MMC0_DAT5 */
+                       AM62DX_IOPAD(0x01fc, PIN_INPUT_PULLUP, 0) /* (W9) MMC0_DAT6 */
+                       AM62DX_IOPAD(0x01f8, PIN_INPUT_PULLUP, 0) /* (AB8) MMC0_DAT7 */
+               >;
+               bootph-all;
+       };
+
+       main_mmc1_pins_default: main-mmc1-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x023c, PIN_INPUT, 0) /* (C21) MMC1_CMD */
+                       AM62DX_IOPAD(0x0234, PIN_OUTPUT, 0) /* (E22) MMC1_CLK */
+                       AM62DX_IOPAD(0x0230, PIN_INPUT, 0) /* (B22) MMC1_DAT0 */
+                       AM62DX_IOPAD(0x022c, PIN_INPUT, 0) /* (D21) MMC1_DAT1 */
+                       AM62DX_IOPAD(0x0228, PIN_INPUT, 0) /* (C22) MMC1_DAT2 */
+                       AM62DX_IOPAD(0x0224, PIN_INPUT, 0) /* (D22) MMC1_DAT3 */
+                       AM62DX_IOPAD(0x0240, PIN_INPUT, 0) /* (E18) MMC1_SDCD */
+               >;
+               bootph-all;
+       };
+
+       main_mdio0_pins_default: main-mdio0-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x160, PIN_OUTPUT, 0) /* (V12) MDIO0_MDC */
+                       AM62DX_IOPAD(0x15c, PIN_INPUT, 0) /* (V13) MDIO0_MDIO */
+               >;
+               bootph-all;
+       };
+
+       main_rgmii1_pins_default: main-rgmii1-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x14c, PIN_INPUT, 0) /* (AB16) RGMII1_RD0 */
+                       AM62DX_IOPAD(0x150, PIN_INPUT, 0) /* (V15) RGMII1_RD1 */
+                       AM62DX_IOPAD(0x154, PIN_INPUT, 0) /* (W15) RGMII1_RD2 */
+                       AM62DX_IOPAD(0x158, PIN_INPUT, 0) /* (V14) RGMII1_RD3 */
+                       AM62DX_IOPAD(0x148, PIN_INPUT, 0) /* (AA16) RGMII1_RXC */
+                       AM62DX_IOPAD(0x144, PIN_INPUT, 0) /* (AA15) RGMII1_RX_CTL */
+                       AM62DX_IOPAD(0x134, PIN_INPUT, 0) /* (Y17) RGMII1_TD0 */
+                       AM62DX_IOPAD(0x138, PIN_INPUT, 0) /* (V16) RGMII1_TD1 */
+                       AM62DX_IOPAD(0x13c, PIN_INPUT, 0) /* (Y16) RGMII1_TD2 */
+                       AM62DX_IOPAD(0x140, PIN_INPUT, 0) /* (AA17) RGMII1_TD3 */
+                       AM62DX_IOPAD(0x0130, PIN_OUTPUT, 0) /* (AB17) RGMII1_TXC */
+                       AM62DX_IOPAD(0x012c, PIN_OUTPUT, 0) /* (W16) RGMII1_TX_CTL */
+               >;
+               bootph-all;
+       };
+
+       main_rgmii2_pins_default: main-rgmii2-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x0184, PIN_INPUT, 0) /* (AA21) RGMII2_RD0 */
+                       AM62DX_IOPAD(0x0188, PIN_INPUT, 0) /* (Y20) RGMII2_RD1 */
+                       AM62DX_IOPAD(0x018c, PIN_INPUT, 0) /* (AB21) RGMII2_RD2 */
+                       AM62DX_IOPAD(0x0190, PIN_INPUT, 0) /* (AB20) RGMII2_RD3 */
+                       AM62DX_IOPAD(0x0180, PIN_INPUT, 0) /* (AA20) RGMII2_RXC */
+                       AM62DX_IOPAD(0x017c, PIN_INPUT, 0) /* (W18) RGMII2_RX_CTL */
+                       AM62DX_IOPAD(0x016c, PIN_INPUT, 0) /* (AA19) RGMII2_TD0 */
+                       AM62DX_IOPAD(0x0170, PIN_INPUT, 0) /* (Y18) RGMII2_TD1 */
+                       AM62DX_IOPAD(0x0174, PIN_INPUT, 0) /* (AA18) RGMII2_TD2 */
+                       AM62DX_IOPAD(0x0178, PIN_INPUT, 0) /* (W17) RGMII2_TD3 */
+                       AM62DX_IOPAD(0x0168, PIN_OUTPUT, 0) /* (AB19) RGMII2_TXC */
+                       AM62DX_IOPAD(0x0164, PIN_OUTPUT, 0) /* (Y19) RGMII2_TX_CTL */
+               >;
+               bootph-all;
+       };
+
+       main_gpio1_ioexp_intr_pins_default: main-gpio1-ioexp-intr-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x01d4, PIN_INPUT, 7) /* (C15) UART0_RTSn.GPIO1_23 */
+               >;
+       };
+
+       vddshv_sdio_pins_default: vddshv-sdio-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x1f4, PIN_OUTPUT, 7) /* (M19) GPMC0_CLK.GPIO1_31 */
+               >;
+               bootph-all;
+       };
+
+       usr_led_pins_default: usr-led-default-pins {
+               pinctrl-single,pins = <
+                       AM62DX_IOPAD(0x0244, PIN_INPUT, 7) /* (D18) MMC1_SDWP.GPIO1_49 */
+               >;
+       };
+};
+
+&mcu_gpio0 {
+       status = "okay";
+};
+
+&main_i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c0_pins_default>;
+       clock-frequency = <400000>;
+       bootph-all;
+       status = "okay";
+
+       typec_pd0: usb-power-controller@3f {
+               compatible = "ti,tps6598x";
+               reg = <0x3f>;
+
+               connector {
+                       compatible = "usb-c-connector";
+                       label = "USB-C";
+                       self-powered;
+                       data-role = "dual";
+                       power-role = "sink";
+                       port {
+                               usb_con_hs: endpoint {
+                                       remote-endpoint = <&usb0_hs_ep>;
+                               };
+                       };
+               };
+       };
+
+       exp1: gpio@22 {
+               compatible = "ti,tca6424";
+               reg = <0x22>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&main_gpio1>;
+               interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&main_gpio1_ioexp_intr_pins_default>;
+               bootph-all;
+
+               gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST",
+                                 "","MMC1_SD_EN",
+                                 "VPP_EN", "GPIO_DIX_RST",
+                                 "IO_EXP_OPT_EN", "DIX_INT",
+                                 "GPIO_eMMC_RSTn", "CPLD2_DONE",
+                                 "CPLD2_INTN", "CPLD1_DONE",
+                                 "CPLD1_INTN", "USB_TYPEA_OC_INDICATION",
+                                 "PCM1_INT", "PCM2_INT",
+                                 "GPIO_PCM1_RST", "TEST_GPIO2",
+                                 "GPIO_PCM2_RST", "",
+                                 "IO_MCAN0_STB", "IO_MCAN1_STB",
+                                 "PD_I2C_IRQ", "IO_EXP_TEST_LED";
+       };
+
+       exp2: gpio@20 {
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               gpio-line-names = "PCM6240_BUF_IO_EN", "",
+                                 "CPLD1_JTAGENB", "CPLD1_PROGRAMN",
+                                 "CPLD2_JTAGENB", "CPLD2_PROGRAMN",
+                                 "", "",
+                                 "", "CPLD1_TCK",
+                                 "CPLD1_TMS", "CPLD1_TDI",
+                                 "CPLD1_TDO", "CPLD2_TCK",
+                                 "CPLD2_TMS", "CPLD2_TDI",
+                                 "CPLD2_TDO", "ADDR1_IO_EXP",
+                                 "SoC_I2C0_SCL", "SoC_I2C0_SDA";
+       };
+};
+
+&main_i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c1_pins_default>;
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+&main_i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c2_pins_default>;
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&sdhci0 {
+       /* eMMC */
+       non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mmc0_pins_default>;
+       bootph-all;
+       status = "okay";
+};
+
+&sdhci1 {
+       /* SD/MMC */
+       vmmc-supply = <&vdd_mmc1>;
+       vqmmc-supply = <&vddshv_sdio>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mmc1_pins_default>;
+       disable-wp;
+       bootph-all;
+       status = "okay";
+};
+
+&main_gpio0 {
+       bootph-all;
+       status = "okay";
+};
+
+&main_gpio1 {
+       bootph-all;
+       status = "okay";
+};
+
+&main_gpio_intr {
+       status = "okay";
+};
+
+&main_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart0_pins_default>;
+       bootph-all;
+       status = "okay";
+};
+
+&usb0 {
+       usb-role-switch;
+
+       port {
+               usb0_hs_ep: endpoint {
+                       remote-endpoint = <&usb_con_hs>;
+               };
+       };
+};
+
+&cpsw3g {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_rgmii1_pins_default>,
+                   <&main_rgmii2_pins_default>;
+       status = "okay";
+
+       cpts@3d000 {
+               /* MAP HW3_TS_PUSH to GENF1 */
+               ti,pps = <2 1>;
+       };
+};
+
+&cpsw_port1 {
+       phy-mode = "rgmii-id";
+       phy-handle = <&cpsw3g_phy0>;
+       status = "okay";
+};
+
+&cpsw_port2 {
+       phy-mode = "rgmii-id";
+       phy-handle = <&cpsw3g_phy1>;
+       status = "okay";
+};
+
+&cpsw3g_mdio {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mdio0_pins_default>;
+       status = "okay";
+
+       cpsw3g_phy0: ethernet-phy@0 {
+               reg = <0>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               ti,min-output-impedance;
+       };
+
+       cpsw3g_phy1: ethernet-phy@3 {
+               reg = <3>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               ti,min-output-impedance;
+       };
+};
+
+&mailbox0_cluster0 {
+       status = "okay";
+
+       mbox_r5_0: mbox-r5-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&mailbox0_cluster1 {
+       status = "okay";
+
+       mbox_c7x_0: mbox-c7x-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&mailbox0_cluster2 {
+       status = "okay";
+
+       mbox_mcu_r5_0: mbox-mcu-r5-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&wkup_r5fss0 {
+       status = "okay";
+};
+
+&wkup_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster0 &mbox_r5_0>;
+       memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
+                       <&wkup_r5fss0_core0_memory_region>;
+       bootph-pre-ram;
+};
+
+&mcu_r5fss0 {
+       status = "okay";
+};
+
+&mcu_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster2 &mbox_mcu_r5_0>;
+       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+                       <&mcu_r5fss0_core0_memory_region>;
+       firmware-name = "am62d-mcu-r5f0_0-fw";
+       status = "okay";
+};
+
+&c7x_0 {
+       mboxes = <&mailbox0_cluster1 &mbox_c7x_0>;
+       memory-region = <&c7x_0_dma_memory_region>,
+                       <&c7x_0_memory_region>;
+       firmware-name = "am62d-c71_0-fw";
+       status = "okay";
+};
+
+/* main_rti4 is used by C7x DSP */
+&main_rti4 {
+       status = "reserved";
+};
diff --git a/src/arm64/ti/k3-am62d2.dtsi b/src/arm64/ti/k3-am62d2.dtsi
new file mode 100644 (file)
index 0000000..c7d8ab4
--- /dev/null
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * Device Tree Source for AM62D2 SoC family in Quad core configuration
+ *
+ * TRM: https://www.ti.com/lit/pdf/sprujd4
+ *
+ * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+/dts-v1/;
+
+#include "k3-am62a7.dtsi"
+
+/ {
+       model = "Texas Instruments K3 AM62D SoC";
+       compatible = "ti,am62d2";
+};
+
+/delete-node/ &vpu;   /* Video Codec is disabled in AM62D2 SoC */
+/delete-node/ &e5010; /* JPEG Encoder is disabled in AM62D2 SoC */
index fa55c43ca28dc87de40ef6ab15c7e90881ac8927..2e5e25a8ca868d535a236f4bf3738d802d42d395 100644 (file)
 
        main_pmx0: pinctrl@f4000 {
                compatible = "pinctrl-single";
-               reg = <0x00 0xf4000 0x00 0x2ac>;
+               reg = <0x00 0xf4000 0x00 0x2b0>;
                #pinctrl-cells = <1>;
                pinctrl-single,register-width = <32>;
                pinctrl-single,function-mask = <0xffffffff>;
index c7486fb2a5b45cfa2bd7798eb4746ad2af8c390a..138b9c395be4bf7bd6c1941d752871af8cc9b1b6 100644 (file)
@@ -12,12 +12,29 @@ thermal_zones: thermal-zones {
                thermal-sensors = <&wkup_vtm0 0>;
 
                trips {
+                       main0_alert: main0-alert {
+                               temperature = <115000>;
+                               hysteresis = <2000>;
+                               type = "passive";
+                       };
+
                        main0_crit: main0-crit {
                                temperature = <125000>; /* milliCelsius */
                                hysteresis = <2000>;    /* milliCelsius */
                                type = "critical";
                        };
                };
+
+               cooling-maps {
+                       map0 {
+                               trip = <&main0_alert>;
+                               cooling-device =
+                                       <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                       };
+               };
        };
 
        main1_thermal: main1-thermal {
@@ -26,12 +43,29 @@ thermal_zones: thermal-zones {
                thermal-sensors = <&wkup_vtm0 1>;
 
                trips {
+                       main1_alert: main1-alert {
+                               temperature = <115000>;
+                               hysteresis = <2000>;
+                               type = "passive";
+                       };
+
                        main1_crit: main1-crit {
                                temperature = <125000>; /* milliCelsius */
                                hysteresis = <2000>;    /* milliCelsius */
                                type = "critical";
                        };
                };
+
+               cooling-maps {
+                       map0 {
+                               trip = <&main1_alert>;
+                               cooling-device =
+                                       <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                       };
+               };
        };
 
        main2_thermal: main2-thermal {
@@ -40,11 +74,28 @@ thermal_zones: thermal-zones {
               thermal-sensors = <&wkup_vtm0 2>;
 
                trips {
+                       main2_alert: main2-alert {
+                               temperature = <115000>;
+                               hysteresis = <2000>;
+                               type = "passive";
+                       };
+
                        main2_crit: main2-crit {
                                temperature = <125000>; /* milliCelsius */
                                hysteresis = <2000>;    /* milliCelsius */
                                type = "critical";
                        };
                };
+
+               cooling-maps {
+                       map0 {
+                               trip = <&main2_alert>;
+                               cooling-device =
+                                       <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                       };
+               };
        };
 };
index 226398c37fa9b348b8ea30e1e21f75e98bd3d60b..a2fdc6741da2cd8846ab8d7dd4bd44a15dc372e8 100644 (file)
        /* Verdin PWM_3_DSI as GPIO */
        pinctrl_pwm3_dsi_gpio: main-gpio1-16-default-pins {
                pinctrl-single,pins = <
-                       AM62PX_IOPAD(0x01b8, PIN_OUTPUT, 7) /* (E20) SPI0_CS1.GPIO1_16 */ /* SODIMM 19 */
+                       AM62PX_IOPAD(0x01b8, PIN_INPUT, 7) /* (E20) SPI0_CS1.GPIO1_16 */ /* SODIMM 19 */
                >;
        };
 
        /* Verdin SD_1_CD# */
        pinctrl_sd1_cd: main-gpio1-48-default-pins {
                pinctrl-single,pins = <
-                       AM62PX_IOPAD(0x0240, PIN_INPUT, 7) /* (D23) MMC1_SDCD.GPIO1_48 */ /* SODIMM 84 */
+                       AM62PX_IOPAD(0x0240, PIN_INPUT_PULLUP, 7) /* (D23) MMC1_SDCD.GPIO1_48 */ /* SODIMM 84 */
                >;
        };
 
        /* Verdin I2C_3_HDMI */
        pinctrl_mcu_i2c0: mcu-i2c0-default-pins {
                pinctrl-single,pins = <
-                       AM62PX_MCU_IOPAD(0x0044, PIN_INPUT, 0) /* (E11) MCU_I2C0_SCL */ /* SODIMM 59 */
-                       AM62PX_MCU_IOPAD(0x0048, PIN_INPUT, 0) /* (D11) MCU_I2C0_SDA */ /* SODIMM 57 */
+                       AM62PX_MCU_IOPAD(0x0044, PIN_INPUT_PULLUP, 0) /* (E11) MCU_I2C0_SCL */ /* SODIMM 59 */
+                       AM62PX_MCU_IOPAD(0x0048, PIN_INPUT_PULLUP, 0) /* (D11) MCU_I2C0_SDA */ /* SODIMM 57 */
                >;
        };
 
        };
 };
 
+&main0_alert {
+       temperature = <95000>;
+};
+
+&main0_crit {
+       temperature = <105000>;
+};
+
+&main1_alert {
+       temperature = <95000>;
+};
+
+&main1_crit {
+       temperature = <105000>;
+};
+
+&main2_alert {
+       temperature = <95000>;
+};
+
+&main2_crit {
+       temperature = <105000>;
+};
+
 &main_gpio0 {
        gpio-line-names =
                "SODIMM_52",
index 83c37de7d338dbf10a16017834e69b37b5d41987..899da7896563b43021de14eda1b0058a5c6d36da 100644 (file)
        };
 };
 
+&cpsw_mac_syscon {
+       bootph-all;
+};
+
+&phy_gmii_sel {
+       bootph-all;
+};
+
 &main_gpio0 {
        bootph-all;
 };
                        AM62PX_IOPAD(0x0160, PIN_OUTPUT, 0) /* (F17) MDIO0_MDC */
                        AM62PX_IOPAD(0x015c, PIN_INPUT, 0) /* (F16) MDIO0_MDIO */
                >;
+               bootph-all;
        };
 
        main_mmc1_pins_default: main-mmc1-default-pins {
        phy-mode = "rgmii-rxid";
        phy-handle = <&cpsw3g_phy0>;
        status = "okay";
+       bootph-all;
 };
 
 &cpsw_port2 {
 
        cpsw3g_phy0: ethernet-phy@0 {
                reg = <0>;
+               bootph-all;
                ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
                ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
                ti,min-output-impedance;
index 140587d02e88e9d391c41001643ec715d41bf262..202378d9d5cfdc8eced935117398bcf859088d1b 100644 (file)
@@ -49,6 +49,7 @@
                        next-level-cache = <&l2_0>;
                        operating-points-v2 = <&a53_opp_table>;
                        clocks = <&k3_clks 135 0>;
+                       #cooling-cells = <2>;
                };
 
                cpu1: cpu@1 {
@@ -65,6 +66,7 @@
                        next-level-cache = <&l2_0>;
                        operating-points-v2 = <&a53_opp_table>;
                        clocks = <&k3_clks 136 0>;
+                       #cooling-cells = <2>;
                };
 
                cpu2: cpu@2 {
@@ -81,6 +83,7 @@
                        next-level-cache = <&l2_0>;
                        operating-points-v2 = <&a53_opp_table>;
                        clocks = <&k3_clks 137 0>;
+                       #cooling-cells = <2>;
                };
 
                cpu3: cpu@3 {
                        next-level-cache = <&l2_0>;
                        operating-points-v2 = <&a53_opp_table>;
                        clocks = <&k3_clks 138 0>;
+                       #cooling-cells = <2>;
                };
        };
 
index ee8337bfbbfd3a0ecfd61ebac9ddb5a7501e686d..13e1d36123d51f2ca8ec40ce61e4a53b5e7ba832 100644 (file)
                >;
        };
 
-       main_mmc0_pins_default: main-mmc0-default-pins {
-               bootph-all;
-               pinctrl-single,pins = <
-                       AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3/V3) MMC0_CMD */
-                       AM62X_IOPAD(0x218, PIN_INPUT, 0) /* (AB1/Y1) MMC0_CLK */
-                       AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2/V2) MMC0_DAT0 */
-                       AM62X_IOPAD(0x210, PIN_INPUT, 0) /* (AA1/V1) MMC0_DAT1 */
-                       AM62X_IOPAD(0x20c, PIN_INPUT, 0) /* (AA3/W2) MMC0_DAT2 */
-                       AM62X_IOPAD(0x208, PIN_INPUT, 0) /* (Y4/W1) MMC0_DAT3 */
-                       AM62X_IOPAD(0x204, PIN_INPUT, 0) /* (AB2/Y2) MMC0_DAT4 */
-                       AM62X_IOPAD(0x200, PIN_INPUT, 0) /* (AC1/W3) MMC0_DAT5 */
-                       AM62X_IOPAD(0x1fc, PIN_INPUT, 0) /* (AD2/W4) MMC0_DAT6 */
-                       AM62X_IOPAD(0x1f8, PIN_INPUT, 0) /* (AC2/V4) MMC0_DAT7 */
-               >;
-       };
-
        main_mmc1_pins_default: main-mmc1-default-pins {
                bootph-all;
                pinctrl-single,pins = <
        clock-frequency = <400000>;
 };
 
-&sdhci0 {
-       bootph-all;
-       status = "okay";
-       non-removable;
-       pinctrl-names = "default";
-       pinctrl-0 = <&main_mmc0_pins_default>;
-};
-
 &sdhci1 {
        /* SD/MMC */
        bootph-all;
index 43275177485341f2a20792997103dcae0defbc84..a7e8d4ea98ac01253276d5188a4f7f89479fbf0a 100644 (file)
@@ -46,6 +46,7 @@
                max-functions = /bits/ 8 <1>;
                phys = <&serdes0_pcie_link>;
                phy-names = "pcie-phy";
+               bootph-all;
                ti,syscon-pcie-ctrl = <&pcie0_ctrl 0x0>;
        };
 };
index f63c101b7d61a13ca799d6af6007281522e18a67..129524eb5b91238c55b7c3cbe521e6c58f5b1ca8 100644 (file)
 &icssg0_mdio {
        pinctrl-names = "default";
        pinctrl-0 = <&icssg0_mdio_pins_default &clkout0_pins_default>;
+       assigned-clocks = <&k3_clks 157 123>;
+       assigned-clock-parents = <&k3_clks 157 125>;
        status = "okay";
 
        icssg0_phy1: ethernet-phy@1 {
index b085e736111660ed0dad5f127ef0c3d79c52fe1d..61c11dc92d9c27fc9e47123698c17118cd522be1 100644 (file)
                              <0x00 0x32800000 0x00 0x100000>;
                        interrupt-names = "rx_011";
                        interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+                       bootph-all;
                };
 
                hwspinlock: spinlock@30e00000 {
index eee072e44a42f5f66423200975016447d22bdc46..d62a0be767c814706e146bcf95ee4ff84461a515 100644 (file)
                k3_pds: power-controller {
                        compatible = "ti,sci-pm-domain";
                        #power-domain-cells = <2>;
+                       bootph-all;
                };
 
                k3_clks: clock-controller {
                        compatible = "ti,k2g-sci-clk";
                        #clock-cells = <2>;
+                       bootph-all;
                };
 
                k3_reset: reset-controller {
                        compatible = "ti,sci-reset";
                        #reset-cells = <2>;
+                       bootph-all;
                };
        };
 
@@ -43,6 +46,7 @@
                chipid: chipid@14 {
                        compatible = "ti,am654-chipid";
                        reg = <0x14 0x4>;
+                       bootph-all;
                };
        };
 
                reg = <0x42050000 0x25c>;
                power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;
                #thermal-sensor-cells = <1>;
+               bootph-all;
        };
 };
index c30425960398ebb75ebda44726ed90cd78947d58..e589690c7c8213d5e4989942735fa53825e610f5 100644 (file)
                regulator-boot-on;
                vin-supply = <&vcc3v3_io>;
                gpio = <&wkup_gpio0 28 GPIO_ACTIVE_HIGH>;
+               bootph-all;
        };
 };
 
                        AM65X_WKUP_IOPAD(0x00c8, PIN_INPUT, 1)  /* (AC2) WKUP_GPIO0_6.WKUP_UART0_CTSn */
                        AM65X_WKUP_IOPAD(0x00cc, PIN_OUTPUT, 1) /* (AC1) WKUP_GPIO0_7.WKUP_UART0_RTSn */
                >;
+               bootph-all;
        };
 
        ddr_vtt_pins_default: ddr-vtt-default-pins {
                pinctrl-single,pins = <
                        AM65X_WKUP_IOPAD(0x0040, PIN_OUTPUT_PULLUP, 7)  /* WKUP_GPIO0_28 */
                >;
+               bootph-all;
        };
 
        wkup_i2c0_pins_default: wkup-i2c0-default-pins {
                        AM65X_WKUP_IOPAD(0x00e0, PIN_INPUT, 0) /* (AC7) WKUP_I2C0_SCL */
                        AM65X_WKUP_IOPAD(0x00e4, PIN_INPUT, 0) /* (AD6) WKUP_I2C0_SDA */
                >;
+               bootph-all;
        };
 
        push_button_pins_default: push-button-default-pins {
                        AM65X_WKUP_IOPAD(0x0028, PIN_INPUT, 0)  /* (R3) MCU_OSPI0_D7 */
                        AM65X_WKUP_IOPAD(0x002c, PIN_OUTPUT, 0) /* (R4) MCU_OSPI0_CSn0 */
                >;
+               bootph-all;
        };
 
        wkup_pca554_default: wkup-pca554-default-pins {
                        AM65X_WKUP_IOPAD(0x004C, PIN_INPUT, 4)  /* (P1) MCU_OSPI1_D3.MCU_UART0_CTSn */
                        AM65X_WKUP_IOPAD(0x0054, PIN_OUTPUT, 4) /* (N3) MCU_OSPI1_CSn1.MCU_UART0_RTSn */
                >;
+               bootph-all;
        };
 
        mcu_cpsw_pins_default: mcu-cpsw-default-pins {
                        AM65X_IOPAD(0x01ec, PIN_INPUT, 0)       /* (AG11) UART0_CTSn */
                        AM65X_IOPAD(0x01f0, PIN_OUTPUT, 0)      /* (AD11) UART0_RTSn */
                >;
+               bootph-all;
        };
 
        main_i2c2_pins_default: main-i2c2-default-pins {
                        AM65X_IOPAD(0x01b4, PIN_INPUT_PULLUP, 0) /* (A23) MMC0_SDCD */
                        AM65X_IOPAD(0x01b0, PIN_INPUT, 0) /* (C25) MMC0_DS */
                >;
+               bootph-all;
        };
 
        main_mmc1_pins_default: main-mmc1-default-pins {
                        AM65X_IOPAD(0x02dc, PIN_INPUT_PULLUP, 0) /* (B24) MMC1_SDCD */
                        AM65X_IOPAD(0x02e0, PIN_INPUT, 0) /* (C24) MMC1_SDWP */
                >;
+               bootph-all;
        };
 
        usb1_pins_default: usb1-default-pins {
        pinctrl-names = "default";
        pinctrl-0 = <&main_uart0_pins_default>;
        power-domains = <&k3_pds 146 TI_SCI_PD_SHARED>;
+       bootph-all;
 };
 
 &wkup_i2c0 {
                ti,vsel0-state-high;
                ti,vsel1-state-high;
                ti,enable-vout-discharge;
+               bootph-all;
        };
 
        gpio@38 {
        bus-width = <8>;
        non-removable;
        ti,driver-strength-ohm = <50>;
+       bootph-all;
 };
 
 /*
        pinctrl-0 = <&main_mmc1_pins_default>;
        ti,driver-strength-ohm = <50>;
        disable-wp;
+       bootph-all;
 };
 
 &usb1 {
 &dss {
        status = "disabled";
 };
+
+&wkup_gpio0 {
+       bootph-all;
+};
index c3cb752f8cd79459d6d321dfdf0644748514a48d..d04dd7a44008205301ea3fb3d0a883b6a6a2562b 100644 (file)
@@ -46,6 +46,7 @@
 
 &dwc3_0 {
        status = "okay";
+       bootph-all;
 };
 
 &usb0_phy {
index 333e423e8bb6b033f5f45c782ef0095d29983158..04393f21d712ebd95ce1a411e2ac13a56e63e57b 100644 (file)
@@ -45,6 +45,7 @@
        <&k3_clks 151 8>;      /* set PIPE3_TXB_CLK to WIZ8B2M4VSB */
        phys = <&serdes0 PHY_TYPE_USB3 0>;
        phy-names = "usb3-phy";
+       bootph-all;
 };
 
 &usb0 {
index 5fa70a874d7b4dcd07be9ae46fa0af7f9837d006..e84c504c87d26893ab99974f42c9edaad50987b4 100644 (file)
                        J721S2_WKUP_IOPAD(0x018, PIN_OUTPUT, 0) /* (F21) MCU_RGMII1_TXC */
                        J721S2_WKUP_IOPAD(0x000, PIN_OUTPUT, 0) /* (F22) MCU_RGMII1_TX_CTL */
                >;
+               bootph-all;
        };
 
        mcu_mdio_pins_default: mcu-mdio-default-pins {
                        J721S2_WKUP_IOPAD(0x034, PIN_OUTPUT, 0) /* (A21) MCU_MDIO0_MDC */
                        J721S2_WKUP_IOPAD(0x030, PIN_INPUT, 0) /* (A22) MCU_MDIO0_MDIO */
                >;
+               bootph-all;
        };
 
        mcu_mcan0_pins_default: mcu-mcan0-default-pins {
        };
 };
 
+&cpsw_mac_syscon {
+       bootph-all;
+};
+
+&phy_gmii_sel {
+       bootph-all;
+};
+
 &main_gpio0 {
        status = "okay";
        pinctrl-names = "default";
 &davinci_mdio {
        phy0: ethernet-phy@0 {
                reg = <0>;
+               bootph-all;
                ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
                ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
                ti,min-output-impedance;
 &cpsw_port1 {
        phy-mode = "rgmii-rxid";
        phy-handle = <&phy0>;
+       bootph-all;
 };
 
 &mcu_mcan0 {
index f28375629739cbb76567a805d9655a1cd19d4d83..612ac27643d2cee62a3414623d1cb19288c1c83f 100644 (file)
                        J784S4_WKUP_IOPAD(0x018, PIN_OUTPUT, 0) /* (E36) MCU_RGMII1_TXC */
                        J784S4_WKUP_IOPAD(0x000, PIN_OUTPUT, 0) /* (C38) MCU_RGMII1_TX_CTL */
                >;
+               bootph-all;
        };
 
        mcu_mdio_pins_default: mcu-mdio-default-pins {
                        J784S4_WKUP_IOPAD(0x034, PIN_OUTPUT, 0) /* (A36) MCU_MDIO0_MDC */
                        J784S4_WKUP_IOPAD(0x030, PIN_INPUT, 0) /* (B35) MCU_MDIO0_MDIO */
                >;
+               bootph-all;
        };
 
        mcu_rpi_hdr1_gpio0_pins_default: mcu-rpi-hdr1-gpio0-default-pins {
        };
 };
 
+&cpsw_mac_syscon {
+       bootph-all;
+};
+
+&phy_gmii_sel {
+       bootph-all;
+};
+
 &mailbox0_cluster0 {
        status = "okay";
        interrupts = <436>;
 &davinci_mdio {
        mcu_phy0: ethernet-phy@0 {
                reg = <0>;
+               bootph-all;
                ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
                ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
                ti,min-output-impedance;
        status = "okay";
        phy-mode = "rgmii-rxid";
        phy-handle = <&mcu_phy0>;
+       bootph-all;
 };
 
 &mcu_r5fss0_core0 {
 &serdes_ln_ctrl {
        idle-states = <J784S4_SERDES0_LANE0_PCIE1_LANE0>, <J784S4_SERDES0_LANE1_PCIE1_LANE1>,
                      <J784S4_SERDES0_LANE2_PCIE3_LANE0>, <J784S4_SERDES0_LANE3_USB>,
-                       <J784S4_SERDES1_LANE0_PCIE0_LANE0>, <J784S4_SERDES1_LANE1_PCIE0_LANE1>,
-                       <J784S4_SERDES1_LANE2_PCIE0_LANE2>, <J784S4_SERDES1_LANE3_PCIE0_LANE3>;
+                     <J784S4_SERDES1_LANE0_PCIE0_LANE0>, <J784S4_SERDES1_LANE1_PCIE0_LANE1>,
+                     <J784S4_SERDES1_LANE2_PCIE0_LANE2>, <J784S4_SERDES1_LANE3_PCIE0_LANE3>,
+                     <J784S4_SERDES2_LANE0_IP2_UNUSED>, <J784S4_SERDES2_LANE1_IP2_UNUSED>,
+                     <J784S4_SERDES2_LANE2_QSGMII_LANE1>, <J784S4_SERDES2_LANE3_QSGMII_LANE2>,
+                     <J784S4_SERDES4_LANE0_EDP_LANE0>, <J784S4_SERDES4_LANE1_EDP_LANE1>,
+                     <J784S4_SERDES4_LANE2_EDP_LANE2>, <J784S4_SERDES4_LANE3_EDP_LANE3>;
 };
 
 &serdes_wiz0 {
index 83cf0adb2cb71f854314534faf8fba813b1892a6..62f45377a2c9e6f0d8192de28e382f326152330d 100644 (file)
                power-domain-names = "a", "b";
                dma-coherent;
        };
+
+       mcasp0: mcasp@2b00000 {
+               compatible = "ti,am33xx-mcasp-audio";
+               reg = <0x00 0x02b00000 0x00 0x2000>,
+                     <0x00 0x02b08000 0x00 0x1000>;
+               reg-names = "mpu","dat";
+               interrupts = <GIC_SPI 544 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 545 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "tx", "rx";
+               dmas = <&main_udmap 0xc400>, <&main_udmap 0x4400>;
+               dma-names = "tx", "rx";
+               clocks = <&k3_clks 209 0>;
+               clock-names = "fck";
+               assigned-clocks = <&k3_clks 209 0>;
+               assigned-clock-parents = <&k3_clks 209 1>;
+               power-domains = <&k3_pds 209 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+       };
+
+       mcasp1: mcasp@2b10000 {
+               compatible = "ti,am33xx-mcasp-audio";
+               reg = <0x00 0x02b10000 0x00 0x2000>,
+                     <0x00 0x02b18000 0x00 0x1000>;
+               reg-names = "mpu","dat";
+               interrupts = <GIC_SPI 546 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 547 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "tx", "rx";
+               dmas = <&main_udmap 0xc401>, <&main_udmap 0x4401>;
+               dma-names = "tx", "rx";
+               clocks = <&k3_clks 210 0>;
+               clock-names = "fck";
+               assigned-clocks = <&k3_clks 210 0>;
+               assigned-clock-parents = <&k3_clks 210 1>;
+               power-domains = <&k3_pds 210 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+       };
+
+       mcasp2: mcasp@2b20000 {
+               compatible = "ti,am33xx-mcasp-audio";
+               reg = <0x00 0x02b20000 0x00 0x2000>,
+                     <0x00 0x02b28000 0x00 0x1000>;
+               reg-names = "mpu","dat";
+               interrupts = <GIC_SPI 548 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 549 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "tx", "rx";
+               dmas = <&main_udmap 0xc402>, <&main_udmap 0x4402>;
+               dma-names = "tx", "rx";
+               clocks = <&k3_clks 211 0>;
+               clock-names = "fck";
+               assigned-clocks = <&k3_clks 211 0>;
+               assigned-clock-parents = <&k3_clks 211 1>;
+               power-domains = <&k3_pds 211 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+       };
+
+       mcasp3: mcasp@2b30000 {
+               compatible = "ti,am33xx-mcasp-audio";
+               reg = <0x00 0x02b30000 0x00 0x2000>,
+                     <0x00 0x02b38000 0x00 0x1000>;
+               reg-names = "mpu","dat";
+               interrupts = <GIC_SPI 550 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 551 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "tx", "rx";
+               dmas = <&main_udmap 0xc403>, <&main_udmap 0x4403>;
+               dma-names = "tx", "rx";
+               clocks = <&k3_clks 212 0>;
+               clock-names = "fck";
+               assigned-clocks = <&k3_clks 212 0>;
+               assigned-clock-parents = <&k3_clks 212 1>;
+               power-domains = <&k3_pds 212 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+       };
+
+       mcasp4: mcasp@2b40000 {
+               compatible = "ti,am33xx-mcasp-audio";
+               reg = <0x00 0x02b40000 0x00 0x2000>,
+                     <0x00 0x02b48000 0x00 0x1000>;
+               reg-names = "mpu","dat";
+               interrupts = <GIC_SPI 552 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 553 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "tx", "rx";
+               dmas = <&main_udmap 0xc404>, <&main_udmap 0x4404>;
+               dma-names = "tx", "rx";
+               clocks = <&k3_clks 213 0>;
+               clock-names = "fck";
+               assigned-clocks = <&k3_clks 213 0>;
+               assigned-clock-parents = <&k3_clks 213 1>;
+               power-domains = <&k3_pds 213 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+       };
 };
index a47852fdca70c49fbd090194292a6b8c256c1f7d..9d8abfa9afd2748d1f00bebe678a577dbbd6fa48 100644 (file)
        };
 };
 
+&cpsw_mac_syscon {
+       bootph-all;
+};
+
+&phy_gmii_sel {
+       bootph-all;
+};
+
 &main_pmx0 {
 
        main_mcan0_pins_default: main-mcan0-default-pins {
                        J722S_IOPAD(0x0160, PIN_OUTPUT, 0) /* (AC24) MDIO0_MDC */
                        J722S_IOPAD(0x015c, PIN_INPUT, 0) /* (AD25) MDIO0_MDIO */
                >;
+               bootph-all;
        };
 
        ospi0_pins_default: ospi0-default-pins {
                        J722S_IOPAD(0x0130, PIN_OUTPUT, 0) /* (AG26) RGMII1_TXC */
                        J722S_IOPAD(0x012c, PIN_OUTPUT, 0) /* (AF25) RGMII1_TX_CTL */
                >;
+               bootph-all;
        };
 
        main_usb1_pins_default: main-usb1-default-pins {
 
        cpsw3g_phy0: ethernet-phy@0 {
                reg = <0>;
+               bootph-all;
                ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
                ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
                ti,min-output-impedance;
        phy-mode = "rgmii-rxid";
        phy-handle = <&cpsw3g_phy0>;
        status = "okay";
+       bootph-all;
 };
 
 &main_gpio1 {
                        /* P05 - USB2.0_MUX_SEL */
                        gpio-hog;
                        gpios = <5 GPIO_ACTIVE_LOW>;
-                       output-high;
+                       output-low;
                };
 
                p01_hog: p01-hog {
index 78d7e800b311549848097a8febab63d0851be57b..5cfa7bf36641cf501fbdfeb5d810f066c66d7d05 100644 (file)
                                <0x10 0x3>; /* SERDES1 lane0 select */
        };
 
+       audio_refclk0: clock@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 15>;
+               #clock-cells = <0>;
+       };
+
        audio_refclk1: clock@82e4 {
                compatible = "ti,am62-audio-refclk";
                reg = <0x82e4 0x4>;
index 14c6c6a332ef2f118e483744e97222865560e6ac..cdc8570e54b29d068aab4e2788a8b36dfa539cfa 100644 (file)
@@ -56,6 +56,7 @@
                        d-cache-sets = <128>;
                        next-level-cache = <&l2_0>;
                        clocks = <&k3_clks 135 0>;
+                       #cooling-cells = <2>;
                };
 
                cpu1: cpu@1 {
@@ -71,6 +72,7 @@
                        d-cache-sets = <128>;
                        next-level-cache = <&l2_0>;
                        clocks = <&k3_clks 136 0>;
+                       #cooling-cells = <2>;
                };
 
                cpu2: cpu@2 {
@@ -86,6 +88,7 @@
                        d-cache-sets = <128>;
                        next-level-cache = <&l2_0>;
                        clocks = <&k3_clks 137 0>;
+                       #cooling-cells = <2>;
                };
 
                cpu3: cpu@3 {
                        d-cache-sets = <128>;
                        next-level-cache = <&l2_0>;
                        clocks = <&k3_clks 138 0>;
+                       #cooling-cells = <2>;
                };
        };
 
index 363d68fec3879b96b345dcc5a82db0bb75d51265..7c5b0c69897dfe5c77365a9a088c7cf2215bbb0d 100644 (file)
                        compatible = "ti,j784s4-acspcie-proxy-ctrl", "syscon";
                        reg = <0x1a090 0x4>;
                };
+
+               acspcie1_proxy_ctrl: clock-controller@1a094 {
+                       compatible = "ti,j784s4-acspcie-proxy-ctrl", "syscon";
+                       reg = <0x1a094 0x4>;
+               };
        };
 
        main_ehrpwm0: pwm@3000000 {
                power-domains = <&k3_pds 269 TI_SCI_PD_EXCLUSIVE>;
                status = "disabled";
        };
+
+       bist_main14: bist@33c0000 {
+               compatible = "ti,j784s4-bist";
+               reg = <0x00 0x033c0000 0x00 0x400>,
+                     <0x00 0x0010c1a0 0x00 0x01c>;
+               reg-names = "cfg", "ctrl_mmr";
+               clocks = <&k3_clks 237 7>;
+               power-domains = <&k3_pds 237 TI_SCI_PD_EXCLUSIVE>;
+               bootph-pre-ram;
+               ti,sci-dev-id = <234>;
+       };
 };
index cac7cccc111212eba520454396c8cc5c9fcba9b1..c0f09be8d3f94a70812b66c3f91626aac35f4026 100644 (file)
@@ -8,6 +8,7 @@
 #ifndef DTS_ARM64_TI_K3_PINCTRL_H
 #define DTS_ARM64_TI_K3_PINCTRL_H
 
+#define ST_EN_SHIFT            (14)
 #define PULLUDEN_SHIFT         (16)
 #define PULLTYPESEL_SHIFT      (17)
 #define RXACTIVE_SHIFT         (18)
 #define DS_PULLUD_EN_SHIFT     (27)
 #define DS_PULLTYPE_SEL_SHIFT  (28)
 
+/* Schmitt trigger configuration */
+#define ST_DISABLE             (0 << ST_EN_SHIFT)
+#define ST_ENABLE              (1 << ST_EN_SHIFT)
+
 #define PULL_DISABLE           (1 << PULLUDEN_SHIFT)
 #define PULL_ENABLE            (0 << PULLUDEN_SHIFT)
 
 #define PIN_OUTPUT             (INPUT_DISABLE | PULL_DISABLE)
 #define PIN_OUTPUT_PULLUP      (INPUT_DISABLE | PULL_UP)
 #define PIN_OUTPUT_PULLDOWN    (INPUT_DISABLE | PULL_DOWN)
-#define PIN_INPUT              (INPUT_EN | PULL_DISABLE)
-#define PIN_INPUT_PULLUP       (INPUT_EN | PULL_UP)
-#define PIN_INPUT_PULLDOWN     (INPUT_EN | PULL_DOWN)
+#define PIN_INPUT              (INPUT_EN | ST_ENABLE | PULL_DISABLE)
+#define PIN_INPUT_PULLUP       (INPUT_EN | ST_ENABLE | PULL_UP)
+#define PIN_INPUT_PULLDOWN     (INPUT_EN | ST_ENABLE | PULL_DOWN)
+/* Input configurations with Schmitt Trigger disabled */
+#define PIN_INPUT_NOST         (INPUT_EN | PULL_DISABLE)
+#define PIN_INPUT_PULLUP_NOST  (INPUT_EN | PULL_UP)
+#define PIN_INPUT_PULLDOWN_NOST        (INPUT_EN | PULL_DOWN)
 
 #define PIN_DEBOUNCE_DISABLE   (0 << DEBOUNCE_SHIFT)
 #define PIN_DEBOUNCE_CONF1     (1 << DEBOUNCE_SHIFT)
@@ -63,6 +72,9 @@
 #define AM62AX_IOPAD(pa, val, muxmode)         (((pa) & 0x1fff)) ((val) | (muxmode))
 #define AM62AX_MCU_IOPAD(pa, val, muxmode)     (((pa) & 0x1fff)) ((val) | (muxmode))
 
+#define AM62DX_IOPAD(pa, val, muxmode)         (((pa) & 0x1fff)) ((val) | (muxmode))
+#define AM62DX_MCU_IOPAD(pa, val, muxmode)     (((pa) & 0x1fff)) ((val) | (muxmode))
+
 #define AM62PX_IOPAD(pa, val, muxmode)         (((pa) & 0x1fff)) ((val) | (muxmode))
 #define AM62PX_MCU_IOPAD(pa, val, muxmode)     (((pa) & 0x1fff)) ((val) | (muxmode))
 
index a34734a6c3ce802f0b735c2689212a459a6372f2..018ed904352a738b6dc80ae8849bf0014251119d 100644 (file)
        };
 };
 
+&apbdma3 {
+       status = "okay";
+};
+
+&mmc0 {
+       status = "okay";
+       bus-width = <4>;
+};
+
 &gmac0 {
        status = "okay";
 
index 760c60eebb896c103abf98d2641e429757140efb..588ebc3bded40f16f4b0794969dc85b10727ff1b 100644 (file)
                        status = "disabled";
                };
 
-               dma-controller@1fe10c20 {
+               apbdma2: dma-controller@1fe10c20 {
                        compatible = "loongson,ls2k0500-apbdma", "loongson,ls2k1000-apbdma";
                        reg = <0 0x1fe10c20 0 0x8>;
                        interrupt-parent = <&eiointc>;
                        status = "disabled";
                };
 
-               dma-controller@1fe10c30 {
+               apbdma3: dma-controller@1fe10c30 {
                        compatible = "loongson,ls2k0500-apbdma", "loongson,ls2k1000-apbdma";
                        reg = <0 0x1fe10c30 0 0x8>;
                        interrupt-parent = <&eiointc>;
                        status = "disabled";
                };
 
+               mmc0: mmc@1ff64000 {
+                       compatible = "loongson,ls2k0500-mmc";
+                       reg = <0 0x1ff64000 0 0x2000>,
+                             <0 0x1fe10100 0 0x4>;
+                       interrupt-parent = <&eiointc>;
+                       interrupts = <57>;
+                       dmas = <&apbdma3 0>;
+                       dma-names = "rx-tx";
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       status = "disabled";
+               };
+
+               mmc@1ff66000 {
+                       compatible = "loongson,ls2k0500-mmc";
+                       reg = <0 0x1ff66000 0 0x2000>,
+                             <0 0x1fe10100 0 0x4>;
+                       interrupt-parent = <&eiointc>;
+                       interrupts = <58>;
+                       dmas = <&apbdma2 0>;
+                       dma-names = "rx-tx";
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       status = "disabled";
+               };
+
                pmc: power-management@1ff6c000 {
                        compatible = "loongson,ls2k0500-pmc", "syscon";
                        reg = <0x0 0x1ff6c000 0x0 0x58>;
index 78ea995abf1c6570f6c4086aaca7e248b006c08a..d9a452ada5d771b32b5a157b437c8c9309c354df 100644 (file)
        };
 };
 
+&apbdma1 {
+       status = "okay";
+};
+
+&mmc {
+       status = "okay";
+
+       pinctrl-0 = <&sdio_pins_default>;
+       pinctrl-names = "default";
+       bus-width = <4>;
+       cd-gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+};
+
 &gmac0 {
        status = "okay";
 
index 1da3beb00f0ec1d672d3c3c68d71faf6ee9d2079..d8e01e2534dde1098ce28724fe79c00411dcd4b7 100644 (file)
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
-                                    <>,
-                                    <26 IRQ_TYPE_LEVEL_HIGH>,
+                                    <0 IRQ_TYPE_NONE>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
+                                    <26 IRQ_TYPE_NONE>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
                                     <26 IRQ_TYPE_LEVEL_HIGH>,
                                     <27 IRQ_TYPE_LEVEL_HIGH>,
                                     <27 IRQ_TYPE_LEVEL_HIGH>,
                                     <27 IRQ_TYPE_LEVEL_HIGH>,
-                                    <>,
+                                    <0 IRQ_TYPE_NONE>,
                                     <27 IRQ_TYPE_LEVEL_HIGH>,
                                     <27 IRQ_TYPE_LEVEL_HIGH>,
                                     <27 IRQ_TYPE_LEVEL_HIGH>,
                                     <27 IRQ_TYPE_LEVEL_HIGH>,
-                                    <>,
-                                    <>,
+                                    <0 IRQ_TYPE_NONE>,
+                                    <0 IRQ_TYPE_NONE>,
                                     <27 IRQ_TYPE_LEVEL_HIGH>,
                                     <27 IRQ_TYPE_LEVEL_HIGH>,
                                     <27 IRQ_TYPE_LEVEL_HIGH>,
                        status = "disabled";
                };
 
-               dma-controller@1fe00c10 {
+               apbdma1: dma-controller@1fe00c10 {
                        compatible = "loongson,ls2k1000-apbdma";
                        reg = <0x0 0x1fe00c10 0x0 0x8>;
                        interrupt-parent = <&liointc1>;
                        status = "disabled";
                };
 
+               mmc: mmc@1fe2c000 {
+                       compatible = "loongson,ls2k1000-mmc";
+                       reg = <0 0x1fe2c000 0 0x68>,
+                             <0 0x1fe00438 0 0x8>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <31 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       dmas = <&apbdma1 0>;
+                       dma-names = "rx-tx";
+                       status = "disabled";
+               };
+
                spi0: spi@1fff0220 {
                        compatible = "loongson,ls2k1000-spi";
                        reg = <0x0 0x1fff0220 0x0 0x10>;
index ea9e6985d0e9fca980eaad34ca4089b6164ad447..3c6b1222038655c1f2e3048605a292b7ba8443b1 100644 (file)
        };
 };
 
+&emmc {
+       status = "okay";
+
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       mmc-hs200-1_8v;
+       no-sd;
+       no-sdio;
+};
+
 &sata {
        status = "okay";
 };
index 9e0411f2754c9b5d77610089bfd094dcbebc04a0..00cc485b753b1cc421e5627580981c4613854071 100644 (file)
                        status = "disabled";
                };
 
+               emmc: mmc@79990000 {
+                       compatible = "loongson,ls2k2000-mmc";
+                       reg = <0x0 0x79990000 0x0 0x1000>;
+                       interrupt-parent = <&pic>;
+                       interrupts = <51 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_EMMC_CLK>;
+                       status = "disabled";
+               };
+
+               mmc@79991000 {
+                       compatible = "loongson,ls2k2000-mmc";
+                       reg = <0x0 0x79991000 0x0 0x1000>;
+                       interrupt-parent = <&pic>;
+                       interrupts = <50 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_EMMC_CLK>;
+                       status = "disabled";
+               };
+
                pcie@1a000000 {
                        compatible = "loongson,ls2k-pci";
                        reg = <0x0 0x1a000000 0x0 0x02000000>,
index 1ce20b7d05cb8cff0d04ff28794fb1ae95d8e5d1..c4d7aa5753b043157ca3ffc5451c285ebc116f29 100644 (file)
                        };
                };
 
-               etop@e180000 {
+               ethernet@e180000 {
                        compatible = "lantiq,etop-xway";
                        reg = <0xe180000 0x40000>;
                        interrupt-parent = <&icu0>;
                        interrupts = <73 78>;
+                       interrupt-names = "tx", "rx";
                        phy-mode = "rmii";
                        mac-address = [ 00 11 22 33 44 55 ];
+                       lantiq,rx-burst-length = <4>;
+                       lantiq,tx-burst-length = <4>;
                };
 
                stp0: stp@e100bb0 {
index 6898b2d8267dfadeea511a84d1df3f70744f17bb..9fc1a1b0a81bec5ec52db17231104c86020d7e3b 100644 (file)
                      <0x8 0x02000000 0x0 0x7E000000>;
        };
 };
+
+&i2c2 {
+       temperature-sensor@48 {
+               compatible = "ti,tmp112";
+               reg = <0x48>;
+               label = "U60";
+       };
+};
index a84e6e720619ef99e1405ae6296d8bad1aa3fa23..36a73e8a63a1ab32d1c300d17c4491b175428cdf 100644 (file)
                ranges;
                compatible = "simple-bus";
 
+               i2c0: i2c@300000 {
+                       compatible = "mobileye,eyeq5-i2c", "arm,primecell";
+                       reg = <0 0x300000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SHARED 1 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-frequency = <400000>; /* Fast mode */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&olb 35>, <&olb EQ5C_PER_I2C>;
+                       clock-names = "i2cclk", "apb_pclk";
+                       resets = <&olb 0 13>;
+                       i2c-transfer-timeout-us = <10000>;
+                       mobileye,olb = <&olb 0>;
+               };
+
+               i2c1: i2c@400000 {
+                       compatible = "mobileye,eyeq5-i2c", "arm,primecell";
+                       reg = <0 0x400000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SHARED 2 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-frequency = <400000>; /* Fast mode */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&olb 35>, <&olb EQ5C_PER_I2C>;
+                       clock-names = "i2cclk", "apb_pclk";
+                       resets = <&olb 0 14>;
+                       i2c-transfer-timeout-us = <10000>;
+                       mobileye,olb = <&olb 1>;
+               };
+
+               i2c2: i2c@500000 {
+                       compatible = "mobileye,eyeq5-i2c", "arm,primecell";
+                       reg = <0 0x500000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SHARED 3 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-frequency = <400000>; /* Fast mode */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&olb 35>, <&olb EQ5C_PER_I2C>;
+                       clock-names = "i2cclk", "apb_pclk";
+                       resets = <&olb 0 15>;
+                       i2c-transfer-timeout-us = <10000>;
+                       mobileye,olb = <&olb 2>;
+               };
+
+               i2c3: i2c@600000 {
+                       compatible = "mobileye,eyeq5-i2c", "arm,primecell";
+                       reg = <0 0x600000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-frequency = <400000>; /* Fast mode */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&olb 35>, <&olb EQ5C_PER_I2C>;
+                       clock-names = "i2cclk", "apb_pclk";
+                       resets = <&olb 0 16>;
+                       i2c-transfer-timeout-us = <10000>;
+                       mobileye,olb = <&olb 3>;
+               };
+
+               i2c4: i2c@700000 {
+                       compatible = "mobileye,eyeq5-i2c", "arm,primecell";
+                       reg = <0 0x700000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SHARED 5 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-frequency = <400000>; /* Fast mode */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&olb 35>, <&olb EQ5C_PER_I2C>;
+                       clock-names = "i2cclk", "apb_pclk";
+                       resets = <&olb 0 17>;
+                       i2c-transfer-timeout-us = <10000>;
+                       mobileye,olb = <&olb 4>;
+               };
+
                uart0: serial@800000 {
                        compatible = "arm,pl011", "arm,primecell";
                        reg = <0 0x800000 0x0 0x1000>;
                                clocks = <&olb EQ5C_CPU_CORE0>;
                        };
                };
+
+               emmc: mmc@2200000 {
+                       compatible = "mobileye,eyeq-sd4hc", "cdns,sd4hc";
+                       reg = <0 0x2200000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SHARED 10 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&olb EQ5C_PER_EMMC>;
+                       bus-width = <8>;
+                       max-frequency = <200000000>;
+                       mmc-ddr-1_8v;
+                       sd-uhs-ddr50;
+                       mmc-hs200-1_8v;
+                       mmc-hs400-1_8v;
+                       mmc-hs400-enhanced-strobe;
+
+                       cdns,phy-input-delay-legacy = <4>;
+                       cdns,phy-input-delay-mmc-highspeed = <2>;
+                       cdns,phy-input-delay-mmc-ddr = <3>;
+                       cdns,phy-dll-delay-sdclk = <32>;
+                       cdns,phy-dll-delay-sdclk-hsmmc = <32>;
+                       cdns,phy-dll-delay-strobe = <32>;
+               };
+
+               gpio0: gpio@1400000 {
+                       compatible = "mobileye,eyeq5-gpio";
+                       reg = <0x0 0x1400000 0x0 0x1000>;
+                       gpio-bank = <0>;
+                       ngpios = <29>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SHARED 14 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&olb 0 0 29>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       resets = <&olb 0 26>;
+               };
+
+               gpio1: gpio@1500000 {
+                       compatible = "mobileye,eyeq5-gpio";
+                       reg = <0x0 0x1500000 0x0 0x1000>;
+                       gpio-bank = <1>;
+                       ngpios = <23>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SHARED 14 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&olb 0 29 23>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       resets = <&olb 0 26>;
+               };
        };
 };
 
index dabd5ed778b739b62f5c6e7348f1837a207dbb6c..5ae939d25ea87ddc15cb848c249beed3d07e32e0 100644 (file)
                        clock-names = "ref";
                };
 
+               emmc: mmc@d8010000 {
+                       compatible = "mobileye,eyeq-sd4hc", "cdns,sd4hc";
+                       reg = <0 0xd8010000 0x0 0x1000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SHARED 91 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&olb_south EQ6HC_SOUTH_DIV_EMMC>;
+                       bus-width = <8>;
+                       max-frequency = <200000000>;
+                       mmc-ddr-1_8v;
+                       sd-uhs-ddr50;
+                       mmc-hs200-1_8v;
+                       mmc-hs400-1_8v;
+                       mmc-hs400-enhanced-strobe;
+
+                       cdns,phy-input-delay-legacy = <4>;
+                       cdns,phy-input-delay-mmc-highspeed = <2>;
+                       cdns,phy-input-delay-mmc-ddr = <3>;
+                       cdns,phy-dll-delay-sdclk = <32>;
+                       cdns,phy-dll-delay-sdclk-hsmmc = <32>;
+                       cdns,phy-dll-delay-strobe = <32>;
+               };
+
                olb_south: system-controller@d8013000 {
                        compatible = "mobileye,eyeq6h-south-olb", "syscon";
                        reg = <0x0 0xd8013000 0x0 0x1000>;
index 61dcfa5b6ca78a843459d1c82a4d60289df11d32..c1ca03a27b6c5fcabfaacc3678bbae50d74cb361 100644 (file)
                        #address-cells = <1>;
                        #size-cells = <0>;
                };
+
+               wifi: wifi@180c0000 {
+                       compatible = "qca,ar9130-wifi";
+                       reg = <0x180c0000 0x230000>;
+
+                       interrupts = <2>;
+
+                       status = "disabled";
+               };
        };
 
        usb_phy: usb-phy {
index f894fe17816b2ec5f619e89cc1d870d4859d0944..a7901bb040ce5a37e2d4f89eb959a9d68b526ede 100644 (file)
                };
        };
 };
+
+&wifi {
+       status = "okay";
+};
index 768ac0f869b1c911aedae85f0cf18c8d8f324dcb..6eb84a26a20f95ba1769c9e83f7b666e82e4878a 100644 (file)
 
                        status = "disabled";
                };
+
+               wifi: wifi@18100000 {
+                       compatible = "qca,ar9330-wifi";
+                       reg = <0x18100000 0x20000>;
+
+                       interrupts = <2>;
+
+                       status = "disabled";
+               };
        };
 
        usb_phy: usb-phy {
index c857cd22f7db0db6b2290cbb7bd70db8f0797854..08e728b8ced8ffc828802e3973e3043538c85d51 100644 (file)
@@ -97,3 +97,7 @@
 &phy_port4 {
        status = "okay";
 };
+
+&wifi {
+       status = "okay";
+};
index 7affa58d4fa66a9cf6fbb81000d855615bdf3c9f..37a74aabe4b476aa4bd80eea7c47830c9ac8c2f7 100644 (file)
@@ -98,3 +98,7 @@
                reg = <0>;
        };
 };
+
+&wifi {
+       status = "okay";
+};
index 8904aa917a6e3987a6eb2ca32cb5a08efa744a25..1450419024cbc0b782a3265df1e3e0a90de62680 100644 (file)
@@ -74,3 +74,7 @@
                reg = <0>;
        };
 };
+
+&wifi {
+       status = "okay";
+};
index dc65ebd60bbcd4845517d28e08eed47acc2bec9e..5786a827c000019f7aabb4f4f1ba6b6ad87586de 100644 (file)
 &phy_port4 {
        status = "okay";
 };
+
+&wifi {
+       status = "okay";
+};
index 10b9759228b77ac4babe6327844d8c602d1a68b4..a7108c803eb36e06ed3047053ec96a7699b9b3ba 100644 (file)
                reg = <0>;
        };
 };
+
+&wifi {
+       status = "okay";
+};
index 7743d014631a8c9feab99aadfc08904a89fc0ca7..0bfb1dde97648b766214ba386a0cb28c0368aefc 100644 (file)
@@ -56,7 +56,7 @@
                led-power-green {
                        label = "smartgw:power:green";
                        gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
-                       default-state = "off";
+                       linux,default-trigger = "timer";
                };
 
                led-power-red {
index d66045948a8331d7775b1ffec6aae9f1e35de392..460164bdd430dc8e0f18163b8771cdd1e7c596dd 100644 (file)
                        reg-shift = <2>;
                };
        };
+
+       wmac: wifi@10180000 {
+               compatible = "ralink,rt2880-wifi";
+               reg = <0x10180000 0x40000>;
+
+               clocks = <&sysc 16>;
+
+               interrupt-parent = <&cpuintc>;
+               interrupts = <6>;
+       };
 };
index 0212700c4fb4d4dafd66645a9151d468cbaec4c9..5d7a6cfa9e2b3e74b8002822c713f2db30b54667 100644 (file)
@@ -33,7 +33,7 @@
                #size-cells = <1>;
 
                sysc: syscon@0 {
-                       compatible = "ralink,mt7628-sysc", "syscon";
+                       compatible = "ralink,mt7628-sysc", "ralink,mt7688-sysc", "syscon";
                        reg = <0x0 0x60>;
                        #clock-cells = <1>;
                        #reset-cells = <1>;
 
                watchdog: watchdog@100 {
                        compatible = "mediatek,mt7621-wdt";
-                       reg = <0x100 0x30>;
-
-                       resets = <&sysc 8>;
-                       reset-names = "wdt";
-
-                       interrupt-parent = <&intc>;
-                       interrupts = <24>;
+                       reg = <0x100 0x100>;
+                       mediatek,sysctl = <&sysc>;
 
                        status = "disabled";
                };
index 6789bf3740446ea30edab781d12a19fdaee21d33..6f6a05d4088e18d7cd67fd6b85873cb6e95d03be 100644 (file)
                };
        };
 };
+
+&mdio0 {
+       /* External RTL8224 */
+       phy0: ethernet-phy@0 {
+               reg = <0>;
+               compatible = "ethernet-phy-ieee802.3-c45";
+       };
+       phy1: ethernet-phy@1 {
+               reg = <1>;
+               compatible = "ethernet-phy-ieee802.3-c45";
+       };
+       phy2: ethernet-phy@2 {
+               reg = <2>;
+               compatible = "ethernet-phy-ieee802.3-c45";
+       };
+       phy3: ethernet-phy@3 {
+               reg = <3>;
+               compatible = "ethernet-phy-ieee802.3-c45";
+       };
+};
+
+&mdio1 {
+       /* External RTL8224 */
+       phy4: ethernet-phy@0 {
+               reg = <0>;
+               compatible = "ethernet-phy-ieee802.3-c45";
+       };
+       phy5: ethernet-phy@1 {
+               reg = <1>;
+               compatible = "ethernet-phy-ieee802.3-c45";
+       };
+       phy6: ethernet-phy@2 {
+               reg = <2>;
+               compatible = "ethernet-phy-ieee802.3-c45";
+       };
+       phy7: ethernet-phy@3 {
+               reg = <3>;
+               compatible = "ethernet-phy-ieee802.3-c45";
+       };
+};
+
+&switch0 {
+       ethernet-ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+                       phy-handle = <&phy0>;
+                       phy-mode = "usxgmii";
+               };
+               port@1 {
+                       reg = <1>;
+                       phy-handle = <&phy1>;
+                       phy-mode = "usxgmii";
+               };
+               port@2 {
+                       reg = <2>;
+                       phy-handle = <&phy2>;
+                       phy-mode = "usxgmii";
+               };
+               port@3 {
+                       reg = <3>;
+                       phy-handle = <&phy3>;
+                       phy-mode = "usxgmii";
+               };
+               port@16 {
+                       reg = <16>;
+                       phy-handle = <&phy4>;
+                       phy-mode = "usxgmii";
+               };
+               port@17 {
+                       reg = <17>;
+                       phy-handle = <&phy5>;
+                       phy-mode = "usxgmii";
+               };
+               port@18 {
+                       reg = <18>;
+                       phy-handle = <&phy6>;
+                       phy-mode = "usxgmii";
+               };
+               port@19 {
+                       reg = <19>;
+                       phy-handle = <&phy7>;
+                       phy-mode = "usxgmii";
+               };
+               port@24{
+                       reg = <24>;
+                       phy-mode = "10gbase-r";
+               };
+               port@25{
+                       reg = <25>;
+                       phy-mode = "10gbase-r";
+               };
+       };
+};
index 101bab72a95f43c534a738facd0ecf8d81d2355a..24e262e2dc2a2d812027644568aa6ea4258ddaca 100644 (file)
                #address-cells = <1>;
                #size-cells = <1>;
 
+               interrupt-parent = <&intc>;
+               interrupts = <23>, <24>;
+               interrupt-names = "switch", "nic";
+
                reboot@c {
                        compatible = "syscon-reboot";
                        reg = <0x0c 0x4>;
                        clocks = <&lx_clk>;
                };
 
+               watchdog0: watchdog@3260 {
+                       compatible = "realtek,rtl9300-wdt";
+                       reg = <0x3260 0xc>;
+
+                       realtek,reset-mode = "soc";
+
+                       clocks = <&lx_clk>;
+                       timeout-sec = <30>;
+
+                       interrupt-parent = <&intc>;
+                       interrupt-names = "phase1", "phase2";
+                       interrupts = <5>, <6>;
+               };
+
+               gpio0: gpio@3300 {
+                       compatible = "realtek,rtl9300-gpio", "realtek,otto-gpio";
+                       reg = <0x3300 0x1c>, <0x3338 0x8>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       ngpios = <24>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <13>;
+               };
+
                snand: spi@1a400 {
                        compatible = "realtek,rtl9301-snand";
                        reg = <0x1a400 0x44>;
index b7eac4e56019eaa84d8afe70c639f2112defdd7d..292b909ca9ce4ea242c1e632e05549b759fc4a38 100644 (file)
@@ -37,7 +37,7 @@
 
                ibm,powerpc-cpu-features {
                        display-name = "Microwatt";
-                       isa = <3010>;
+                       isa = <3100>;
                        device_type = "cpu-features";
                        compatible = "ibm,powerpc-cpu-features";
 
index bc5c84f227622ee423880fff6bbae6c1a740df79..5f2e5cc3e3d555c65fcf302b3e4c7ab8110ff9b8 100644 (file)
@@ -17,7 +17,7 @@
                #cooling-cells = <2>;
        };
 
-       i2c-gpio-0 {
+       i2c-0 {
                compatible = "i2c-gpio";
                sda-gpios = <&pio 3 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; /* PD14/GPIO44 */
                scl-gpios = <&pio 3 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; /* PD15/GPIO45 */
diff --git a/src/riscv/andes/qilai-voyager.dts b/src/riscv/andes/qilai-voyager.dts
new file mode 100644 (file)
index 0000000..fa7d2b3
--- /dev/null
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+/*
+ * Copyright (C) 2025 Andes Technology Corporation. All rights reserved.
+ */
+
+#include "qilai.dtsi"
+
+/ {
+       model = "Voyager";
+       compatible = "andestech,voyager", "andestech,qilai";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@400000000 {
+               device_type = "memory";
+               reg = <0x4 0x00000000 0x4 0x00000000>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/src/riscv/andes/qilai.dtsi b/src/riscv/andes/qilai.dtsi
new file mode 100644 (file)
index 0000000..de3de32
--- /dev/null
@@ -0,0 +1,186 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2025 Andes Technology Corporation. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               timebase-frequency = <62500000>;
+
+               cpu0: cpu@0 {
+                       compatible = "andestech,ax45mp", "riscv";
+                       device_type = "cpu";
+                       reg = <0>;
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "zicntr", "zicsr", "zifencei",
+                                              "zihpm", "xandespmu";
+                       mmu-type = "riscv,sv39";
+                       clock-frequency = <100000000>;
+                       i-cache-size = <0x8000>;
+                       i-cache-sets = <256>;
+                       i-cache-line-size = <64>;
+                       d-cache-size = <0x8000>;
+                       d-cache-sets = <128>;
+                       d-cache-line-size = <64>;
+                       next-level-cache = <&l2_cache>;
+
+                       cpu0_intc: interrupt-controller {
+                               compatible = "andestech,cpu-intc", "riscv,cpu-intc";
+                               #interrupt-cells = <1>;
+                               interrupt-controller;
+                       };
+               };
+
+               cpu1: cpu@1 {
+                       compatible = "andestech,ax45mp", "riscv";
+                       device_type = "cpu";
+                       reg = <1>;
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "zicntr", "zicsr", "zifencei",
+                                              "zihpm", "xandespmu";
+                       mmu-type = "riscv,sv39";
+                       clock-frequency = <100000000>;
+                       i-cache-size = <0x8000>;
+                       i-cache-sets = <256>;
+                       i-cache-line-size = <64>;
+                       d-cache-size = <0x8000>;
+                       d-cache-sets = <128>;
+                       d-cache-line-size = <64>;
+                       next-level-cache = <&l2_cache>;
+
+                       cpu1_intc: interrupt-controller {
+                               compatible = "andestech,cpu-intc",
+                                            "riscv,cpu-intc";
+                               #interrupt-cells = <1>;
+                               interrupt-controller;
+                       };
+               };
+
+               cpu2: cpu@2 {
+                       compatible = "andestech,ax45mp", "riscv";
+                       device_type = "cpu";
+                       reg = <2>;
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "zicntr", "zicsr", "zifencei",
+                                              "zihpm", "xandespmu";
+                       mmu-type = "riscv,sv39";
+                       clock-frequency = <100000000>;
+                       i-cache-size = <0x8000>;
+                       i-cache-sets = <256>;
+                       i-cache-line-size = <64>;
+                       d-cache-size = <0x8000>;
+                       d-cache-sets = <128>;
+                       d-cache-line-size = <64>;
+                       next-level-cache = <&l2_cache>;
+
+                       cpu2_intc: interrupt-controller {
+                               compatible = "andestech,cpu-intc",
+                                            "riscv,cpu-intc";
+                               #interrupt-cells = <1>;
+                               interrupt-controller;
+                       };
+               };
+
+               cpu3: cpu@3 {
+                       compatible = "andestech,ax45mp", "riscv";
+                       device_type = "cpu";
+                       reg = <3>;
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "zicntr", "zicsr", "zifencei",
+                                              "zihpm", "xandespmu";
+                       mmu-type = "riscv,sv39";
+                       clock-frequency = <100000000>;
+                       i-cache-size = <0x8000>;
+                       i-cache-sets = <256>;
+                       i-cache-line-size = <64>;
+                       d-cache-size = <0x8000>;
+                       d-cache-sets = <128>;
+                       d-cache-line-size = <64>;
+                       next-level-cache = <&l2_cache>;
+
+                       cpu3_intc: interrupt-controller {
+                               compatible = "andestech,cpu-intc",
+                                            "riscv,cpu-intc";
+                               #interrupt-cells = <1>;
+                               interrupt-controller;
+                       };
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               ranges;
+               interrupt-parent = <&plic>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               plmt: timer@100000 {
+                       compatible = "andestech,qilai-plmt", "andestech,plmt0";
+                       reg = <0x0 0x00100000 0x0 0x100000>;
+                       interrupts-extended = <&cpu0_intc 7>,
+                                             <&cpu1_intc 7>,
+                                             <&cpu2_intc 7>,
+                                             <&cpu3_intc 7>;
+               };
+
+               l2_cache: cache-controller@200000 {
+                       compatible = "andestech,qilai-ax45mp-cache",
+                                    "andestech,ax45mp-cache", "cache";
+                       reg = <0x0 0x00200000 0x0 0x100000>;
+                       interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
+                       cache-line-size = <64>;
+                       cache-level = <2>;
+                       cache-sets = <2048>;
+                       cache-size = <0x200000>;
+                       cache-unified;
+               };
+
+               plic_sw: interrupt-controller@400000 {
+                       compatible = "andestech,qilai-plicsw",
+                                    "andestech,plicsw";
+                       reg = <0x0 0x00400000 0x0 0x400000>;
+                       interrupts-extended = <&cpu0_intc 3>,
+                                             <&cpu1_intc 3>,
+                                             <&cpu2_intc 3>,
+                                             <&cpu3_intc 3>;
+               };
+
+               plic: interrupt-controller@2000000 {
+                       compatible = "andestech,qilai-plic",
+                                    "andestech,nceplic100";
+                       reg = <0x0 0x02000000 0x0 0x2000000>;
+                       #address-cells = <0>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>,
+                                             <&cpu1_intc 11>, <&cpu1_intc 9>,
+                                             <&cpu2_intc 11>, <&cpu2_intc 9>,
+                                             <&cpu3_intc 11>, <&cpu3_intc 9>;
+                       riscv,ndev = <71>;
+               };
+
+               uart0: serial@30300000 {
+                       compatible = "andestech,uart16550", "ns16550a";
+                       reg = <0x0 0x30300000 0x0 0x100000>;
+                       interrupts = <9 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-frequency = <50000000>;
+                       reg-offset = <32>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       no-loopback-test;
+               };
+       };
+};
index 900a50526d77199930b30c6c2db1a859b30eecb8..06731b8c7bc3bb82f5b969e7071bfdedf898c359 100644 (file)
                compatible = "pwm-leds";
 
                led-d1 {
-                       pwms = <&pwm0 0 7812500 PWM_POLARITY_INVERTED>;
-                       active-low;
+                       pwms = <&pwm0 0 7812500 0>;
                        color = <LED_COLOR_ID_GREEN>;
                        max-brightness = <255>;
                        label = "d1";
                };
 
                led-d2 {
-                       pwms = <&pwm0 1 7812500 PWM_POLARITY_INVERTED>;
-                       active-low;
+                       pwms = <&pwm0 1 7812500 0>;
                        color = <LED_COLOR_ID_GREEN>;
                        max-brightness = <255>;
                        label = "d2";
                };
 
                led-d3 {
-                       pwms = <&pwm0 2 7812500 PWM_POLARITY_INVERTED>;
-                       active-low;
+                       pwms = <&pwm0 2 7812500 0>;
                        color = <LED_COLOR_ID_GREEN>;
                        max-brightness = <255>;
                        label = "d3";
                };
 
                led-d4 {
-                       pwms = <&pwm0 3 7812500 PWM_POLARITY_INVERTED>;
-                       active-low;
+                       pwms = <&pwm0 3 7812500 0>;
                        color = <LED_COLOR_ID_GREEN>;
                        max-brightness = <255>;
                        label = "d4";
index 72b87b08ab444ef1dc1ed200a6e8b3cbb9bfc73f..03ce2cee4e976fc68ee3eb7bcf5be933ff7d957a 100644 (file)
@@ -51,8 +51,7 @@
                compatible = "pwm-leds";
 
                led-d12 {
-                       pwms = <&pwm0 0 7812500 PWM_POLARITY_INVERTED>;
-                       active-low;
+                       pwms = <&pwm0 0 7812500 0>;
                        color = <LED_COLOR_ID_GREEN>;
                        max-brightness = <255>;
                        label = "d12";
                        label = "d2";
 
                        led-red {
-                               pwms = <&pwm0 2 7812500 PWM_POLARITY_INVERTED>;
-                               active-low;
+                               pwms = <&pwm0 2 7812500 0>;
                                color = <LED_COLOR_ID_RED>;
                        };
 
                        led-green {
-                               pwms = <&pwm0 1 7812500 PWM_POLARITY_INVERTED>;
-                               active-low;
+                               pwms = <&pwm0 1 7812500 0>;
                                color = <LED_COLOR_ID_GREEN>;
                        };
 
                        led-blue {
-                               pwms = <&pwm0 3 7812500 PWM_POLARITY_INVERTED>;
-                               active-low;
+                               pwms = <&pwm0 3 7812500 0>;
                                color = <LED_COLOR_ID_BLUE>;
                        };
                };
index ed06c3609fb2236c1e4c29f4b097adabd5d5fbff..ccdb454986535069528a73da938f5f9a4320dfff 100644 (file)
@@ -7,6 +7,7 @@
 #include <dt-bindings/clock/sophgo,cv1800.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include "cv18xx-reset.h"
 
 / {
        #address-cells = <1>;
                #size-cells = <1>;
                ranges;
 
+               rst: reset-controller@3003000 {
+                       compatible = "sophgo,cv1800b-reset";
+                       reg = <0x3003000 0x1000>;
+                       #reset-cells = <1>;
+               };
+
+               mdio: mdio-mux@3009800 {
+                       compatible = "mdio-mux-mmioreg", "mdio-mux";
+                       reg = <0x3009800 0x4>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       mdio-parent-bus = <&gmac0_mdio>;
+                       mux-mask = <0x80>;
+                       status = "disabled";
+
+                       internal_mdio: mdio@0 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0>;
+
+                               internal_ephy: phy@0 {
+                                       compatible = "ethernet-phy-ieee802.3-c22";
+                                       reg = <1>;
+                               };
+                       };
+
+                       external_mdio: mdio@80 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x80>;
+                       };
+               };
+
                gpio0: gpio@3020000 {
                        compatible = "snps,dw-apb-gpio";
                        reg = <0x3020000 0x1000>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       resets = <&rst RST_GPIO0>;
 
                        porta: gpio-controller@0 {
                                compatible = "snps,dw-apb-gpio-port";
@@ -47,6 +82,7 @@
                        reg = <0x3021000 0x1000>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       resets = <&rst RST_GPIO1>;
 
                        portb: gpio-controller@0 {
                                compatible = "snps,dw-apb-gpio-port";
                        reg = <0x3022000 0x1000>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       resets = <&rst RST_GPIO2>;
 
                        portc: gpio-controller@0 {
                                compatible = "snps,dw-apb-gpio-port";
                        reg = <0x3023000 0x1000>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       resets = <&rst RST_GPIO3>;
 
                        portd: gpio-controller@0 {
                                compatible = "snps,dw-apb-gpio-port";
                        clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C0>;
                        clock-names = "ref", "pclk";
                        interrupts = <SOC_PERIPHERAL_IRQ(33) IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_I2C0>;
                        status = "disabled";
                };
 
                        clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C1>;
                        clock-names = "ref", "pclk";
                        interrupts = <SOC_PERIPHERAL_IRQ(34) IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_I2C1>;
                        status = "disabled";
                };
 
                        clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C2>;
                        clock-names = "ref", "pclk";
                        interrupts = <SOC_PERIPHERAL_IRQ(35) IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_I2C2>;
                        status = "disabled";
                };
 
                        clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C3>;
                        clock-names = "ref", "pclk";
                        interrupts = <SOC_PERIPHERAL_IRQ(36) IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_I2C3>;
                        status = "disabled";
                };
 
                        clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C4>;
                        clock-names = "ref", "pclk";
                        interrupts = <SOC_PERIPHERAL_IRQ(37) IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_I2C4>;
                        status = "disabled";
                };
 
+               gmac0: ethernet@4070000 {
+                       compatible = "sophgo,cv1800b-dwmac", "snps,dwmac-3.70a";
+                       reg = <0x04070000 0x10000>;
+                       clocks = <&clk CLK_AXI4_ETH0>, <&clk CLK_ETH0_500M>;
+                       clock-names = "stmmaceth", "ptp_ref";
+                       interrupts = <SOC_PERIPHERAL_IRQ(15) IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq";
+                       phy-handle = <&internal_ephy>;
+                       phy-mode = "internal";
+                       resets = <&rst RST_ETH0>;
+                       reset-names = "stmmaceth";
+                       rx-fifo-depth = <8192>;
+                       tx-fifo-depth = <8192>;
+                       snps,multicast-filter-bins = <0>;
+                       snps,perfect-filter-entries = <1>;
+                       snps,aal;
+                       snps,txpbl = <8>;
+                       snps,rxpbl = <8>;
+                       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_mdio: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       gmac0_mtl_rx_setup: rx-queues-config {
+                               snps,rx-queues-to-use = <1>;
+                               queue0 {};
+                       };
+
+                       gmac0_mtl_tx_setup: tx-queues-config {
+                               snps,tx-queues-to-use = <1>;
+                               queue0 {};
+                       };
+
+                       gmac0_stmmac_axi_setup: stmmac-axi-config {
+                               snps,blen = <16 8 4 0 0 0 0>;
+                               snps,rd_osr_lmt = <2>;
+                               snps,wr_osr_lmt = <1>;
+                       };
+               };
+
                uart0: serial@4140000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x04140000 0x100>;
                        clock-names = "baudclk", "apb_pclk";
                        reg-shift = <2>;
                        reg-io-width = <4>;
+                       resets = <&rst RST_UART0>;
                        status = "disabled";
                };
 
                        clock-names = "baudclk", "apb_pclk";
                        reg-shift = <2>;
                        reg-io-width = <4>;
+                       resets = <&rst RST_UART1>;
                        status = "disabled";
                };
 
                        clock-names = "baudclk", "apb_pclk";
                        reg-shift = <2>;
                        reg-io-width = <4>;
+                       resets = <&rst RST_UART2>;
                        status = "disabled";
                };
 
                        clock-names = "baudclk", "apb_pclk";
                        reg-shift = <2>;
                        reg-io-width = <4>;
+                       resets = <&rst RST_UART3>;
                        status = "disabled";
                };
 
                        clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI0>;
                        clock-names = "ssi_clk", "pclk";
                        interrupts = <SOC_PERIPHERAL_IRQ(38) IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_SPI0>;
                        status = "disabled";
                };
 
                        clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI1>;
                        clock-names = "ssi_clk", "pclk";
                        interrupts = <SOC_PERIPHERAL_IRQ(39) IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_SPI1>;
                        status = "disabled";
                };
 
                        clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI2>;
                        clock-names = "ssi_clk", "pclk";
                        interrupts = <SOC_PERIPHERAL_IRQ(40) IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_SPI2>;
                        status = "disabled";
                };
 
                        clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI3>;
                        clock-names = "ssi_clk", "pclk";
                        interrupts = <SOC_PERIPHERAL_IRQ(41) IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_SPI3>;
                        status = "disabled";
                };
 
                        clock-names = "baudclk", "apb_pclk";
                        reg-shift = <2>;
                        reg-io-width = <4>;
+                       resets = <&rst RST_UART4>;
                        status = "disabled";
                };
 
                        snps,data-width = <2>;
                        status = "disabled";
                };
+
+               rtc@5025000 {
+                       compatible = "sophgo,cv1800b-rtc", "syscon";
+                       reg = <0x5025000 0x2000>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(1) IRQ_TYPE_LEVEL_HIGH>,
+                                    <SOC_PERIPHERAL_IRQ(2) IRQ_TYPE_LEVEL_HIGH>,
+                                    <SOC_PERIPHERAL_IRQ(3) IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "alarm", "longpress", "vbat";
+                       clocks = <&clk CLK_RTC_25M>,
+                                <&clk CLK_SRC_RTC_SYS_0>;
+                       clock-names = "rtc", "mcu";
+               };
        };
 };
index 26b57e15adc123281a990f142ccef30bc3611ea8..4a5835fa9e96f881a65c11208369705a3317ea63 100644 (file)
        non-removable;
 };
 
+&gmac0 {
+       status = "okay";
+};
+
+&mdio {
+       status = "okay";
+};
+
 &sdhci0 {
        status = "okay";
        bus-width = <4>;
diff --git a/src/riscv/sophgo/cv18xx-reset.h b/src/riscv/sophgo/cv18xx-reset.h
new file mode 100644 (file)
index 0000000..7e7c5ca
--- /dev/null
@@ -0,0 +1,98 @@
+/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
+/*
+ * Copyright (C) 2025 Inochi Amaoto <inochiama@outlook.com>
+ */
+
+#ifndef _SOPHGO_CV18XX_RESET
+#define _SOPHGO_CV18XX_RESET
+
+#define RST_DDR                                2
+#define RST_H264C                      3
+#define RST_JPEG                       4
+#define RST_H265C                      5
+#define RST_VIPSYS                     6
+#define RST_TDMA                       7
+#define RST_TPU                                8
+#define RST_TPUSYS                     9
+#define RST_USB                                11
+#define RST_ETH0                       12
+#define RST_ETH1                       13
+#define RST_NAND                       14
+#define RST_EMMC                       15
+#define RST_SD0                                16
+#define RST_SDMA                       18
+#define RST_I2S0                       19
+#define RST_I2S1                       20
+#define RST_I2S2                       21
+#define RST_I2S3                       22
+#define RST_UART0                      23
+#define RST_UART1                      24
+#define RST_UART2                      25
+#define RST_UART3                      26
+#define RST_I2C0                       27
+#define RST_I2C1                       28
+#define RST_I2C2                       29
+#define RST_I2C3                       30
+#define RST_I2C4                       31
+#define RST_PWM0                       32
+#define RST_PWM1                       33
+#define RST_PWM2                       34
+#define RST_PWM3                       35
+#define RST_SPI0                       40
+#define RST_SPI1                       41
+#define RST_SPI2                       42
+#define RST_SPI3                       43
+#define RST_GPIO0                      44
+#define RST_GPIO1                      45
+#define RST_GPIO2                      46
+#define RST_EFUSE                      47
+#define RST_WDT                                48
+#define RST_AHB_ROM                    49
+#define RST_SPIC                       50
+#define RST_TEMPSEN                    51
+#define RST_SARADC                     52
+#define RST_COMBO_PHY0                 58
+#define RST_SPI_NAND                   61
+#define RST_SE                         62
+#define RST_UART4                      74
+#define RST_GPIO3                      75
+#define RST_SYSTEM                     76
+#define RST_TIMER                      77
+#define RST_TIMER0                     78
+#define RST_TIMER1                     79
+#define RST_TIMER2                     80
+#define RST_TIMER3                     81
+#define RST_TIMER4                     82
+#define RST_TIMER5                     83
+#define RST_TIMER6                     84
+#define RST_TIMER7                     85
+#define RST_WGN0                       86
+#define RST_WGN1                       87
+#define RST_WGN2                       88
+#define RST_KEYSCAN                    89
+#define RST_AUDDAC                     91
+#define RST_AUDDAC_APB                 92
+#define RST_AUDADC                     93
+#define RST_VCSYS                      95
+#define RST_ETHPHY                     96
+#define RST_ETHPHY_APB                 97
+#define RST_AUDSRC                     98
+#define RST_VIP_CAM0                   99
+#define RST_WDT1                       100
+#define RST_WDT2                       101
+#define RST_AUTOCLEAR_CPUCORE0         256
+#define RST_AUTOCLEAR_CPUCORE1         257
+#define RST_AUTOCLEAR_CPUCORE2         258
+#define RST_AUTOCLEAR_CPUCORE3         259
+#define RST_AUTOCLEAR_CPUSYS0          260
+#define RST_AUTOCLEAR_CPUSYS1          261
+#define RST_AUTOCLEAR_CPUSYS2          262
+#define RST_CPUCORE0                   288
+#define RST_CPUCORE1                   289
+#define RST_CPUCORE2                   290
+#define RST_CPUCORE3                   291
+#define RST_CPUSYS0                    292
+#define RST_CPUSYS1                    293
+#define RST_CPUSYS2                    294
+
+#endif /* _SOPHGO_CV18XX_RESET */
index b136b6c4128c054df63d780e2c05445655a6aaeb..77ded53042728277e9084ffc80d054a975b25368 100644 (file)
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <0>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <1>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <2>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <3>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <4>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <5>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <6>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <7>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <8>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <9>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <10>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <11>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <12>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <13>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <14>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <15>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <16>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <17>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <18>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <19>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <20>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <21>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <22>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <23>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <24>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <25>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <26>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <27>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <28>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <29>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <30>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <31>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <32>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <33>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <34>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <35>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <36>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <37>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <38>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <39>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <40>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <41>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <42>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <43>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <44>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <45>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <46>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <47>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <48>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <49>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <50>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <51>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <52>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <53>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <54>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <55>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <56>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <57>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <58>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <59>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <60>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <61>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <62>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
                        riscv,isa = "rv64imafdc";
                        riscv,isa-base = "rv64i";
                        riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
-                                              "zicntr", "zicsr", "zifencei",
-                                              "zihpm";
+                                              "ziccrse", "zicntr", "zicsr",
+                                              "zifencei", "zihpm", "zfh",
+                                              "xtheadvector";
+                       thead,vlenb = <16>;
                        reg = <63>;
                        i-cache-block-size = <64>;
                        i-cache-size = <65536>;
diff --git a/src/riscv/sophgo/sg2042-evb-v1.dts b/src/riscv/sophgo/sg2042-evb-v1.dts
new file mode 100644 (file)
index 0000000..3320bc1
--- /dev/null
@@ -0,0 +1,245 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+/*
+ * Copyright (C) 2025 Sophgo Technology Inc. All rights reserved.
+ */
+
+#include "sg2042.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Sophgo SG2042 EVB V1.X";
+       compatible = "sophgo,sg2042-evb-v1", "sophgo,sg2042";
+
+       chosen {
+               stdout-path = "serial0";
+       };
+
+       gpio-power {
+               compatible = "gpio-keys";
+
+               key-power {
+                       label = "Power Key";
+                       linux,code = <KEY_POWER>;
+                       gpios = <&port0a 22 GPIO_ACTIVE_HIGH>;
+                       linux,input-type = <EV_KEY>;
+                       debounce-interval = <100>;
+               };
+       };
+
+       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>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&mcu 0>;
+
+                       trips {
+                               soc_active1: soc-active1 {
+                                       temperature = <30000>;
+                                       hysteresis = <8000>;
+                                       type = "active";
+                               };
+
+                               soc_active2: soc-active2 {
+                                       temperature = <58000>;
+                                       hysteresis = <12000>;
+                                       type = "active";
+                               };
+
+                               soc_active3: soc-active3 {
+                                       temperature = <70000>;
+                                       hysteresis = <10000>;
+                                       type = "active";
+                               };
+
+                               soc_hot: soc-hot {
+                                       temperature = <80000>;
+                                       hysteresis = <5000>;
+                                       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 {
+                       polling-delay-passive = <1000>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&mcu 1>;
+
+                       trips {
+                               board_active: board-active {
+                                       temperature = <75000>;
+                                       hysteresis = <8000>;
+                                       type = "active";
+                               };
+                       };
+
+                       cooling-maps {
+                               map4 {
+                                       trip = <&board_active>;
+                                       cooling-device = <&pwmfan 3 4>;
+                               };
+                       };
+               };
+       };
+};
+
+&cgi_main {
+       clock-frequency = <25000000>;
+};
+
+&cgi_dpll0 {
+       clock-frequency = <25000000>;
+};
+
+&cgi_dpll1 {
+       clock-frequency = <25000000>;
+};
+
+&emmc {
+       pinctrl-0 = <&emmc_cfg>;
+       pinctrl-names = "default";
+       bus-width = <4>;
+       no-sdio;
+       no-sd;
+       non-removable;
+       wp-inverted;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-0 = <&i2c1_cfg>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       mcu: syscon@17 {
+               compatible = "sophgo,sg2042-hwmon-mcu";
+               reg = <0x17>;
+               #thermal-sensor-cells = <1>;
+       };
+};
+
+&gmac0 {
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+
+       mdio {
+               phy0: phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       reset-gpios = <&port0a 27 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <100000>;
+                       reset-deassert-us = <100000>;
+               };
+       };
+};
+
+&pinctrl {
+       emmc_cfg: sdhci-emmc-cfg {
+               sdhci-emmc-wp-pins {
+                       pinmux = <PINMUX(PIN_EMMC_WP, 0)>;
+                       bias-disable;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-disable;
+               };
+
+               sdhci-emmc-cd-pins {
+                       pinmux = <PINMUX(PIN_EMMC_CD, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+
+               sdhci-emmc-rst-pwr-pins {
+                       pinmux = <PINMUX(PIN_EMMC_RST, 0)>,
+                                <PINMUX(PIN_EMMC_PWR_EN, 0)>;
+                       bias-disable;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-disable;
+               };
+       };
+
+       i2c1_cfg: i2c1-cfg {
+               i2c1-pins {
+                       pinmux = <PINMUX(PIN_IIC1_SDA, 0)>,
+                                <PINMUX(PIN_IIC1_SCL, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+       };
+
+       sd_cfg: sdhci-sd-cfg {
+               sdhci-sd-cd-wp-pins {
+                       pinmux = <PINMUX(PIN_SDIO_CD, 0)>,
+                                <PINMUX(PIN_SDIO_WP, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+
+               sdhci-sd-rst-pwr-pins {
+                       pinmux = <PINMUX(PIN_SDIO_RST, 0)>,
+                                <PINMUX(PIN_SDIO_PWR_EN, 0)>;
+                       bias-disable;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-disable;
+               };
+       };
+
+       uart0_cfg: uart0-cfg {
+               uart0-rx-pins {
+                       pinmux = <PINMUX(PIN_UART0_TX, 0)>,
+                                <PINMUX(PIN_UART0_RX, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+       };
+};
+
+&sd {
+       pinctrl-0 = <&sd_cfg>;
+       pinctrl-names = "default";
+       bus-width = <4>;
+       no-sdio;
+       no-mmc;
+       wp-inverted;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-0 = <&uart0_cfg>;
+       pinctrl-names = "default";
+       status = "okay";
+};
diff --git a/src/riscv/sophgo/sg2042-evb-v2.dts b/src/riscv/sophgo/sg2042-evb-v2.dts
new file mode 100644 (file)
index 0000000..46980e4
--- /dev/null
@@ -0,0 +1,233 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+/*
+ * Copyright (C) 2025 Sophgo Technology Inc. All rights reserved.
+ */
+
+#include "sg2042.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Sophgo SG2042 EVB V2.0";
+       compatible = "sophgo,sg2042-evb-v2", "sophgo,sg2042";
+
+       chosen {
+               stdout-path = "serial0";
+       };
+
+       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>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&mcu 0>;
+
+                       trips {
+                               soc_active1: soc-active1 {
+                                       temperature = <30000>;
+                                       hysteresis = <8000>;
+                                       type = "active";
+                               };
+
+                               soc_active2: soc-active2 {
+                                       temperature = <58000>;
+                                       hysteresis = <12000>;
+                                       type = "active";
+                               };
+
+                               soc_active3: soc-active3 {
+                                       temperature = <70000>;
+                                       hysteresis = <10000>;
+                                       type = "active";
+                               };
+
+                               soc_hot: soc-hot {
+                                       temperature = <80000>;
+                                       hysteresis = <5000>;
+                                       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 {
+                       polling-delay-passive = <1000>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&mcu 1>;
+
+                       trips {
+                               board_active: board-active {
+                                       temperature = <75000>;
+                                       hysteresis = <8000>;
+                                       type = "active";
+                               };
+                       };
+
+                       cooling-maps {
+                               map4 {
+                                       trip = <&board_active>;
+                                       cooling-device = <&pwmfan 3 4>;
+                               };
+                       };
+               };
+       };
+};
+
+&cgi_main {
+       clock-frequency = <25000000>;
+};
+
+&cgi_dpll0 {
+       clock-frequency = <25000000>;
+};
+
+&cgi_dpll1 {
+       clock-frequency = <25000000>;
+};
+
+&emmc {
+       pinctrl-0 = <&emmc_cfg>;
+       pinctrl-names = "default";
+       bus-width = <4>;
+       no-sdio;
+       no-sd;
+       non-removable;
+       wp-inverted;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-0 = <&i2c1_cfg>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       mcu: syscon@17 {
+               compatible = "sophgo,sg2042-hwmon-mcu";
+               reg = <0x17>;
+               #thermal-sensor-cells = <1>;
+       };
+};
+
+&gmac0 {
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+
+       mdio {
+               phy0: phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       reset-gpios = <&port0a 27 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <100000>;
+                       reset-deassert-us = <100000>;
+               };
+       };
+};
+
+&pinctrl {
+       emmc_cfg: sdhci-emmc-cfg {
+               sdhci-emmc-wp-pins {
+                       pinmux = <PINMUX(PIN_EMMC_WP, 0)>;
+                       bias-disable;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-disable;
+               };
+
+               sdhci-emmc-cd-pins {
+                       pinmux = <PINMUX(PIN_EMMC_CD, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+
+               sdhci-emmc-rst-pwr-pins {
+                       pinmux = <PINMUX(PIN_EMMC_RST, 0)>,
+                                <PINMUX(PIN_EMMC_PWR_EN, 0)>;
+                       bias-disable;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-disable;
+               };
+       };
+
+       i2c1_cfg: i2c1-cfg {
+               i2c1-pins {
+                       pinmux = <PINMUX(PIN_IIC1_SDA, 0)>,
+                                <PINMUX(PIN_IIC1_SCL, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+       };
+
+       sd_cfg: sdhci-sd-cfg {
+               sdhci-sd-cd-wp-pins {
+                       pinmux = <PINMUX(PIN_SDIO_CD, 0)>,
+                                <PINMUX(PIN_SDIO_WP, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+
+               sdhci-sd-rst-pwr-pins {
+                       pinmux = <PINMUX(PIN_SDIO_RST, 0)>,
+                                <PINMUX(PIN_SDIO_PWR_EN, 0)>;
+                       bias-disable;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-disable;
+               };
+       };
+
+       uart0_cfg: uart0-cfg {
+               uart0-rx-pins {
+                       pinmux = <PINMUX(PIN_UART0_TX, 0)>,
+                                <PINMUX(PIN_UART0_RX, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+       };
+};
+
+&sd {
+       pinctrl-0 = <&sd_cfg>;
+       pinctrl-names = "default";
+       bus-width = <4>;
+       no-sdio;
+       no-mmc;
+       wp-inverted;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-0 = <&uart0_cfg>;
+       pinctrl-names = "default";
+       status = "okay";
+};
index 85636d1798f11804546ed8606595ace1b4cb2a2f..b3e4d3c18fdcf94c2294a56ed6ad866fc59a6adb 100644 (file)
                        status = "disabled";
                };
 
+               gmac0: ethernet@7040026000 {
+                       compatible = "sophgo,sg2042-dwmac", "snps,dwmac-5.00a";
+                       reg = <0x70 0x40026000 0x0 0x4000>;
+                       clocks = <&clkgen GATE_CLK_AXI_ETH0>,
+                                <&clkgen GATE_CLK_PTP_REF_I_ETH0>,
+                                <&clkgen GATE_CLK_TX_ETH0>;
+                       clock-names = "stmmaceth", "ptp_ref", "tx";
+                       dma-noncoherent;
+                       interrupt-parent = <&intc>;
+                       interrupts = <132 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq";
+                       resets = <&rstgen RST_ETH0>;
+                       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";
+
+                       mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       gmac0_mtl_rx_setup: rx-queues-config {
+                               snps,rx-queues-to-use = <8>;
+                               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>;
+                       };
+               };
+
                emmc: mmc@704002a000 {
                        compatible = "sophgo,sg2042-dwcmshc";
                        reg = <0x70 0x4002a000 0x0 0x1000>;
index 2a4267078ce6b46aa1c7966fb1f04cbad7f0a4a5..523799a1a8b821dceb476e8bdc16e5c372e04d09 100644 (file)
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu0_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu1_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu2_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu3_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu4_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu5_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu6_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu7_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu8_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu9_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu10_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu11_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu12_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu13_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu14_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu15_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu16_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu17_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu18_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu19_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu20_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu21_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu22_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu23_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu24_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu25_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu26_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu27_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu28_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu29_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu30_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu31_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu32_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu33_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu34_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu35_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu36_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu37_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu38_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu39_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu40_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu41_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu42_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu43_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu44_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu45_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu46_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu47_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu48_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu49_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu50_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu51_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu52_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu53_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu54_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu55_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu56_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu57_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu58_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu59_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu60_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu61_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu62_intc: interrupt-controller {
                                               "zawrs", "zba", "zbb", "zbc",
                                               "zbs", "zca", "zcb", "zcd",
                                               "zfa", "zfbfmin", "zfh", "zfhmin",
-                                              "zicbom", "zicbop", "zicboz",
+                                              "zicbom", "zicbop", "zicboz", "ziccrse",
                                               "zicntr", "zicond","zicsr", "zifencei",
                                               "zihintntl", "zihintpause", "zihpm",
                                               "zvfbfmin", "zvfbfwma", "zvfh",
                                               "zvfhmin";
                        riscv,cbom-block-size = <64>;
+                       riscv,cbop-block-size = <64>;
                        riscv,cboz-block-size = <64>;
 
                        cpu63_intc: interrupt-controller {
                };
        };
 
+       pmu {
+               compatible = "riscv,pmu";
+               riscv,event-to-mhpmevent =
+                       <0x00003 0x00000000 0x00000010>,
+                       <0x00004 0x00000000 0x00000011>,
+                       <0x00005 0x00000000 0x00000007>,
+                       <0x00006 0x00000000 0x00000006>,
+                       <0x00008 0x00000000 0x00000027>,
+                       <0x00009 0x00000000 0x00000028>,
+                       <0x10000 0x00000000 0x0000000c>,
+                       <0x10001 0x00000000 0x0000000d>,
+                       <0x10002 0x00000000 0x0000000e>,
+                       <0x10003 0x00000000 0x0000000f>,
+                       <0x10008 0x00000000 0x00000001>,
+                       <0x10009 0x00000000 0x00000002>,
+                       <0x10010 0x00000000 0x00000010>,
+                       <0x10011 0x00000000 0x00000011>,
+                       <0x10012 0x00000000 0x00000012>,
+                       <0x10013 0x00000000 0x00000013>,
+                       <0x10019 0x00000000 0x00000004>,
+                       <0x10021 0x00000000 0x00000003>,
+                       <0x10030 0x00000000 0x0000001c>,
+                       <0x10031 0x00000000 0x0000001b>;
+               riscv,event-to-mhpmcounters =
+                       <0x00003 0x00003 0xfffffff8>,
+                       <0x00004 0x00004 0xfffffff8>,
+                       <0x00005 0x00005 0xfffffff8>,
+                       <0x00006 0x00006 0xfffffff8>,
+                       <0x00007 0x00007 0xfffffff8>,
+                       <0x00008 0x00008 0xfffffff8>,
+                       <0x00009 0x00009 0xfffffff8>,
+                       <0x0000a 0x0000a 0xfffffff8>,
+                       <0x10000 0x10000 0xfffffff8>,
+                       <0x10001 0x10001 0xfffffff8>,
+                       <0x10002 0x10002 0xfffffff8>,
+                       <0x10003 0x10003 0xfffffff8>,
+                       <0x10008 0x10008 0xfffffff8>,
+                       <0x10009 0x10009 0xfffffff8>,
+                       <0x10010 0x10010 0xfffffff8>,
+                       <0x10011 0x10011 0xfffffff8>,
+                       <0x10012 0x10012 0xfffffff8>,
+                       <0x10013 0x10013 0xfffffff8>,
+                       <0x10019 0x10019 0xfffffff8>,
+                       <0x10021 0x10021 0xfffffff8>,
+                       <0x10030 0x10030 0xfffffff8>,
+                       <0x10031 0x10031 0xfffffff8>;
+               riscv,raw-event-to-mhpmcounters =
+                       <0x00000000 0x00000001 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000002 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000003 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000004 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000005 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000006 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000007 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000008 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000009 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000000a 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000000b 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000000c 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000000d 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000000e 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000000f 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000010 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000011 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000012 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000013 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000014 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000015 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000016 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000017 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000018 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000019 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000001a 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000001b 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000001c 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000001d 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000001e 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000001f 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000020 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000021 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000022 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000023 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000024 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000025 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000026 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000027 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000028 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x00000029 0xffffffff 0xffffffff 0xfffffff8>,
+                       <0x00000000 0x0000002a 0xffffffff 0xffffffff 0xfffffff8>;
+       };
+
        soc {
                intc: interrupt-controller@6d40000000 {
                        compatible = "sophgo,sg2044-plic", "thead,c900-plic";
index 54cdf4239d5f67eefa4b7a1d99f74bac1ecd26f6..fed3d9a384a00ccfc91dfa1531f799aa397a5dde 100644 (file)
        clock-frequency = <25000000>;
 };
 
+&emmc {
+       bus-width = <4>;
+       no-sdio;
+       no-sd;
+       non-removable;
+       wp-inverted;
+       status = "okay";
+};
+
+&gmac0 {
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+
+       mdio {
+               phy0: phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       reset-gpios = <&porta 28 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <10000>;
+                       reset-deassert-us = <10000>;
+                       rx-internal-delay-ps = <2050>;
+               };
+       };
+};
+
+&i2c1 {
+       status = "okay";
+
+       mcu: syscon@17 {
+               compatible = "sophgo,sg2044-hwmon-mcu", "sophgo,sg2042-hwmon-mcu";
+               reg = <0x17>;
+               #thermal-sensor-cells = <1>;
+       };
+};
+
+&msi {
+       status = "okay";
+};
+
+&pcie0 {
+       bus-range = <0x00 0xff>;
+       linux,pci-domain = <1>;
+       status = "okay";
+};
+
+&pcie1 {
+       bus-range = <0x00 0xff>;
+       linux,pci-domain = <0>;
+       status = "okay";
+};
+
+&pcie2 {
+       bus-range = <0x00 0xff>;
+       linux,pci-domain = <3>;
+       status = "okay";
+};
+
+&pcie3 {
+       bus-range = <0x00 0xff>;
+       linux,pci-domain = <2>;
+       status = "okay";
+};
+
+&pcie4 {
+       bus-range = <0x00 0xff>;
+       linux,pci-domain = <4>;
+       status = "okay";
+};
+
+&pwm {
+       status = "okay";
+};
+
+&sd {
+       bus-width = <4>;
+       no-sdio;
+       no-mmc;
+       wp-inverted;
+       status = "okay";
+};
+
+&uart0 {
+       /* for firmware */
+       status = "reserved";
+};
+
 &uart1 {
        status = "okay";
 };
index d67e45f77d6e2ddef9f6a50569e08db31312fdd9..6ec955744b0cbfa5672803db41a782efea41eee9 100644 (file)
@@ -3,7 +3,11 @@
  * Copyright (C) 2025 Inochi Amaoto <inochiama@gmail.com>
  */
 
+#include <dt-bindings/clock/sophgo,sg2044-pll.h>
+#include <dt-bindings/clock/sophgo,sg2044-clk.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-sg2044.h>
 
 #include "sg2044-cpus.dtsi"
 #include "sg2044-reset.h"
                #size-cells = <2>;
                ranges;
 
+               pcie0: pcie@6c00000000 {
+                       compatible = "sophgo,sg2044-pcie";
+                       reg = <0x6c 0x00000000 0x0 0x00001000>,
+                             <0x6c 0x00300000 0x0 0x00004000>,
+                             <0x48 0x00000000 0x0 0x00001000>,
+                             <0x6c 0x000c0000 0x0 0x00001000>;
+                       reg-names = "dbi", "atu", "config", "app";
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       #interrupt-cells = <1>;
+                       clocks = <&clk CLK_GATE_PCIE_1G>;
+                       clock-names = "core";
+                       device_type = "pci";
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie_intc0 0>,
+                                       <0 0 0 2 &pcie_intc0 1>,
+                                       <0 0 0 3 &pcie_intc0 2>,
+                                       <0 0 0 4 &pcie_intc0 3>;
+                       msi-parent = <&msi>;
+                       ranges = <0x01000000 0x0  0x00000000  0x48 0x10000000  0x0 0x00200000>,
+                                <0x42000000 0x0  0x10000000  0x0  0x10000000  0x0 0x04000000>,
+                                <0x02000000 0x0  0x14000000  0x0  0x14000000  0x0 0x04000000>,
+                                <0x43000000 0x4a 0x00000000  0x4a 0x00000000  0x2 0x00000000>,
+                                <0x03000000 0x49 0x00000000  0x49 0x00000000  0x1 0x00000000>;
+                       status = "disabled";
+
+                       pcie_intc0: interrupt-controller {
+                               #address-cells = <0>;
+                               #interrupt-cells = <1>;
+                               interrupt-parent = <&intc>;
+                               interrupts = <65 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                       };
+               };
+
+               pcie1: pcie@6c00400000 {
+                       compatible = "sophgo,sg2044-pcie";
+                       reg = <0x6c 0x00400000 0x0 0x00001000>,
+                             <0x6c 0x00700000 0x0 0x00004000>,
+                             <0x40 0x00000000 0x0 0x00001000>,
+                             <0x6c 0x00780000 0x0 0x00001000>;
+                       reg-names = "dbi", "atu", "config", "app";
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       #interrupt-cells = <1>;
+                       clocks = <&clk CLK_GATE_PCIE_1G>;
+                       clock-names = "core";
+                       device_type = "pci";
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie_intc1 0>,
+                                       <0 0 0 2 &pcie_intc1 1>,
+                                       <0 0 0 3 &pcie_intc1 2>,
+                                       <0 0 0 4 &pcie_intc1 3>;
+                       msi-parent = <&msi>;
+                       ranges = <0x01000000 0x0  0x00000000  0x40 0x10000000  0x0 0x00200000>,
+                                <0x42000000 0x0  0x00000000  0x0  0x00000000  0x0 0x04000000>,
+                                <0x02000000 0x0  0x04000000  0x0  0x04000000  0x0 0x04000000>,
+                                <0x43000000 0x42 0x00000000  0x42 0x00000000  0x2 0x00000000>,
+                                <0x03000000 0x41 0x00000000  0x41 0x00000000  0x1 0x00000000>;
+                       status = "disabled";
+
+                       pcie_intc1: interrupt-controller {
+                               #address-cells = <0>;
+                               #interrupt-cells = <1>;
+                               interrupt-parent = <&intc>;
+                               interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                       };
+               };
+
+               pcie2: pcie@6c04000000 {
+                       compatible = "sophgo,sg2044-pcie";
+                       reg = <0x6c 0x04000000 0x0 0x00001000>,
+                             <0x6c 0x04300000 0x0 0x00004000>,
+                             <0x58 0x00000000 0x0 0x00001000>,
+                             <0x6c 0x040c0000 0x0 0x00001000>;
+                       reg-names = "dbi", "atu", "config", "app";
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       #interrupt-cells = <1>;
+                       clocks = <&clk CLK_GATE_PCIE_1G>;
+                       clock-names = "core";
+                       device_type = "pci";
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie_intc2 0>,
+                                       <0 0 0 2 &pcie_intc2 1>,
+                                       <0 0 0 3 &pcie_intc2 2>,
+                                       <0 0 0 4 &pcie_intc2 3>;
+                       msi-parent = <&msi>;
+                       ranges = <0x01000000 0x0  0x00000000  0x58 0x10000000  0x0 0x00200000>,
+                                <0x42000000 0x0  0x30000000  0x0  0x30000000  0x0 0x04000000>,
+                                <0x02000000 0x0  0x34000000  0x0  0x34000000  0x0 0x04000000>,
+                                <0x43000000 0x5a 0x00000000  0x5a 0x00000000  0x2 0x00000000>,
+                                <0x03000000 0x59 0x00000000  0x59 0x00000000  0x1 0x00000000>;
+                       status = "disabled";
+
+                       pcie_intc2: interrupt-controller {
+                               #address-cells = <0>;
+                               #interrupt-cells = <1>;
+                               interrupt-parent = <&intc>;
+                               interrupts = <74 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                       };
+               };
+
+               pcie3: pcie@6c04400000 {
+                       compatible = "sophgo,sg2044-pcie";
+                       reg = <0x6c 0x04400000 0x0 0x00001000>,
+                             <0x6c 0x04700000 0x0 0x00004000>,
+                             <0x50 0x00000000 0x0 0x00001000>,
+                             <0x6c 0x04780000 0x0 0x00001000>;
+                       reg-names = "dbi", "atu", "config", "app";
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       #interrupt-cells = <1>;
+                       clocks = <&clk CLK_GATE_PCIE_1G>;
+                       clock-names = "core";
+                       device_type = "pci";
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie_intc3 0>,
+                                       <0 0 0 2 &pcie_intc3 1>,
+                                       <0 0 0 3 &pcie_intc3 2>,
+                                       <0 0 0 4 &pcie_intc3 3>;
+                       msi-parent = <&msi>;
+                       ranges = <0x01000000 0x0  0x00000000  0x50 0x10000000  0x0 0x00200000>,
+                                <0x42000000 0x0  0x20000000  0x0  0x20000000  0x0 0x04000000>,
+                                <0x02000000 0x0  0x24000000  0x0  0x24000000  0x0 0x04000000>,
+                                <0x43000000 0x52 0x00000000  0x52 0x00000000  0x2 0x00000000>,
+                                <0x03000000 0x51 0x00000000  0x51 0x00000000  0x1 0x00000000>;
+                       status = "disabled";
+
+                       pcie_intc3: interrupt-controller {
+                               #address-cells = <0>;
+                               #interrupt-cells = <1>;
+                               interrupt-parent = <&intc>;
+                               interrupts = <73 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                       };
+               };
+
+               pcie4: pcie@6c08400000 {
+                       compatible = "sophgo,sg2044-pcie";
+                       reg = <0x6c 0x08400000 0x0 0x00001000>,
+                             <0x6c 0x08700000 0x0 0x00004000>,
+                             <0x60 0x00000000 0x0 0x00001000>,
+                             <0x6c 0x08780000 0x0 0x00001000>;
+                       reg-names = "dbi", "atu", "config", "app";
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       #interrupt-cells = <1>;
+                       clocks = <&clk CLK_GATE_PCIE_1G>;
+                       clock-names = "core";
+                       device_type = "pci";
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie_intc4 0>,
+                                       <0 0 0 2 &pcie_intc4 1>,
+                                       <0 0 0 3 &pcie_intc4 2>,
+                                       <0 0 0 4 &pcie_intc4 3>;
+                       msi-parent = <&msi>;
+                       ranges = <0x01000000 0x0  0x00000000  0x60 0x10000000  0x0 0x00200000>,
+                                <0x42000000 0x0  0x40000000  0x0  0x40000000  0x0 0x04000000>,
+                                <0x02000000 0x0  0x44000000  0x0  0x44000000  0x0 0x04000000>,
+                                <0x43000000 0x62 0x00000000  0x62 0x00000000  0x2 0x00000000>,
+                                <0x03000000 0x61 0x00000000  0x61 0x00000000  0x1 0x00000000>;
+                       status = "disabled";
+
+                       pcie_intc4: interrupt-controller {
+                               #address-cells = <0>;
+                               #interrupt-cells = <1>;
+                               interrupt-parent = <&intc>;
+                               interrupts = <125 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                       };
+               };
+
+               msi: msi-controller@6d50000000 {
+                       compatible = "sophgo,sg2044-msi";
+                       reg = <0x6d 0x50000000 0x0 0x800>,
+                             <0x0 0x7ee00000 0x0 0x40>;
+                       reg-names = "clr", "doorbell";
+                       #msi-cells = <0>;
+                       msi-controller;
+                       msi-ranges = <&intc 352 IRQ_TYPE_LEVEL_HIGH 512>;
+                       status = "disabled";
+               };
+
+               spifmc0: spi@7001000000 {
+                       compatible = "sophgo,sg2044-spifmc-nor";
+                       reg = <0x70 0x01000000 0x0 0x4000000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&clk CLK_GATE_AHB_SPIFMC>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <37 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_SPIFMC0>;
+                       status = "disabled";
+               };
+
+               spifmc1: spi@7005000000 {
+                       compatible = "sophgo,sg2044-spifmc-nor";
+                       reg = <0x70 0x05000000 0x0 0x4000000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&clk CLK_GATE_AHB_SPIFMC>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_SPIFMC1>;
+                       status = "disabled";
+               };
+
+               dmac0: dma-controller@7020000000 {
+                       compatible = "snps,axi-dma-1.01a";
+                       reg = <0x70 0x20000000 0x0 0x10000>;
+                       #dma-cells = <1>;
+                       clock-names = "core-clk", "cfgr-clk";
+                       clocks = <&clk CLK_GATE_SYSDMA_AXI>,
+                                <&clk CLK_GATE_SYSDMA_AXI>;
+                       dma-noncoherent;
+                       interrupt-parent = <&intc>;
+                       interrupts = <36 IRQ_TYPE_LEVEL_HIGH>;
+                       dma-channels = <8>;
+                       snps,priority = <0 1 2 3 4 5 6 7>;
+                       snps,block-size = <4096 4096 4096 4096
+                                          4096 4096 4096 4096>;
+                       snps,dma-masters = <2>;
+                       snps,data-width = <2>;
+                       snps,axi-max-burst-len = <4>;
+                       status = "disabled";
+               };
+
                uart0: serial@7030000000 {
                        compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart";
                        reg = <0x70 0x30000000 0x0 0x1000>;
                        clock-frequency = <500000000>;
+                       clocks = <&clk CLK_GATE_UART_500M>,
+                                <&clk CLK_GATE_APB_UART>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupt-parent = <&intc>;
                        interrupts = <41 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart";
                        reg = <0x70 0x30001000 0x0 0x1000>;
                        clock-frequency = <500000000>;
+                       clocks = <&clk CLK_GATE_UART_500M>,
+                                <&clk CLK_GATE_APB_UART>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupt-parent = <&intc>;
                        interrupts = <42 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart";
                        reg = <0x70 0x30002000 0x0 0x1000>;
                        clock-frequency = <500000000>;
+                       clocks = <&clk CLK_GATE_UART_500M>,
+                                <&clk CLK_GATE_APB_UART>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupt-parent = <&intc>;
                        interrupts = <43 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart";
                        reg = <0x70 0x30003000 0x0 0x1000>;
                        clock-frequency = <500000000>;
+                       clocks = <&clk CLK_GATE_UART_500M>,
+                                <&clk CLK_GATE_APB_UART>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupt-parent = <&intc>;
                        interrupts = <44 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        status = "disabled";
                };
 
+               gmac0: ethernet@7030006000 {
+                       compatible = "sophgo,sg2044-dwmac", "snps,dwmac-5.30a";
+                       reg = <0x70 0x30006000 0x0 0x4000>;
+                       clocks = <&clk CLK_GATE_AXI_ETH0>,
+                                <&clk CLK_GATE_PTP_REF_I_ETH0>,
+                                <&clk CLK_GATE_TX_ETH0>;
+                       clock-names = "stmmaceth", "ptp_ref", "tx";
+                       dma-noncoherent;
+                       interrupt-parent = <&intc>;
+                       interrupts = <296 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq";
+                       resets = <&rst RST_ETH0>;
+                       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";
+
+                       mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       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>;
+                       };
+               };
+
+               emmc: mmc@703000a000 {
+                       compatible = "sophgo,sg2044-dwcmshc", "sophgo,sg2042-dwcmshc";
+                       reg = <0x70 0x3000a000 0x0 0x1000>;
+                       clocks = <&clk CLK_GATE_EMMC>,
+                                <&clk CLK_GATE_AXI_EMMC>,
+                                <&clk CLK_GATE_EMMC_100K>;
+                       clock-names = "core", "bus", "timer";
+                       interrupt-parent = <&intc>;
+                       interrupts = <298 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               sd: mmc@703000b000 {
+                       compatible = "sophgo,sg2044-dwcmshc", "sophgo,sg2042-dwcmshc";
+                       reg = <0x70 0x3000b000 0x0 0x1000>;
+                       clocks = <&clk CLK_GATE_SD>,
+                                <&clk CLK_GATE_AXI_SD>,
+                                <&clk CLK_GATE_SD_100K>;
+                       clock-names = "core", "bus", "timer";
+                       interrupt-parent = <&intc>;
+                       interrupts = <300 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               i2c0: i2c@7040005000 {
+                       compatible = "sophgo,sg2044-i2c", "snps,designware-i2c";
+                       reg = <0x70 0x40005000 0x0 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <100000>;
+                       clocks = <&clk CLK_GATE_APB_I2C>;
+                       clock-names = "ref";
+                       interrupt-parent = <&intc>;
+                       interrupts = <31 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_I2C0>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@7040006000 {
+                       compatible = "sophgo,sg2044-i2c", "snps,designware-i2c";
+                       reg = <0x70 0x40006000 0x0 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <100000>;
+                       clocks = <&clk CLK_GATE_APB_I2C>;
+                       clock-names = "ref";
+                       interrupt-parent = <&intc>;
+                       interrupts = <32 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_I2C1>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@7040007000 {
+                       compatible = "sophgo,sg2044-i2c", "snps,designware-i2c";
+                       reg = <0x70 0x40007000 0x0 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <100000>;
+                       clocks = <&clk CLK_GATE_APB_I2C>;
+                       clock-names = "ref";
+                       interrupt-parent = <&intc>;
+                       interrupts = <33 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_I2C2>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@7040008000 {
+                       compatible = "sophgo,sg2044-i2c", "snps,designware-i2c";
+                       reg = <0x70 0x40008000 0x0 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <100000>;
+                       clocks = <&clk CLK_GATE_APB_I2C>;
+                       clock-names = "ref";
+                       interrupt-parent = <&intc>;
+                       interrupts = <34 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&rst RST_I2C3>;
+                       status = "disabled";
+               };
+
+               gpio0: gpio@7040009000 {
+                       compatible = "snps,dw-apb-gpio";
+                       reg = <0x70 0x40009000 0x0 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&clk CLK_GATE_APB_GPIO>,
+                                <&clk CLK_GATE_GPIO_DB>;
+                       clock-names = "bus", "db";
+                       resets = <&rst RST_GPIO0>;
+
+                       porta: gpio-controller@0 {
+                               compatible = "snps,dw-apb-gpio-port";
+                               reg = <0>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               ngpios = <32>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               interrupt-parent = <&intc>;
+                               interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
+               gpio1: gpio@704000a000 {
+                       compatible = "snps,dw-apb-gpio";
+                       reg = <0x70 0x4000a000 0x0 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&clk CLK_GATE_APB_GPIO>,
+                                <&clk CLK_GATE_GPIO_DB>;
+                       clock-names = "bus", "db";
+                       resets = <&rst RST_GPIO1>;
+
+                       portb: gpio-controller@0 {
+                               compatible = "snps,dw-apb-gpio-port";
+                               reg = <0>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               ngpios = <32>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               interrupt-parent = <&intc>;
+                               interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
+               gpio2: gpio@704000b000 {
+                       compatible = "snps,dw-apb-gpio";
+                       reg = <0x70 0x4000b000 0x0 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&clk CLK_GATE_APB_GPIO>,
+                                <&clk CLK_GATE_GPIO_DB>;
+                       clock-names = "bus", "db";
+                       resets = <&rst RST_GPIO2>;
+
+                       portc: gpio-controller@0 {
+                               compatible = "snps,dw-apb-gpio-port";
+                               reg = <0>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               ngpios = <32>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               interrupt-parent = <&intc>;
+                               interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
+               pwm: pwm@704000c000 {
+                       compatible = "sophgo,sg2044-pwm";
+                       reg = <0x70 0x4000c000 0x0 0x1000>;
+                       #pwm-cells = <3>;
+                       clocks = <&clk CLK_GATE_APB_PWM>;
+                       clock-names = "apb";
+                       resets = <&rst RST_PWM>;
+                       status = "disabled";
+               };
+
+               syscon: syscon@7050000000 {
+                       compatible = "sophgo,sg2044-top-syscon", "syscon";
+                       reg = <0x70 0x50000000 0x0 0x1000>;
+                       #clock-cells = <1>;
+                       clocks = <&osc>;
+               };
+
+               pinctrl: pinctrl@7050001000 {
+                       compatible = "sophgo,sg2044-pinctrl";
+                       reg = <0x70 0x50001000 0x0 0x1000>;
+               };
+
+               clk: clock-controller@7050002000 {
+                       compatible = "sophgo,sg2044-clk";
+                       reg = <0x70 0x50002000 0x0 0x1000>;
+                       #clock-cells = <1>;
+                       clocks = <&syscon CLK_FPLL0>, <&syscon CLK_FPLL1>,
+                                <&syscon CLK_FPLL2>, <&syscon CLK_DPLL0>,
+                                <&syscon CLK_DPLL1>, <&syscon CLK_DPLL2>,
+                                <&syscon CLK_DPLL3>, <&syscon CLK_DPLL4>,
+                                <&syscon CLK_DPLL5>, <&syscon CLK_DPLL6>,
+                                <&syscon CLK_DPLL7>, <&syscon CLK_MPLL0>,
+                                <&syscon CLK_MPLL1>, <&syscon CLK_MPLL2>,
+                                <&syscon CLK_MPLL3>, <&syscon CLK_MPLL4>,
+                                <&syscon CLK_MPLL5>;
+                       clock-names = "fpll0", "fpll1", "fpll2", "dpll0",
+                                     "dpll1", "dpll2", "dpll3", "dpll4",
+                                     "dpll5", "dpll6", "dpll7", "mpll0",
+                                     "mpll1", "mpll2", "mpll3", "mpll4",
+                                     "mpll5";
+               };
+
                rst: reset-controller@7050003000 {
                        compatible = "sophgo,sg2044-reset",
                                     "sophgo,sg2042-reset";
index 816ef1bc358ec490aff184d5915d680dbd9f00cb..fe22c747c5012fe56d42ac8a7efdbbdb694f31b6 100644 (file)
        };
 };
 
+&emmc {
+       bus-width = <8>;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       non-removable;
+       no-sd;
+       no-sdio;
+       status = "okay";
+};
+
 &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_2_cfg>;
index 283663647a86ff137917ced8bfe79a129c86342a..3810557374228100be7adab58cd785c72e6d4aed 100644 (file)
                        drive-strength = <32>;
                };
        };
+
+       pwm14_1_cfg: pwm14-1-cfg {
+               pwm14-1-pins {
+                       pinmux = <K1_PADCONF(44, 4)>;
+                       bias-pull-up = <0>;
+                       drive-strength = <32>;
+               };
+       };
 };
index c0f8c5fca975d73b6ea6886da13fcf55289cb16c..abde8bb07c95c5a745736a2dd6f0c0e0d7c696e4 100644 (file)
                dma-noncoherent;
                ranges;
 
+               syscon_rcpu: system-controller@c0880000 {
+                       compatible = "spacemit,k1-syscon-rcpu";
+                       reg = <0x0 0xc0880000 0x0 0x2048>;
+                       #reset-cells = <1>;
+               };
+
+               syscon_rcpu2: system-controller@c0888000 {
+                       compatible = "spacemit,k1-syscon-rcpu2";
+                       reg = <0x0 0xc0888000 0x0 0x28>;
+                       #reset-cells = <1>;
+               };
+
                syscon_apbc: system-controller@d4015000 {
                        compatible = "spacemit,k1-syscon-apbc";
                        reg = <0x0 0xd4015000 0x0 0x1000>;
                        #reset-cells = <1>;
                };
 
-               uart0: serial@d4017000 {
-                       compatible = "spacemit,k1-uart", "intel,xscale-uart";
-                       reg = <0x0 0xd4017000 0x0 0x100>;
-                       clocks = <&syscon_apbc CLK_UART0>,
-                                <&syscon_apbc CLK_UART0_BUS>;
+               gpio: gpio@d4019000 {
+                       compatible = "spacemit,k1-gpio";
+                       reg = <0x0 0xd4019000 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_GPIO>,
+                                <&syscon_apbc CLK_GPIO_BUS>;
                        clock-names = "core", "bus";
-                       interrupts = <42>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
-                       status = "disabled";
+                       gpio-controller;
+                       #gpio-cells = <3>;
+                       interrupts = <58>;
+                       interrupt-parent = <&plic>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       gpio-ranges = <&pinctrl 0 0 0 32>,
+                                     <&pinctrl 1 0 32 32>,
+                                     <&pinctrl 2 0 64 32>,
+                                     <&pinctrl 3 0 96 32>;
                };
 
-               uart2: serial@d4017100 {
-                       compatible = "spacemit,k1-uart", "intel,xscale-uart";
-                       reg = <0x0 0xd4017100 0x0 0x100>;
-                       clocks = <&syscon_apbc CLK_UART2>,
-                                <&syscon_apbc CLK_UART2_BUS>;
-                       clock-names = "core", "bus";
-                       interrupts = <44>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
+               pwm0: pwm@d401a000 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd401a000 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM0>;
+                       resets = <&syscon_apbc RESET_PWM0>;
                        status = "disabled";
                };
 
-               uart3: serial@d4017200 {
-                       compatible = "spacemit,k1-uart", "intel,xscale-uart";
-                       reg = <0x0 0xd4017200 0x0 0x100>;
-                       clocks = <&syscon_apbc CLK_UART3>,
-                                <&syscon_apbc CLK_UART3_BUS>;
-                       clock-names = "core", "bus";
-                       interrupts = <45>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
+               pwm1: pwm@d401a400 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd401a400 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM1>;
+                       resets = <&syscon_apbc RESET_PWM1>;
                        status = "disabled";
                };
 
-               uart4: serial@d4017300 {
-                       compatible = "spacemit,k1-uart", "intel,xscale-uart";
-                       reg = <0x0 0xd4017300 0x0 0x100>;
-                       clocks = <&syscon_apbc CLK_UART4>,
-                                <&syscon_apbc CLK_UART4_BUS>;
-                       clock-names = "core", "bus";
-                       interrupts = <46>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
+               pwm2: pwm@d401a800 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd401a800 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM2>;
+                       resets = <&syscon_apbc RESET_PWM2>;
                        status = "disabled";
                };
 
-               uart5: serial@d4017400 {
-                       compatible = "spacemit,k1-uart", "intel,xscale-uart";
-                       reg = <0x0 0xd4017400 0x0 0x100>;
-                       clocks = <&syscon_apbc CLK_UART5>,
-                                <&syscon_apbc CLK_UART5_BUS>;
-                       clock-names = "core", "bus";
-                       interrupts = <47>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
+               pwm3: pwm@d401ac00 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd401ac00 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM3>;
+                       resets = <&syscon_apbc RESET_PWM3>;
                        status = "disabled";
                };
 
-               uart6: serial@d4017500 {
-                       compatible = "spacemit,k1-uart", "intel,xscale-uart";
-                       reg = <0x0 0xd4017500 0x0 0x100>;
-                       clocks = <&syscon_apbc CLK_UART6>,
-                                <&syscon_apbc CLK_UART6_BUS>;
-                       clock-names = "core", "bus";
-                       interrupts = <48>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
+               pwm4: pwm@d401b000 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd401b000 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM4>;
+                       resets = <&syscon_apbc RESET_PWM4>;
                        status = "disabled";
                };
 
-               uart7: serial@d4017600 {
-                       compatible = "spacemit,k1-uart", "intel,xscale-uart";
-                       reg = <0x0 0xd4017600 0x0 0x100>;
-                       clocks = <&syscon_apbc CLK_UART7>,
-                                <&syscon_apbc CLK_UART7_BUS>;
-                       clock-names = "core", "bus";
-                       interrupts = <49>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
+               pwm5: pwm@d401b400 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd401b400 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM5>;
+                       resets = <&syscon_apbc RESET_PWM5>;
                        status = "disabled";
                };
 
-               uart8: serial@d4017700 {
-                       compatible = "spacemit,k1-uart", "intel,xscale-uart";
-                       reg = <0x0 0xd4017700 0x0 0x100>;
-                       clocks = <&syscon_apbc CLK_UART8>,
-                                <&syscon_apbc CLK_UART8_BUS>;
-                       clock-names = "core", "bus";
-                       interrupts = <50>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
+               pwm6: pwm@d401b800 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd401b800 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM6>;
+                       resets = <&syscon_apbc RESET_PWM6>;
                        status = "disabled";
                };
 
-               uart9: serial@d4017800 {
-                       compatible = "spacemit,k1-uart", "intel,xscale-uart";
-                       reg = <0x0 0xd4017800 0x0 0x100>;
-                       clocks = <&syscon_apbc CLK_UART9>,
-                                <&syscon_apbc CLK_UART9_BUS>;
-                       clock-names = "core", "bus";
-                       interrupts = <51>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
+               pwm7: pwm@d401bc00 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd401bc00 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM7>;
+                       resets = <&syscon_apbc RESET_PWM7>;
                        status = "disabled";
                };
 
-               gpio: gpio@d4019000 {
-                       compatible = "spacemit,k1-gpio";
-                       reg = <0x0 0xd4019000 0x0 0x100>;
-                       clocks = <&syscon_apbc CLK_GPIO>,
-                                <&syscon_apbc CLK_GPIO_BUS>;
-                       clock-names = "core", "bus";
-                       gpio-controller;
-                       #gpio-cells = <3>;
-                       interrupts = <58>;
-                       interrupt-parent = <&plic>;
-                       interrupt-controller;
-                       #interrupt-cells = <3>;
-                       gpio-ranges = <&pinctrl 0 0 0 32>,
-                                     <&pinctrl 1 0 32 32>,
-                                     <&pinctrl 2 0 64 32>,
-                                     <&pinctrl 3 0 96 32>;
-               };
-
                pinctrl: pinctrl@d401e000 {
                        compatible = "spacemit,k1-pinctrl";
                        reg = <0x0 0xd401e000 0x0 0x400>;
                        clock-names = "func", "bus";
                };
 
+               pwm8: pwm@d4020000 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4020000 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM8>;
+                       resets = <&syscon_apbc RESET_PWM8>;
+                       status = "disabled";
+               };
+
+               pwm9: pwm@d4020400 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4020400 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM9>;
+                       resets = <&syscon_apbc RESET_PWM9>;
+                       status = "disabled";
+               };
+
+               pwm10: pwm@d4020800 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4020800 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM10>;
+                       resets = <&syscon_apbc RESET_PWM10>;
+                       status = "disabled";
+               };
+
+               pwm11: pwm@d4020c00 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4020c00 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM11>;
+                       resets = <&syscon_apbc RESET_PWM11>;
+                       status = "disabled";
+               };
+
+               pwm12: pwm@d4021000 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4021000 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM12>;
+                       resets = <&syscon_apbc RESET_PWM12>;
+                       status = "disabled";
+               };
+
+               pwm13: pwm@d4021400 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4021400 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM13>;
+                       resets = <&syscon_apbc RESET_PWM13>;
+                       status = "disabled";
+               };
+
+               pwm14: pwm@d4021800 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4021800 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM14>;
+                       resets = <&syscon_apbc RESET_PWM14>;
+                       status = "disabled";
+               };
+
+               pwm15: pwm@d4021c00 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4021c00 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM15>;
+                       resets = <&syscon_apbc RESET_PWM15>;
+                       status = "disabled";
+               };
+
+               pwm16: pwm@d4022000 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4022000 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM16>;
+                       resets = <&syscon_apbc RESET_PWM16>;
+                       status = "disabled";
+               };
+
+               pwm17: pwm@d4022400 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4022400 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM17>;
+                       resets = <&syscon_apbc RESET_PWM17>;
+                       status = "disabled";
+               };
+
+               pwm18: pwm@d4022800 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4022800 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM18>;
+                       resets = <&syscon_apbc RESET_PWM18>;
+                       status = "disabled";
+               };
+
+               pwm19: pwm@d4022c00 {
+                       compatible = "spacemit,k1-pwm", "marvell,pxa910-pwm";
+                       reg = <0x0 0xd4022c00 0x0 0x10>;
+                       #pwm-cells = <3>;
+                       clocks = <&syscon_apbc CLK_PWM19>;
+                       resets = <&syscon_apbc RESET_PWM19>;
+                       status = "disabled";
+               };
+
                syscon_mpmu: system-controller@d4050000 {
                        compatible = "spacemit,k1-syscon-mpmu";
                        reg = <0x0 0xd4050000 0x0 0x209c>;
                                              <&cpu7_intc 3>, <&cpu7_intc 7>;
                };
 
-               sec_uart1: serial@f0612000 {
-                       compatible = "spacemit,k1-uart", "intel,xscale-uart";
-                       reg = <0x0 0xf0612000 0x0 0x100>;
-                       interrupts = <43>;
-                       clock-frequency = <14857000>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
-                       status = "reserved"; /* for TEE usage */
+               syscon_apbc2: system-controller@f0610000 {
+                       compatible = "spacemit,k1-syscon-apbc2";
+                       reg = <0x0 0xf0610000 0x0 0x20>;
+                       #reset-cells = <1>;
+               };
+
+               camera-bus {
+                       compatible = "simple-bus";
+                       ranges;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x0 0x80000000>,
+                                    <0x0 0x80000000 0x1 0x00000000 0x1 0x80000000>;
+               };
+
+               dma-bus {
+                       compatible = "simple-bus";
+                       ranges;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x0 0x80000000>,
+                                    <0x1 0x00000000 0x1 0x80000000 0x3 0x00000000>;
+
+                       uart0: serial@d4017000 {
+                               compatible = "spacemit,k1-uart",
+                                            "intel,xscale-uart";
+                               reg = <0x0 0xd4017000 0x0 0x100>;
+                               clocks = <&syscon_apbc CLK_UART0>,
+                                        <&syscon_apbc CLK_UART0_BUS>;
+                               clock-names = "core", "bus";
+                               interrupts = <42>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               status = "disabled";
+                       };
+
+                       uart2: serial@d4017100 {
+                               compatible = "spacemit,k1-uart",
+                                            "intel,xscale-uart";
+                               reg = <0x0 0xd4017100 0x0 0x100>;
+                               clocks = <&syscon_apbc CLK_UART2>,
+                                        <&syscon_apbc CLK_UART2_BUS>;
+                               clock-names = "core", "bus";
+                               interrupts = <44>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               status = "disabled";
+                       };
+
+                       uart3: serial@d4017200 {
+                               compatible = "spacemit,k1-uart",
+                                            "intel,xscale-uart";
+                               reg = <0x0 0xd4017200 0x0 0x100>;
+                               clocks = <&syscon_apbc CLK_UART3>,
+                                        <&syscon_apbc CLK_UART3_BUS>;
+                               clock-names = "core", "bus";
+                               interrupts = <45>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               status = "disabled";
+                       };
+
+                       uart4: serial@d4017300 {
+                               compatible = "spacemit,k1-uart",
+                                            "intel,xscale-uart";
+                               reg = <0x0 0xd4017300 0x0 0x100>;
+                               clocks = <&syscon_apbc CLK_UART4>,
+                                        <&syscon_apbc CLK_UART4_BUS>;
+                               clock-names = "core", "bus";
+                               interrupts = <46>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               status = "disabled";
+                       };
+
+                       uart5: serial@d4017400 {
+                               compatible = "spacemit,k1-uart",
+                                            "intel,xscale-uart";
+                               reg = <0x0 0xd4017400 0x0 0x100>;
+                               clocks = <&syscon_apbc CLK_UART5>,
+                                        <&syscon_apbc CLK_UART5_BUS>;
+                               clock-names = "core", "bus";
+                               interrupts = <47>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               status = "disabled";
+                       };
+
+                       uart6: serial@d4017500 {
+                               compatible = "spacemit,k1-uart",
+                                            "intel,xscale-uart";
+                               reg = <0x0 0xd4017500 0x0 0x100>;
+                               clocks = <&syscon_apbc CLK_UART6>,
+                                        <&syscon_apbc CLK_UART6_BUS>;
+                               clock-names = "core", "bus";
+                               interrupts = <48>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               status = "disabled";
+                       };
+
+                       uart7: serial@d4017600 {
+                               compatible = "spacemit,k1-uart",
+                                            "intel,xscale-uart";
+                               reg = <0x0 0xd4017600 0x0 0x100>;
+                               clocks = <&syscon_apbc CLK_UART7>,
+                                        <&syscon_apbc CLK_UART7_BUS>;
+                               clock-names = "core", "bus";
+                               interrupts = <49>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               status = "disabled";
+                       };
+
+                       uart8: serial@d4017700 {
+                               compatible = "spacemit,k1-uart",
+                                            "intel,xscale-uart";
+                               reg = <0x0 0xd4017700 0x0 0x100>;
+                               clocks = <&syscon_apbc CLK_UART8>,
+                                        <&syscon_apbc CLK_UART8_BUS>;
+                               clock-names = "core", "bus";
+                               interrupts = <50>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               status = "disabled";
+                       };
+
+                       uart9: serial@d4017800 {
+                               compatible = "spacemit,k1-uart",
+                                            "intel,xscale-uart";
+                               reg = <0x0 0xd4017800 0x0 0x100>;
+                               clocks = <&syscon_apbc CLK_UART9>,
+                                        <&syscon_apbc CLK_UART9_BUS>;
+                               clock-names = "core", "bus";
+                               interrupts = <51>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               status = "disabled";
+                       };
+
+                       sec_uart1: serial@f0612000 {
+                               compatible = "spacemit,k1-uart",
+                                            "intel,xscale-uart";
+                               reg = <0x0 0xf0612000 0x0 0x100>;
+                               interrupts = <43>;
+                               clock-frequency = <14857000>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               status = "reserved"; /* for TEE usage */
+                       };
+               };
+
+               multimedia-bus {
+                       compatible = "simple-bus";
+                       ranges;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x0 0x80000000>,
+                                    <0x0 0x80000000 0x1 0x00000000 0x3 0x80000000>;
+               };
+
+               network-bus {
+                       compatible = "simple-bus";
+                       ranges;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x0 0x80000000>,
+                                    <0x0 0x80000000 0x1 0x00000000 0x0 0x80000000>;
+               };
+
+               pcie-bus {
+                       compatible = "simple-bus";
+                       ranges;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x0 0x80000000>,
+                                    <0x0 0xb8000000 0x1 0x38000000 0x3 0x48000000>;
+               };
+
+               storage-bus {
+                       compatible = "simple-bus";
+                       ranges;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x0 0x80000000>;
+
+                       emmc: mmc@d4281000 {
+                               compatible = "spacemit,k1-sdhci";
+                               reg = <0x0 0xd4281000 0x0 0x200>;
+                               clocks = <&syscon_apmu CLK_SDH_AXI>,
+                                        <&syscon_apmu CLK_SDH2>;
+                               clock-names = "core", "io";
+                               interrupts = <101>;
+                               status = "disabled";
+                       };
                };
        };
 };
index 4baeb981d4dfd1ee63ad9f82cd1bae74aa8c931a..2eaf01775ef57d884b4d662af3caa83da2d2ad48 100644 (file)
@@ -8,6 +8,7 @@
 #include "jh7110.dtsi"
 #include "jh7110-pinfunc.h"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
 #include <dt-bindings/pinctrl/starfive,jh7110-pinctrl.h>
 
 / {
                priority = <224>;
        };
 
+       leds {
+               compatible = "gpio-leds";
+
+               led_status_power: led-0 {
+                       gpios = <&aongpio 3 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
        pwmdac_codec: audio-codec {
                compatible = "linux,spdif-dit";
                #sound-dai-cells = <0>;
index 3bd62ab785230f6e6762e29555da07143194b934..fdaf6b4557da94d3f1043e1775e4b24aef897ff7 100644 (file)
@@ -12,9 +12,9 @@
 };
 
 &gmac0 {
-       starfive,tx-use-rgmii-clk;
        assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>;
        assigned-clock-parents = <&aoncrg JH7110_AONCLK_GMAC0_RMII_RTX>;
+       starfive,tx-use-rgmii-clk;
        status = "okay";
 };
 
 };
 
 &phy0 {
-       motorcomm,tx-clk-adj-enabled;
+       rx-internal-delay-ps = <1500>;
+       tx-internal-delay-ps = <1500>;
+       motorcomm,rx-clk-drv-microamp = <3970>;
+       motorcomm,rx-data-drv-microamp = <2910>;
        motorcomm,tx-clk-10-inverted;
        motorcomm,tx-clk-100-inverted;
        motorcomm,tx-clk-1000-inverted;
-       motorcomm,rx-clk-drv-microamp = <3970>;
-       motorcomm,rx-data-drv-microamp = <2910>;
-       rx-internal-delay-ps = <1500>;
-       tx-internal-delay-ps = <1500>;
+       motorcomm,tx-clk-adj-enabled;
 };
 
 &pwm {
index 1db0054c4e093400e9dbebcee5fcfa5b5cae6e32..03f1d731904994cf1f93b8fb51ae01eb165e574d 100644 (file)
@@ -7,6 +7,7 @@
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/clock/thead,th1520-clk-ap.h>
 #include <dt-bindings/power/thead,th1520-power.h>
+#include <dt-bindings/reset/thead,th1520-reset.h>
 
 / {
        compatible = "thead,th1520";
                compatible = "thead,th1520-aon";
                mboxes = <&mbox_910t 1>;
                mbox-names = "aon";
+               resets = <&rst TH1520_RESET_ID_GPU_CLKGEN>;
+               reset-names = "gpu-clkgen";
                #power-domain-cells = <1>;
        };
 
                        reg-names = "dwmac", "apb";
                        interrupts = <67 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "macirq";
-                       clocks = <&clk CLK_GMAC_AXI>, <&clk CLK_GMAC1>;
-                       clock-names = "stmmaceth", "pclk";
+                       clocks = <&clk CLK_GMAC_AXI>, <&clk CLK_GMAC1>,
+                                <&clk CLK_PERISYS_APB4_HCLK>;
+                       clock-names = "stmmaceth", "pclk", "apb";
                        snps,pbl = <32>;
                        snps,fixed-burst;
                        snps,multicast-filter-bins = <64>;
                        reg-names = "dwmac", "apb";
                        interrupts = <66 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "macirq";
-                       clocks = <&clk CLK_GMAC_AXI>, <&clk CLK_GMAC0>;
-                       clock-names = "stmmaceth", "pclk";
+                       clocks = <&clk CLK_GMAC_AXI>, <&clk CLK_GMAC0>,
+                                <&clk CLK_PERISYS_APB4_HCLK>;
+                       clock-names = "stmmaceth", "pclk", "apb";
                        snps,pbl = <32>;
                        snps,fixed-burst;
                        snps,multicast-filter-bins = <64>;
                        thead,pad-group = <1>;
                };
 
+               pvt: pvt@fffff4e000 {
+                       compatible = "moortec,mr75203";
+                       reg = <0xff 0xfff4e000 0x0 0x80>,
+                             <0xff 0xfff4e080 0x0 0x100>,
+                             <0xff 0xfff4e180 0x0 0x680>,
+                             <0xff 0xfff4e800 0x0 0x600>;
+                       reg-names = "common", "ts", "pd", "vm";
+                       clocks = <&aonsys_clk>;
+                       #thermal-sensor-cells = <1>;
+               };
+
                gpio@fffff52000 {
                        compatible = "snps,dw-apb-gpio";
                        reg = <0xff 0xfff52000 0x0 0x1000>;