U-Boot
Threads by month
- ----- 2025 -----
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2000 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
January 2023
- 222 participants
- 701 discussions

25 Jan '23
This driver supports the bcm2835 watchdog found on
Raspberry Pi boards.
It is derived from the Linux driver and was tested
on two Raspberry Pi board versions (B+ and 3B+).
Signed-off-by: Etienne Dublé <etienne.duble(a)imag.fr>
---
Changes for v2:
- fixed whitespaces in email
- moved a static variable to the priv struct
drivers/watchdog/Kconfig | 9 +++
drivers/watchdog/Makefile | 1 +
drivers/watchdog/bcm2835_wdt.c | 140 +++++++++++++++++++++++++++++++++
3 files changed, 150 insertions(+)
create mode 100644 drivers/watchdog/bcm2835_wdt.c
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index f1b1cf63ca..06c0d630c8 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -30,6 +30,7 @@ config WATCHDOG_TIMEOUT_MSECS
default 128000 if ARCH_MX7 || ARCH_VF610
default 30000 if ARCH_SOCFPGA
default 16000 if ARCH_SUNXI
+ default 15000 if ARCH_BCM283X
default 60000
help
Watchdog timeout in msec
@@ -326,6 +327,14 @@ config WDT_SUNXI
help
Enable support for the watchdog timer in Allwinner sunxi SoCs.
+config WDT_BCM2835
+ bool "Broadcom 2835 watchdog timer support"
+ depends on WDT && ARCH_BCM283X
+ default y
+ help
+ Enable support for the watchdog timer in Broadcom 283X SoCs such
+ as Raspberry Pi boards.
+
config XILINX_TB_WATCHDOG
bool "Xilinx Axi watchdog timer support"
depends on WDT
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 446d961d7d..f99915960c 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_WDT_APPLE) += apple_wdt.o
obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o
obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o
obj-$(CONFIG_WDT_AST2600) += ast2600_wdt.o
+obj-$(CONFIG_WDT_BCM2835) += bcm2835_wdt.o
obj-$(CONFIG_WDT_BCM6345) += bcm6345_wdt.o
obj-$(CONFIG_WDT_BOOKE) += booke_wdt.o
obj-$(CONFIG_WDT_CORTINA) += cortina_wdt.o
diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c
new file mode 100644
index 0000000000..00f7806cd5
--- /dev/null
+++ b/drivers/watchdog/bcm2835_wdt.c
@@ -0,0 +1,140 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2013 Lubomir Rintel <lkundrak(a)v3.sk>
+ * Copyright (C) 2023 Etienne Dublé (CNRS) <etienne.duble(a)imag.fr>
+ *
+ * This code is mostly derived from the linux driver.
+ */
+
+#include <dm.h>
+#include <wdt.h>
+#include <asm/io.h>
+#include <linux/delay.h>
+
+#define PM_RSTC 0x1c
+#define PM_WDOG 0x24
+
+#define PM_PASSWORD 0x5a000000
+
+/* The hardware supports a maximum timeout value of 0xfffff ticks
+ * (just below 16 seconds).
+ * U-boot users specify the timeout as a number of milliseconds
+ * by using variable CONFIG_WATCHDOG_TIMEOUT_MSECS.
+ * The maximum value should be 15999 ms in our case.
+ * However, u-boot internally converts this config value to seconds,
+ * thus specifying 15999 actually means 15000 ms (0xf0000 ticks).
+ */
+#define PM_WDOG_MAX_TICKS 0x000f0000
+#define PM_RSTC_WRCFG_CLR 0xffffffcf
+#define PM_RSTC_WRCFG_FULL_RESET 0x00000020
+#define PM_RSTC_RESET 0x00000102
+
+#define MS_TO_WDOG_TICKS(x) (((x) << 16) / 1000)
+
+struct bcm2835_wdt_priv {
+ void __iomem *base;
+ u64 timeout_ticks;
+};
+
+static int bcm2835_wdt_start_ticks(struct udevice *dev,
+ u64 timeout_ticks, ulong flags)
+{
+ struct bcm2835_wdt_priv *priv = dev_get_priv(dev);
+ void __iomem *base = priv->base;
+ u32 cur;
+
+ writel(PM_PASSWORD | timeout_ticks, base + PM_WDOG);
+ cur = readl(base + PM_RSTC);
+ writel(PM_PASSWORD | (cur & PM_RSTC_WRCFG_CLR) |
+ PM_RSTC_WRCFG_FULL_RESET, base + PM_RSTC);
+
+ return 0;
+}
+
+static int bcm2835_wdt_start(struct udevice *dev, u64 timeout_ms, ulong flags)
+{
+ struct bcm2835_wdt_priv *priv = dev_get_priv(dev);
+
+ priv->timeout_ticks = MS_TO_WDOG_TICKS(timeout_ms);
+
+ if (priv->timeout_ticks > PM_WDOG_MAX_TICKS) {
+ printf("WARNING: bcm2835_wdt cannot handle large timeout values.\n");
+ printf(" Setting the max value of 15000 ms instead.\n");
+ printf(" Set CONFIG_WATCHDOG_TIMEOUT_MSECS=15000 at most "
+ "to avoid this warning.\n");
+ priv->timeout_ticks = PM_WDOG_MAX_TICKS;
+ }
+
+ return bcm2835_wdt_start_ticks(dev, priv->timeout_ticks, flags);
+}
+
+static int bcm2835_wdt_reset(struct udevice *dev)
+{
+ struct bcm2835_wdt_priv *priv = dev_get_priv(dev);
+
+ /* restart the timer with the value of priv->timeout_ticks
+ * saved from the last bcm2835_wdt_start() call.
+ */
+ return bcm2835_wdt_start_ticks(dev, priv->timeout_ticks, 0);
+}
+
+static int bcm2835_wdt_stop(struct udevice *dev)
+{
+ struct bcm2835_wdt_priv *priv = dev_get_priv(dev);
+ void __iomem *base = priv->base;
+
+ writel(PM_PASSWORD | PM_RSTC_RESET, base + PM_RSTC);
+
+ return 0;
+}
+
+static int bcm2835_wdt_expire_now(struct udevice *dev, ulong flags)
+{
+ int ret;
+
+ /* use a timeout of 10 ticks (~150us) */
+ ret = bcm2835_wdt_start_ticks(dev, 10, flags);
+ if (ret)
+ return ret;
+
+ mdelay(500);
+
+ return 0;
+}
+
+static const struct wdt_ops bcm2835_wdt_ops = {
+ .reset = bcm2835_wdt_reset,
+ .start = bcm2835_wdt_start,
+ .stop = bcm2835_wdt_stop,
+ .expire_now = bcm2835_wdt_expire_now,
+};
+
+static const struct udevice_id bcm2835_wdt_ids[] = {
+ { .compatible = "brcm,bcm2835-pm" },
+ { .compatible = "brcm,bcm2835-pm-wdt" },
+ { /* sentinel */ }
+};
+
+static int bcm2835_wdt_probe(struct udevice *dev)
+{
+ struct bcm2835_wdt_priv *priv = dev_get_priv(dev);
+
+ priv->base = dev_remap_addr(dev);
+ if (!priv->base)
+ return -EINVAL;
+
+ priv->timeout_ticks = PM_WDOG_MAX_TICKS;
+
+ bcm2835_wdt_stop(dev);
+
+ return 0;
+}
+
+U_BOOT_DRIVER(bcm2835_wdt) = {
+ .name = "bcm2835_wdt",
+ .id = UCLASS_WDT,
+ .of_match = bcm2835_wdt_ids,
+ .probe = bcm2835_wdt_probe,
+ .priv_auto = sizeof(struct bcm2835_wdt_priv),
+ .ops = &bcm2835_wdt_ops,
+};
--
2.34.1
3
2
From: Peng Fan <peng.fan(a)nxp.com>
This patchset includes updates mainly for i.MX9, such as Clock, Memory,
Parts, Low drive mode, DDR, ELE, Container.
Jacky Bai (1):
ddr: imx8ulp: Update the ddr init flow
Peng Fan (29):
power: pmic: pca9450: support pca9451a
imx9: imx93_evk: drop unused macro
imx9: imx93_evk: enable CONFIG_WDT
arm: dts: imx93: add tmu
imx9: configure M33 systick to 24M
imx9: add more PLL settings
imx9: use parameter freq when set_arm_clk
imx9: correct getting LPI2C clk
imx9: simplify clk settings
imx9: cut off OPTEE memory region from U-Boot
imx9: soc: Get market segment and speed grading
imx9: clock: add CONFIG_IMX9_LOW_DRIVE_MODE support
imx9: add reset cause print
imx9: add i.MX93 variants support
imx9: correct coding style
imx9: imx93_evk: add low drive mode support on 11x11 EVK
imx8ulp: build ahab
imx: rename s400 api to ele
imx: ahab: unify imx9 and imx8ulp AHAB support
imx: ele_api: Add get_events API
imx: ahab: Get and decode AHAB events
imx: update pin header file for i.MX93
imx: ele_ahab: Add ahab_sec_fuse_prog command
imx9: Print ELE FW version
imx: spl_imx_romapi: Get and print boot stage
ddr: imx9: Add workaround for DDRPHY rank-to-rank errata
imx9: print temperature
imx: parse_container: use malloc for container processing
imx9: support i.MX93 9x9 QSB board
Seb Fagard (1):
imx8: ahab: fix 'end address' parameter of rm_find_memreg
Ye Li (10):
imx9: Change hard coded MAC to read from fuse
imx9: allow to bootaux Mcore with input address
imx: s4mu: Update MU TR registers count
imx9: imx93_evk: Update DDR timing config
imx: spl_imx_romapi: Workaround loading to OCRAM ECC region
ddr: imx8m: Fix DDR inline ECC scruber configuration
ddr: imx9: Add DDR inline ECC support
thermal: imx_tmu: Update TMU driver to support iMX93
i2c: imx_lpi2c: Fix misuse the IS_ENABLED for DM clock
imx8: ahab: use common code
arch/arm/dts/Makefile | 3 +-
arch/arm/dts/imx93-9x9-qsb-u-boot.dtsi | 134 ++
arch/arm/dts/imx93-9x9-qsb.dts | 388 ++++
arch/arm/dts/imx93-pinfunc.h | 194 +-
arch/arm/dts/imx93.dtsi | 47 +
arch/arm/include/asm/arch-imx/cpu.h | 7 +
arch/arm/include/asm/arch-imx8ulp/imx-regs.h | 2 +
arch/arm/include/asm/arch-imx9/clock.h | 6 +
arch/arm/include/asm/arch-imx9/ddr.h | 9 +-
arch/arm/include/asm/arch-imx9/imx-regs.h | 5 +
arch/arm/include/asm/arch-imx9/imx93_pins.h | 44 +-
arch/arm/include/asm/mach-imx/ahab.h | 15 +
arch/arm/include/asm/mach-imx/ele_api.h | 150 ++
arch/arm/include/asm/mach-imx/s400_api.h | 60 -
arch/arm/include/asm/mach-imx/sys_proto.h | 19 +-
arch/arm/mach-imx/Makefile | 4 +
arch/arm/mach-imx/ele_ahab.c | 624 +++++++
arch/arm/mach-imx/imx8/ahab.c | 129 +-
arch/arm/mach-imx/imx8ulp/Kconfig | 5 +
arch/arm/mach-imx/imx8ulp/ahab.c | 345 ----
arch/arm/mach-imx/imx8ulp/rdc.c | 10 +-
arch/arm/mach-imx/imx8ulp/soc.c | 6 +-
arch/arm/mach-imx/imx9/Kconfig | 11 +
arch/arm/mach-imx/imx9/Makefile | 1 -
arch/arm/mach-imx/imx9/ahab.c | 346 ----
arch/arm/mach-imx/imx9/clock.c | 101 +-
arch/arm/mach-imx/imx9/imx_bootaux.c | 10 +-
arch/arm/mach-imx/imx9/soc.c | 473 ++++-
arch/arm/mach-imx/imx9/trdc.c | 10 +-
arch/arm/mach-imx/parse-container.c | 120 +-
arch/arm/mach-imx/spl_imx_romapi.c | 59 +-
board/freescale/imx8ulp_evk/spl.c | 10 +-
board/freescale/imx93_evk/MAINTAINERS | 1 +
board/freescale/imx93_evk/Makefile | 4 +
board/freescale/imx93_evk/lpddr4x_timing.c | 14 +-
board/freescale/imx93_evk/lpddr4x_timing_ld.c | 1496 ++++++++++++++++
board/freescale/imx93_evk/spl.c | 27 +-
board/freescale/imx93_qsb/Kconfig | 12 +
board/freescale/imx93_qsb/Makefile | 12 +
board/freescale/imx93_qsb/imx93_qsb.c | 114 ++
board/freescale/imx93_qsb/lpddr4_timing.c | 1573 +++++++++++++++++
board/freescale/imx93_qsb/spl.c | 139 ++
configs/imx93_11x11_evk_defconfig | 3 +
configs/imx93_11x11_evk_ld_defconfig | 120 ++
configs/imx93_9x9_qsb_defconfig | 119 ++
drivers/ddr/imx/imx8m/ddr_init.c | 4 +-
drivers/ddr/imx/imx8ulp/ddr_init.c | 55 +-
drivers/ddr/imx/imx9/Kconfig | 6 +
drivers/ddr/imx/imx9/ddr_init.c | 155 ++
drivers/i2c/imx_lpi2c.c | 4 +-
drivers/misc/sentinel/Makefile | 2 +-
.../misc/sentinel/{s400_api.c => ele_api.c} | 236 ++-
drivers/misc/sentinel/{s4mu.c => ele_mu.c} | 12 +-
drivers/misc/sentinel/fuse.c | 8 +-
drivers/power/pmic/pca9450.c | 1 +
drivers/thermal/Kconfig | 6 +-
drivers/thermal/imx_tmu.c | 98 +
include/configs/imx93_evk.h | 2 -
include/configs/imx93_qsb.h | 140 ++
include/power/pca9450.h | 1 +
60 files changed, 6510 insertions(+), 1201 deletions(-)
create mode 100644 arch/arm/dts/imx93-9x9-qsb-u-boot.dtsi
create mode 100644 arch/arm/dts/imx93-9x9-qsb.dts
create mode 100644 arch/arm/include/asm/mach-imx/ahab.h
create mode 100644 arch/arm/include/asm/mach-imx/ele_api.h
delete mode 100644 arch/arm/include/asm/mach-imx/s400_api.h
create mode 100644 arch/arm/mach-imx/ele_ahab.c
delete mode 100644 arch/arm/mach-imx/imx8ulp/ahab.c
delete mode 100644 arch/arm/mach-imx/imx9/ahab.c
create mode 100644 board/freescale/imx93_evk/lpddr4x_timing_ld.c
create mode 100644 board/freescale/imx93_qsb/Kconfig
create mode 100644 board/freescale/imx93_qsb/Makefile
create mode 100644 board/freescale/imx93_qsb/imx93_qsb.c
create mode 100644 board/freescale/imx93_qsb/lpddr4_timing.c
create mode 100644 board/freescale/imx93_qsb/spl.c
create mode 100644 configs/imx93_11x11_evk_ld_defconfig
create mode 100644 configs/imx93_9x9_qsb_defconfig
rename drivers/misc/sentinel/{s400_api.c => ele_api.c} (59%)
rename drivers/misc/sentinel/{s4mu.c => ele_mu.c} (94%)
create mode 100644 include/configs/imx93_qsb.h
--
2.36.0
5
46

25 Jan '23
This series aims to add the vertical scroll for the eficonfig menu.
Before adding scroll support, this series does the refactoring
of change boot order implementation since it has own menu handling
and it should be removed to improve maintainability.
The eficonfig menu handles file selection for EFI load option
and secure boot keys, it likely to enumerate tens of files.
User can not select the file without scroll if theare are
many files under the target directory.
This series only modifies the eficonfig menus. Other menus
such as bootmenu is not yet done. We need to enhance the
U-Boot menu framework itself if we support other menus.
Masahisa Kojima (4):
eficonfig: refactor eficonfig_process_common function
eficonfig: refactor change boot order implementation
eficonfig: add vertical scroll support
eficonfig: increase the number of menu entries
cmd/eficonfig.c | 399 +++++++++++++++++++++++++++++-------------
cmd/eficonfig_sbkey.c | 18 +-
include/efi_config.h | 19 +-
include/efi_loader.h | 1 +
4 files changed, 309 insertions(+), 128 deletions(-)
--
2.17.1
3
7
Tom,
I haven't had to push an update to master on u-boot-tegra in several months, but I've got a new PR that needs to go in. I've tried my normal 'git push ssh://gu-tegra@git.denx.de/u-boot-tegra master', but it's not working.
I get:
gu-tegra(a)git.denx.de: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Has something changed in the last (several) months? I've also just upgraded from 16.04 Ubuntu to 18.04, but everything else is working OK, so I'm not sure it's all my fault, but it may well be. :)
Thanks,
Tom
2
1

24 Jan '23
So far, standard boot does not replicate all the of the functionality
of the distro_bootcmd scripts. In particular it lacks some bootdevs and
some of the bootmeths are incomplete.
Also there is currently no internal mechanism to enumerate buses in order
to discover bootdevs, e.g. with USB.
This series addresses these shortcomings:
- Adds the concept of a 'bootdev hunter' to enumerate buses, etc. in an
effort to find bootdevs of a certain priority
- Adds bootdevs for SCSI, IDE, NVMe, virtio, SPI flash
- Handles PXE and DHCP properly
- Supports reading the device tree with EFI and reading scripts from the
network
It also tidies up label processing, so it is possible to use:
bootflow scan mmc2
to scan just one MMC device (with BOOTSTD_FULL).
As before this implementation still relies on CONFIG_CMDLINE being
enabled, mostly for the network stack. Further work would be required to
disentangle that.
Quite a few tests are added but there are some gaps:
- SPI flash bootdev
- EFI FDT loading
Note that SATA works via SCSI (CONFIG_SCSI_AHCI) and does not use
driver model. Only pogo_v4 seems to be affected. Probably all thats is
needed is to call bootdev_setup_sibling_blk() in the Marvell SATA driver.
Also, while it would be possible to init MMC in a bootdev hunter, there is
no point since U-Boot always inits MMC on startup, if present.
With this series it should be possible to migrate boards to standard boot
by removing the inclusion of config_distro_bootcmd.h and instead adding
a suitable value for boot_targets to the environment, e.g.:
boot_targets=mmc1 mmc0 nvme scsi usb pxe dhcp spi
Thus it is possible to boot automatically without scripts and boards can
use a text-based environment instead of the config.h files.
To demonstrate this, rockpro64-rk3399 is migrated to standard boot in this
series. Full migration could probably be automated using a script, similar
in concept to moveconfig:
- obtain the board environment via 'make u-boot-initial-env'
- get the value of "boot_targets"
- drop config_distro_bootcmd.h from the config.h file
- rebuild again to get the environment without distro scripts
- write the environment (adding boot_targets) to board.env
- remove CONFIG_EXTRA_ENV_SETTINGS from the config.h file
This series is based on top of the boot menu series v3 [1].
The tree is available at u-boot-dm/dis-working
[1] https://patchwork.ozlabs.org/project/uboot/list/?series=335364
Changes in v3:
- Rebase to -master
Changes in v2:
- Rebase to -next
Simon Glass (70):
dm: core: Correct ordering of uclasses IDs
dm: core: Support sorting devices with dm tree
dm: test: Correct assertion in dm_test_part()
lib: Add a function to split a string into substrings
bootstd: Remove special-case code for boot_targets
bootstd: Simplify locating existing bootdevs
test: Fix the help for the ut command
test: Drop duplicate restore of DM state
sandbox: mmc: Start off with a zeroed file
vbe: Avoid a build failure when bloblist is not enabled
vbe: sandbox: Drop VBE node in chosen
dm: part: Update test to use mmc2
dm: test: Correct ordering of DM setup
ide: Drop non-DM code for BLK
dm: mmc: Use bootdev_setup_sibling_blk()
bootstd: Add a default method to get bootflows
sandbox: Allow ethernet to be disabled at runtime
sandbox: Allow ethernet bootdevs to be disabled for tests
sandbox: Enable the Ethernet bootdev
lib: Support printing an error string
event: Correct duplicate log message in event_notify()
efi: Improve logging in efi_disk
bootstd: Add the concept of a bootdev hunter
bootstd: Support running bootdev hunters
dm: usb: Mark the device name as alloced when binding
test: Add a generic function to skip delays
bootstd: Add a USB hunter
bootstd: Add an MMC hunter
net: Add a function to run dhcp
bootstd: Add a hunter for ethernet
part: Add a function to find the first bootable partition
bootstd: Only scan bootable partitions
scsi: Correct allocation of block-device name
scsi: Remove all children of SCSI devices before rescanning
bootstd: Add a SCSI bootdev
bootstd: Add an IDE bootdev
bootstd: Add an NVMe bootdev
virtio: Avoid repeating a long expression
virtio: Fix returning -ENODEV
virtio: Avoid strange behaviour on removal
virtio: Add a block device
bootstd: Add a virtio bootdev
ata: Don't try to use non-existent ports
bootstd: Rename bootdev checkers
bootstd: Allow reading an EFI file from the network
bootstd: Include the device tree in the bootflow
bootstd: Support reading the device tree with EFI
bootstd: Set the distro_bootpart env var with scripts
bootstd: Update docs on bootmeth_try_file() for sandbox
bootstd: Move label parsing into its own function
bootstd: Add a new bootmeth method to set the bootflow
sandbox: Allow SPI flash bootdevs to be disabled for tests
bootstd: Add a SPI flash bootdev
bootstd: Support reading a script from network or SPI flash
bootstd: Treat DHCP and PXE as bootdev labels
bootstd: Use hunters when scanning for bootflows
bootstd: Allow hunting for bootdevs of a given priority
bootstd: Add a new pre-scan priority for bootdevs
bootstd: Allow hunting for a bootdev by label
bootstd: Allow iterating to the next label in a list
bootstd: Allow iterating to the next bootdev priortiy
extension: Refactor to allow non-command usage
bootstd: Add a hunter for the extension feature
bootstd: Switch bootdev scanning to use labels
bootstd: Allow scanning a single bootdev label
bootstd: Drop the old bootflow_scan_first()
bootstd: Record the bootdevs used during scanning
bootstd: Add a little more logging of bootflows
bootstd: Update documentation for new features
rockchip: Convert rockpro64-rk3399 to use standard boot
arch/sandbox/cpu/state.c | 30 ++
arch/sandbox/dts/sandbox.dtsi | 13 -
arch/sandbox/dts/test.dts | 6 +
arch/sandbox/include/asm/state.h | 2 +
arch/sandbox/include/asm/test.h | 30 ++
boot/bootdev-uclass.c | 551 +++++++++++++++++++---------
boot/bootflow.c | 173 ++++++---
boot/bootmeth-uclass.c | 11 +
boot/bootmeth_distro.c | 2 +-
boot/bootmeth_efi.c | 220 ++++++++++-
boot/bootmeth_efi_mgr.c | 2 +-
boot/bootmeth_pxe.c | 5 +-
boot/bootmeth_script.c | 98 ++++-
boot/bootstd-uclass.c | 17 +-
boot/vbe_simple_fw.c | 2 +-
cmd/bootdev.c | 42 ++-
cmd/bootflow.c | 97 +++--
cmd/dm.c | 10 +-
cmd/extension_board.c | 43 ++-
cmd/net.c | 35 ++
cmd/vbe.c | 7 +-
common/event.c | 2 +-
configs/sandbox_defconfig | 2 +-
configs/sandbox_flattree_defconfig | 10 +-
disk/part.c | 16 +
doc/develop/bootstd.rst | 221 +++++++----
doc/develop/driver-model/nvme.rst | 2 +-
doc/usage/cmd/bootdev.rst | 48 ++-
doc/usage/cmd/bootflow.rst | 17 +-
doc/usage/cmd/dm.rst | 5 +-
drivers/ata/ahci.c | 6 +
drivers/block/ide.c | 86 ++---
drivers/core/dump.c | 65 +++-
drivers/mmc/mmc-uclass.c | 2 +-
drivers/mmc/mmc_bootdev.c | 33 +-
drivers/mmc/sandbox_mmc.c | 2 +-
drivers/mtd/spi/Kconfig | 8 +
drivers/mtd/spi/Makefile | 1 +
drivers/mtd/spi/sf-uclass.c | 11 +
drivers/mtd/spi/sf_bootdev.c | 82 +++++
drivers/nvme/nvme-uclass.c | 54 +++
drivers/nvme/nvme.c | 5 +
drivers/scsi/Makefile | 7 +
drivers/scsi/scsi.c | 32 +-
drivers/scsi/scsi_bootdev.c | 62 ++++
drivers/usb/host/usb-uclass.c | 2 +
drivers/usb/host/usb_bootdev.c | 38 +-
drivers/virtio/virtio-uclass.c | 62 +++-
drivers/virtio/virtio_sandbox.c | 16 +-
include/bootdev.h | 206 ++++++++++-
include/bootflow.h | 134 +++++--
include/bootmeth.h | 35 +-
include/bootstd.h | 17 +-
include/configs/rk3399_common.h | 5 +-
include/configs/rockchip-common.h | 2 +
include/dm/uclass-id.h | 4 +-
include/dm/util.h | 8 +-
include/net.h | 31 ++
include/part.h | 8 +
include/test/test.h | 72 ++++
include/vsprintf.h | 24 ++
lib/efi_loader/efi_disk.c | 30 +-
lib/strto.c | 41 +++
lib/vsprintf.c | 12 +
net/eth-uclass.c | 14 +-
net/eth_bootdev.c | 68 ++--
net/net.c | 4 +
test/boot/bootdev.c | 563 +++++++++++++++++++++++++++--
test/boot/bootflow.c | 138 +++++--
test/boot/bootstd_common.c | 19 +
test/boot/bootstd_common.h | 13 +
test/cmd_ut.c | 2 +-
test/dm/part.c | 37 +-
test/dm/virtio_device.c | 3 +
test/py/tests/bootstd/mmc1.img.xz | Bin 4448 -> 4480 bytes
test/py/tests/test_dm.py | 38 ++
test/py/tests/test_ut.py | 13 +-
test/str_ut.c | 82 +++++
test/test-main.c | 24 +-
79 files changed, 3225 insertions(+), 715 deletions(-)
create mode 100644 drivers/mtd/spi/sf_bootdev.c
create mode 100644 drivers/scsi/scsi_bootdev.c
--
2.39.0.246.g2a6d74b583-goog
2
79

24 Jan '23
From: Joseph Chen <chenjh(a)rock-chips.com>
Add support for rk3588 evaluation board.
Signed-off-by: Joseph Chen <chenjh(a)rock-chips.com>
---
board/rockchip/evb_rk3588/Kconfig | 15 ++++++
board/rockchip/evb_rk3588/MAINTAINERS | 6 +++
board/rockchip/evb_rk3588/Makefile | 7 +++
board/rockchip/evb_rk3588/evb_rk3588.c | 4 ++
configs/evb-rk3588_defconfig | 69 ++++++++++++++++++++++++++
include/configs/evb_rk3588.h | 15 ++++++
6 files changed, 116 insertions(+)
create mode 100644 board/rockchip/evb_rk3588/Kconfig
create mode 100644 board/rockchip/evb_rk3588/MAINTAINERS
create mode 100644 board/rockchip/evb_rk3588/Makefile
create mode 100644 board/rockchip/evb_rk3588/evb_rk3588.c
create mode 100644 configs/evb-rk3588_defconfig
create mode 100644 include/configs/evb_rk3588.h
diff --git a/board/rockchip/evb_rk3588/Kconfig b/board/rockchip/evb_rk3588/Kconfig
new file mode 100644
index 0000000000..d38efe61d8
--- /dev/null
+++ b/board/rockchip/evb_rk3588/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_EVB_RK3588
+
+config SYS_BOARD
+ default "evb_rk3588"
+
+config SYS_VENDOR
+ default "rockchip"
+
+config SYS_CONFIG_NAME
+ default "evb_rk3588"
+
+config BOARD_SPECIFIC_OPTIONS # dummy
+ def_bool y
+
+endif
diff --git a/board/rockchip/evb_rk3588/MAINTAINERS b/board/rockchip/evb_rk3588/MAINTAINERS
new file mode 100644
index 0000000000..1a9695458d
--- /dev/null
+++ b/board/rockchip/evb_rk3588/MAINTAINERS
@@ -0,0 +1,6 @@
+EVB-RK3568
+M: Joseph Chen <chenjh(a)rock-chips.com>
+S: Maintained
+F: board/rockchip/evb_rk3588
+F: include/configs/evb_rk3588.h
+F: configs/evb-rk3588_defconfig
diff --git a/board/rockchip/evb_rk3588/Makefile b/board/rockchip/evb_rk3588/Makefile
new file mode 100644
index 0000000000..3946c3565e
--- /dev/null
+++ b/board/rockchip/evb_rk3588/Makefile
@@ -0,0 +1,7 @@
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (c) 2021 Rockchip Electronics Co., Ltd
+#
+
+obj-y += evb_rk3588.o
diff --git a/board/rockchip/evb_rk3588/evb_rk3588.c b/board/rockchip/evb_rk3588/evb_rk3588.c
new file mode 100644
index 0000000000..c2fdf95d9a
--- /dev/null
+++ b/board/rockchip/evb_rk3588/evb_rk3588.c
@@ -0,0 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2021 Rockchip Electronics Co., Ltd
+ */
diff --git a/configs/evb-rk3588_defconfig b/configs/evb-rk3588_defconfig
new file mode 100644
index 0000000000..83cddcf2b0
--- /dev/null
+++ b/configs/evb-rk3588_defconfig
@@ -0,0 +1,69 @@
+CONFIG_ARM=y
+CONFIG_SKIP_LOWLEVEL_INIT=y
+CONFIG_COUNTER_FREQUENCY=24000000
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_TEXT_BASE=0x00200000
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_NR_DRAM_BANKS=2
+CONFIG_DEFAULT_DEVICE_TREE="rk3588-evb"
+CONFIG_ROCKCHIP_RK3588=y
+CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
+CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y
+CONFIG_SPL_MMC=y
+CONFIG_SPL_SERIAL=y
+CONFIG_SPL_STACK_R_ADDR=0x600000
+CONFIG_TARGET_EVB_RK3588=y
+CONFIG_DEBUG_UART_BASE=0xFEB50000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_SYS_LOAD_ADDR=0x400800
+CONFIG_DEBUG_UART=y
+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x400000
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
+CONFIG_SPL_LOAD_FIT=y
+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3588-evb.dtb"
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_DISPLAY_BOARDINFO_LATE=y
+CONFIG_SPL_MAX_SIZE=0x20000
+CONFIG_SPL_PAD_TO=0x7f8000
+CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
+CONFIG_SPL_BSS_START_ADDR=0x4000000
+CONFIG_SPL_BSS_MAX_SIZE=0x4000
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
+# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
+CONFIG_SPL_STACK=0x400000
+CONFIG_SPL_STACK_R=y
+CONFIG_SPL_ATF=y
+CONFIG_CMD_GPT=y
+CONFIG_CMD_MMC=y
+# CONFIG_CMD_SETEXPR is not set
+# CONFIG_SPL_DOS_PARTITION is not set
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_OF_LIVE=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_SPL_REGMAP=y
+CONFIG_SPL_SYSCON=y
+CONFIG_SPL_CLK=y
+CONFIG_ROCKCHIP_GPIO=y
+CONFIG_SYS_I2C_ROCKCHIP=y
+CONFIG_MISC=y
+CONFIG_SUPPORT_EMMC_RPMB=y
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_ROCKCHIP=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_SDMA=y
+CONFIG_MMC_SDHCI_ROCKCHIP=y
+CONFIG_ETH_DESIGNWARE=y
+CONFIG_GMAC_ROCKCHIP=y
+CONFIG_REGULATOR_PWM=y
+CONFIG_PWM_ROCKCHIP=y
+CONFIG_SPL_RAM=y
+CONFIG_DM_RESET=y
+CONFIG_BAUDRATE=1500000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_SYS_NS16550_MEM32=y
+CONFIG_SYSRESET=y
+# CONFIG_BINMAN_FDT is not set
+CONFIG_ERRNO_STR=y
diff --git a/include/configs/evb_rk3588.h b/include/configs/evb_rk3588.h
new file mode 100644
index 0000000000..13411c9609
--- /dev/null
+++ b/include/configs/evb_rk3588.h
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * (C) Copyright 2016 Rockchip Electronics Co., Ltd
+ */
+
+#ifndef __CONFIGS_RK3588_EVB_H
+#define __CONFIGS_RK3588_EVB_H
+
+#include <configs/rk3588_common.h>
+
+#define ROCKCHIP_DEVICE_SETTINGS \
+ "stdout=serial,vidconsole\0" \
+ "stderr=serial,vidconsole\0"
+
+#endif
--
2.39.1
2
1

[PATCH 7/7] phy: phy-rockchip-snps-pcie3: Add pcie3_phymode setting
by fatorangecat@189.cn 24 Jan '23
by fatorangecat@189.cn 24 Jan '23
24 Jan '23
From: Jon Lin <jon.lin(a)rock-chips.com>
rk3588 pcie3 phy has a pcie3_phymode to decide how to use the four
lanes, add support in dts so that we can customize in dts.
The phy has two port and each port has two lane:
pcie30_phy_mode[2:0]
2: aggregation
1: bifurcation for port 1
0: bifurcation for port 0
Signed-off-by: Kever Yang <kever.yang(a)rock-chips.com>
Signed-off-by: Jon Lin <jon.lin(a)rock-chips.com>
---
include/dt-bindings/phy/phy-snps-pcie3.h | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 include/dt-bindings/phy/phy-snps-pcie3.h
diff --git a/include/dt-bindings/phy/phy-snps-pcie3.h b/include/dt-bindings/phy/phy-snps-pcie3.h
new file mode 100644
index 0000000000..5006947f22
--- /dev/null
+++ b/include/dt-bindings/phy/phy-snps-pcie3.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
+ */
+
+#ifndef _DT_BINDINGS_PHY_SNPS_PCIE3
+#define _DT_BINDINGS_PHY_SNPS_PCIE3
+
+/*
+ * pcie30_phy_mode[2:0]
+ * bit2: aggregation
+ * bit1: bifurcation for port 1
+ * bit0: bifurcation for port 0
+ */
+#define PHY_MODE_PCIE_AGGREGATION 4 /* PCIe3x4 */
+#define PHY_MODE_PCIE_NANBNB 0 /* P1:PCIe3x2 + P0:PCIe3x2 */
+#define PHY_MODE_PCIE_NANBBI 1 /* P1:PCIe3x2 + P0:PCIe3x1*2 */
+#define PHY_MODE_PCIE_NABINB 2 /* P1:PCIe3x1*2 + P0:PCIe3x2 */
+#define PHY_MODE_PCIE_NABIBI 3 /* P1:PCIe3x1*2 + P0:PCIe3x1*2 */
+
+#endif /* _DT_BINDINGS_PHY_SNPS_PCIE3 */
--
2.39.1
1
0
From: Joseph Chen <chenjh(a)rock-chips.com>
Add dts to RK3588 board, which is a must for ARM platform.
Signed-off-by: Joseph Chen <chenjh(a)rock-chips.com>
---
arch/arm/dts/rk3588-evb.dts | 31 +
arch/arm/dts/rk3588-u-boot.dtsi | 250 ++
arch/arm/dts/rk3588-vccio3-pinctrl.dtsi | 453 ++++
arch/arm/dts/rk3588.dtsi | 518 ++++
arch/arm/dts/rk3588s-pinctrl.dtsi | 3009 +++++++++++++++++++++++
arch/arm/dts/rk3588s.dtsi | 2370 ++++++++++++++++++
6 files changed, 6631 insertions(+)
create mode 100644 arch/arm/dts/rk3588-evb.dts
create mode 100644 arch/arm/dts/rk3588-u-boot.dtsi
create mode 100644 arch/arm/dts/rk3588-vccio3-pinctrl.dtsi
create mode 100644 arch/arm/dts/rk3588.dtsi
create mode 100644 arch/arm/dts/rk3588s-pinctrl.dtsi
create mode 100644 arch/arm/dts/rk3588s.dtsi
diff --git a/arch/arm/dts/rk3588-evb.dts b/arch/arm/dts/rk3588-evb.dts
new file mode 100644
index 0000000000..ad750d5b74
--- /dev/null
+++ b/arch/arm/dts/rk3588-evb.dts
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd
+ *
+ */
+
+/dts-v1/;
+#include "rk3588.dtsi"
+#include "rk3588-u-boot.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Rockchip RK3588 Evaluation Board";
+ compatible = "rockchip,rk3588-evb", "rockchip,rk3588";
+
+ adc-keys {
+ compatible = "adc-keys";
+ io-channels = <&saradc 1>;
+ io-channel-names = "buttons";
+ keyup-threshold-microvolt = <1800000>;
+ u-boot,dm-pre-reloc;
+ status = "okay";
+
+ volumeup-key {
+ u-boot,dm-pre-reloc;
+ linux,code = <KEY_VOLUMEUP>;
+ label = "volume up";
+ press-threshold-microvolt = <1750>;
+ };
+ };
+};
diff --git a/arch/arm/dts/rk3588-u-boot.dtsi b/arch/arm/dts/rk3588-u-boot.dtsi
new file mode 100644
index 0000000000..a38a6dc57f
--- /dev/null
+++ b/arch/arm/dts/rk3588-u-boot.dtsi
@@ -0,0 +1,250 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2021 Rockchip Electronics Co., Ltd
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+ aliases {
+ mmc0 = &sdhci;
+ mmc1 = &sdmmc;
+ };
+
+ chosen {
+ stdout-path = &uart2;
+ u-boot,spl-boot-order = &sdmmc, &sdhci, &spi_nand, &spi_nor;
+ };
+
+ secure-otp@fe3a0000 {
+ u-boot,dm-spl;
+ compatible = "rockchip,rk3588-secure-otp";
+ reg = <0x0 0xfe3a0000 0x0 0x4000>;
+ };
+};
+
+&firmware {
+ u-boot,dm-spl;
+};
+
+&gpio0 {
+ u-boot,dm-spl;
+ status = "okay";
+};
+
+&gpio1 {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&gpio2 {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&gpio3 {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&gpio4 {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&scmi {
+ u-boot,dm-spl;
+};
+
+&scmi_clk {
+ u-boot,dm-spl;
+};
+
+&sram {
+ u-boot,dm-spl;
+};
+
+&scmi_shmem {
+ u-boot,dm-spl;
+};
+
+&xin24m {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&cru {
+ u-boot,dm-spl;
+ status = "okay";
+};
+
+&psci {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&crypto {
+ u-boot,dm-spl;
+ status = "okay";
+};
+
+&sys_grf {
+ u-boot,dm-spl;
+ status = "okay";
+};
+
+&pcie30_phy_grf {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&php_grf {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&pipe_phy0_grf {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&pipe_phy1_grf {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&pipe_phy2_grf {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&uart2 {
+ u-boot,dm-spl;
+ status = "okay";
+};
+
+&hw_decompress {
+ u-boot,dm-spl;
+ status = "okay";
+};
+
+&rng {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&sfc {
+ u-boot,dm-spl;
+ status = "okay";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+ spi_nand: flash@0 {
+ u-boot,dm-spl;
+ compatible = "spi-nand";
+ reg = <0>;
+ spi-tx-bus-width = <1>;
+ spi-rx-bus-width = <4>;
+ spi-max-frequency = <80000000>;
+ };
+
+ spi_nor: flash@1 {
+ u-boot,dm-spl;
+ compatible = "jedec,spi-nor";
+ label = "sfc_nor";
+ reg = <0>;
+ spi-tx-bus-width = <1>;
+ spi-rx-bus-width = <4>;
+ spi-max-frequency = <80000000>;
+ };
+};
+
+&saradc {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
+
+&sdmmc {
+ bus-width = <4>;
+ u-boot,dm-spl;
+ cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
+ status = "okay";
+};
+
+&sdhci {
+ bus-width = <8>;
+ u-boot,dm-spl;
+ mmc-hs400-1_8v;
+ non-removable;
+ status = "okay";
+};
+
+/* Support SPL-PINCTRL:
+ * 1. ioc
+ * 2. pinctrl(sdmmc)
+ * 3. gpio if need
+ */
+&ioc {
+ u-boot,dm-spl;
+};
+
+&pinctrl {
+ u-boot,dm-spl;
+ /delete-node/ sdmmc;
+ sdmmc {
+ u-boot,dm-spl;
+ sdmmc_bus4: sdmmc-bus4 {
+ u-boot,dm-spl;
+ rockchip,pins =
+ /* sdmmc_d0 */
+ <4 RK_PD0 1 &pcfg_pull_up_drv_level_2>,
+ /* sdmmc_d1 */
+ <4 RK_PD1 1 &pcfg_pull_up_drv_level_2>,
+ /* sdmmc_d2 */
+ <4 RK_PD2 1 &pcfg_pull_up_drv_level_2>,
+ /* sdmmc_d3 */
+ <4 RK_PD3 1 &pcfg_pull_up_drv_level_2>;
+ };
+
+ sdmmc_clk: sdmmc-clk {
+ u-boot,dm-spl;
+ rockchip,pins =
+ /* sdmmc_clk */
+ <4 RK_PD5 1 &pcfg_pull_up_drv_level_2>;
+ };
+
+ sdmmc_cmd: sdmmc-cmd {
+ u-boot,dm-spl;
+ rockchip,pins =
+ /* sdmmc_cmd */
+ <4 RK_PD4 1 &pcfg_pull_up_drv_level_2>;
+ };
+
+ sdmmc_det: sdmmc-det {
+ u-boot,dm-spl;
+ rockchip,pins =
+ /* sdmmc_det */
+ <0 RK_PA4 1 &pcfg_pull_up>;
+ };
+
+ sdmmc_pwren: sdmmc-pwren {
+ u-boot,dm-spl;
+ rockchip,pins =
+ /* sdmmc_pwren */
+ <0 RK_PA5 2 &pcfg_pull_none>;
+ };
+ };
+};
+
+&pcfg_pull_up_drv_level_2 {
+ u-boot,dm-spl;
+};
+
+&pcfg_pull_up {
+ u-boot,dm-spl;
+};
+
+&pcfg_pull_none
+{
+ u-boot,dm-spl;
+};
diff --git a/arch/arm/dts/rk3588-vccio3-pinctrl.dtsi b/arch/arm/dts/rk3588-vccio3-pinctrl.dtsi
new file mode 100644
index 0000000000..4af6878a16
--- /dev/null
+++ b/arch/arm/dts/rk3588-vccio3-pinctrl.dtsi
@@ -0,0 +1,453 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
+ */
+
+#include <dt-bindings/pinctrl/rockchip.h>
+
+/*
+ * This file is auto generated by pin2dts tool, please keep these code
+ * by adding changes at end of this file.
+ */
+&pinctrl {
+ clk32k {
+ clk32k_out1: clk32k-out1 {
+ rockchip,pins =
+ /* clk32k_out1 */
+ <2 RK_PC5 1 &pcfg_pull_none>;
+ };
+
+ };
+
+ eth0 {
+ eth0_pins: eth0-pins {
+ rockchip,pins =
+ /* eth0_refclko_25m */
+ <2 RK_PC3 1 &pcfg_pull_none>;
+ };
+
+ };
+
+ fspi {
+ fspim1_pins: fspim1-pins {
+ rockchip,pins =
+ /* fspi_clk_m1 */
+ <2 RK_PB3 3 &pcfg_pull_none>,
+ /* fspi_cs0n_m1 */
+ <2 RK_PB4 3 &pcfg_pull_none>,
+ /* fspi_d0_m1 */
+ <2 RK_PA6 3 &pcfg_pull_none>,
+ /* fspi_d1_m1 */
+ <2 RK_PA7 3 &pcfg_pull_none>,
+ /* fspi_d2_m1 */
+ <2 RK_PB0 3 &pcfg_pull_none>,
+ /* fspi_d3_m1 */
+ <2 RK_PB1 3 &pcfg_pull_none>;
+ };
+
+ fspim1_cs1: fspim1-cs1 {
+ rockchip,pins =
+ /* fspi_cs1n_m1 */
+ <2 RK_PB5 3 &pcfg_pull_up>;
+ };
+ };
+
+ gmac0 {
+ gmac0_miim: gmac0-miim {
+ rockchip,pins =
+ /* gmac0_mdc */
+ <4 RK_PC4 1 &pcfg_pull_none>,
+ /* gmac0_mdio */
+ <4 RK_PC5 1 &pcfg_pull_none>;
+ };
+
+ gmac0_clkinout: gmac0-clkinout {
+ rockchip,pins =
+ /* gmac0_mclkinout */
+ <4 RK_PC3 1 &pcfg_pull_none>;
+ };
+
+ gmac0_rx_bus2: gmac0-rx-bus2 {
+ rockchip,pins =
+ /* gmac0_rxd0 */
+ <2 RK_PC1 1 &pcfg_pull_none>,
+ /* gmac0_rxd1 */
+ <2 RK_PC2 1 &pcfg_pull_none>,
+ /* gmac0_rxdv_crs */
+ <4 RK_PC2 1 &pcfg_pull_none>;
+ };
+
+ gmac0_tx_bus2: gmac0-tx-bus2 {
+ rockchip,pins =
+ /* gmac0_txd0 */
+ <2 RK_PB6 1 &pcfg_pull_none>,
+ /* gmac0_txd1 */
+ <2 RK_PB7 1 &pcfg_pull_none>,
+ /* gmac0_txen */
+ <2 RK_PC0 1 &pcfg_pull_none>;
+ };
+
+ gmac0_rgmii_clk: gmac0-rgmii-clk {
+ rockchip,pins =
+ /* gmac0_rxclk */
+ <2 RK_PB0 1 &pcfg_pull_none>,
+ /* gmac0_txclk */
+ <2 RK_PB3 1 &pcfg_pull_none>;
+ };
+
+ gmac0_rgmii_bus: gmac0-rgmii-bus {
+ rockchip,pins =
+ /* gmac0_rxd2 */
+ <2 RK_PA6 1 &pcfg_pull_none>,
+ /* gmac0_rxd3 */
+ <2 RK_PA7 1 &pcfg_pull_none>,
+ /* gmac0_txd2 */
+ <2 RK_PB1 1 &pcfg_pull_none>,
+ /* gmac0_txd3 */
+ <2 RK_PB2 1 &pcfg_pull_none>;
+ };
+
+ gmac0_ppsclk: gmac0-ppsclk {
+ rockchip,pins =
+ /* gmac0_ppsclk */
+ <2 RK_PC4 1 &pcfg_pull_none>;
+ };
+
+ gmac0_ppstring: gmac0-ppstring {
+ rockchip,pins =
+ /* gmac0_ppstring */
+ <2 RK_PB5 1 &pcfg_pull_none>;
+ };
+
+ gmac0_ptp_refclk: gmac0-ptp-refclk {
+ rockchip,pins =
+ /* gmac0_ptp_refclk */
+ <2 RK_PB4 1 &pcfg_pull_none>;
+ };
+
+ gmac0_txer: gmac0-txer {
+ rockchip,pins =
+ /* gmac0_txer */
+ <4 RK_PC6 1 &pcfg_pull_none>;
+ };
+
+ };
+
+ hdmi {
+ hdmim0_pins: hdmim0-pins {
+ rockchip,pins =
+ /* hdmi_tx1_cec_m0 */
+ <2 RK_PC4 4 &pcfg_pull_none>,
+ /* hdmi_tx1_scl_m0 */
+ <2 RK_PB5 4 &pcfg_pull_none>,
+ /* hdmi_tx1_sda_m0 */
+ <2 RK_PB4 4 &pcfg_pull_none>;
+ };
+ };
+
+ i2c0 {
+ i2c0m1_xfer: i2c0m1-xfer {
+ rockchip,pins =
+ /* i2c0_scl_m1 */
+ <4 RK_PC5 9 &pcfg_pull_none_smt>,
+ /* i2c0_sda_m1 */
+ <4 RK_PC6 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c2 {
+ i2c2m1_xfer: i2c2m1-xfer {
+ rockchip,pins =
+ /* i2c2_scl_m1 */
+ <2 RK_PC1 9 &pcfg_pull_none_smt>,
+ /* i2c2_sda_m1 */
+ <2 RK_PC0 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c3 {
+ i2c3m3_xfer: i2c3m3-xfer {
+ rockchip,pins =
+ /* i2c3_scl_m3 */
+ <2 RK_PB2 9 &pcfg_pull_none_smt>,
+ /* i2c3_sda_m3 */
+ <2 RK_PB3 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c4 {
+ i2c4m1_xfer: i2c4m1-xfer {
+ rockchip,pins =
+ /* i2c4_scl_m1 */
+ <2 RK_PB5 9 &pcfg_pull_none_smt>,
+ /* i2c4_sda_m1 */
+ <2 RK_PB4 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c5 {
+ i2c5m4_xfer: i2c5m4-xfer {
+ rockchip,pins =
+ /* i2c5_scl_m4 */
+ <2 RK_PB6 9 &pcfg_pull_none_smt>,
+ /* i2c5_sda_m4 */
+ <2 RK_PB7 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c6 {
+ i2c6m2_xfer: i2c6m2-xfer {
+ rockchip,pins =
+ /* i2c6_scl_m2 */
+ <2 RK_PC3 9 &pcfg_pull_none_smt>,
+ /* i2c6_sda_m2 */
+ <2 RK_PC2 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c7 {
+ i2c7m1_xfer: i2c7m1-xfer {
+ rockchip,pins =
+ /* i2c7_scl_m1 */
+ <4 RK_PC3 9 &pcfg_pull_none_smt>,
+ /* i2c7_sda_m1 */
+ <4 RK_PC4 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c8 {
+ i2c8m1_xfer: i2c8m1-xfer {
+ rockchip,pins =
+ /* i2c8_scl_m1 */
+ <2 RK_PB0 9 &pcfg_pull_none_smt>,
+ /* i2c8_sda_m1 */
+ <2 RK_PB1 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2s2 {
+ i2s2m0_lrck: i2s2m0-lrck {
+ rockchip,pins =
+ /* i2s2m0_lrck */
+ <2 RK_PC0 2 &pcfg_pull_none>;
+ };
+
+ i2s2m0_mclk: i2s2m0-mclk {
+ rockchip,pins =
+ /* i2s2m0_mclk */
+ <2 RK_PB6 2 &pcfg_pull_none>;
+ };
+
+ i2s2m0_sclk: i2s2m0-sclk {
+ rockchip,pins =
+ /* i2s2m0_sclk */
+ <2 RK_PB7 2 &pcfg_pull_none>;
+ };
+
+ i2s2m0_sdi: i2s2m0-sdi {
+ rockchip,pins =
+ /* i2s2m0_sdi */
+ <2 RK_PC3 2 &pcfg_pull_none>;
+ };
+
+ i2s2m0_sdo: i2s2m0-sdo {
+ rockchip,pins =
+ /* i2s2m0_sdo */
+ <4 RK_PC3 2 &pcfg_pull_none>;
+ };
+ };
+
+ pwm2 {
+ pwm2m2_pins: pwm2m2-pins {
+ rockchip,pins =
+ /* pwm2_m2 */
+ <4 RK_PC2 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm4 {
+ pwm4m1_pins: pwm4m1-pins {
+ rockchip,pins =
+ /* pwm4_m1 */
+ <4 RK_PC3 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm5 {
+ pwm5m2_pins: pwm5m2-pins {
+ rockchip,pins =
+ /* pwm5_m2 */
+ <4 RK_PC4 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm6 {
+ pwm6m2_pins: pwm6m2-pins {
+ rockchip,pins =
+ /* pwm6_m2 */
+ <4 RK_PC5 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm7 {
+ pwm7m3_pins: pwm7m3-pins {
+ rockchip,pins =
+ /* pwm7_ir_m3 */
+ <4 RK_PC6 11 &pcfg_pull_none>;
+ };
+ };
+
+ sdio {
+ sdiom0_pins: sdiom0-pins {
+ rockchip,pins =
+ /* sdio_clk_m0 */
+ <2 RK_PB3 2 &pcfg_pull_none>,
+ /* sdio_cmd_m0 */
+ <2 RK_PB2 2 &pcfg_pull_none>,
+ /* sdio_d0_m0 */
+ <2 RK_PA6 2 &pcfg_pull_none>,
+ /* sdio_d1_m0 */
+ <2 RK_PA7 2 &pcfg_pull_none>,
+ /* sdio_d2_m0 */
+ <2 RK_PB0 2 &pcfg_pull_none>,
+ /* sdio_d3_m0 */
+ <2 RK_PB1 2 &pcfg_pull_none>;
+ };
+ };
+
+ spi1 {
+ spi1m0_pins: spi1m0-pins {
+ rockchip,pins =
+ /* spi1_clk_m0 */
+ <2 RK_PC0 8 &pcfg_pull_none>,
+ /* spi1_miso_m0 */
+ <2 RK_PC1 8 &pcfg_pull_none>,
+ /* spi1_mosi_m0 */
+ <2 RK_PC2 8 &pcfg_pull_none>;
+ };
+
+ spi1m0_cs0: spi1m0-cs0 {
+ rockchip,pins =
+ /* spi1_cs0_m0 */
+ <2 RK_PC3 8 &pcfg_pull_none>;
+ };
+
+ spi1m0_cs1: spi1m0-cs1 {
+ rockchip,pins =
+ /* spi1_cs1_m0 */
+ <2 RK_PC4 8 &pcfg_pull_none>;
+ };
+ };
+
+ spi3 {
+ spi3m0_pins: spi3m0-pins {
+ rockchip,pins =
+ /* spi3_clk_m0 */
+ <4 RK_PC6 8 &pcfg_pull_none>,
+ /* spi3_miso_m0 */
+ <4 RK_PC4 8 &pcfg_pull_none>,
+ /* spi3_mosi_m0 */
+ <4 RK_PC5 8 &pcfg_pull_none>;
+ };
+
+ spi3m0_cs0: spi3m0-cs0 {
+ rockchip,pins =
+ /* spi3_cs0_m0 */
+ <4 RK_PC2 8 &pcfg_pull_none>;
+ };
+
+ spi3m0_cs1: spi3m0-cs1 {
+ rockchip,pins =
+ /* spi3_cs1_m0 */
+ <4 RK_PC3 8 &pcfg_pull_none>;
+ };
+ };
+
+ uart1 {
+ uart1m0_xfer: uart1m0-xfer {
+ rockchip,pins =
+ /* uart1_rx_m0 */
+ <2 RK_PB6 10 &pcfg_pull_up>,
+ /* uart1_tx_m0 */
+ <2 RK_PB7 10 &pcfg_pull_up>;
+ };
+
+ uart1m0_ctsn: uart1m0-ctsn {
+ rockchip,pins =
+ /* uart1m0_ctsn */
+ <2 RK_PC1 10 &pcfg_pull_none>;
+ };
+
+ uart1m0_rtsn: uart1m0-rtsn {
+ rockchip,pins =
+ /* uart1m0_rtsn */
+ <2 RK_PC0 10 &pcfg_pull_none>;
+ };
+ };
+
+ uart6 {
+ uart6m0_xfer: uart6m0-xfer {
+ rockchip,pins =
+ /* uart6_rx_m0 */
+ <2 RK_PA6 10 &pcfg_pull_up>,
+ /* uart6_tx_m0 */
+ <2 RK_PA7 10 &pcfg_pull_up>;
+ };
+
+ uart6m0_ctsn: uart6m0-ctsn {
+ rockchip,pins =
+ /* uart6m0_ctsn */
+ <2 RK_PB1 10 &pcfg_pull_none>;
+ };
+
+ uart6m0_rtsn: uart6m0-rtsn {
+ rockchip,pins =
+ /* uart6m0_rtsn */
+ <2 RK_PB0 10 &pcfg_pull_none>;
+ };
+ };
+
+ uart7 {
+ uart7m0_xfer: uart7m0-xfer {
+ rockchip,pins =
+ /* uart7_rx_m0 */
+ <2 RK_PB4 10 &pcfg_pull_up>,
+ /* uart7_tx_m0 */
+ <2 RK_PB5 10 &pcfg_pull_up>;
+ };
+
+ uart7m0_ctsn: uart7m0-ctsn {
+ rockchip,pins =
+ /* uart7m0_ctsn */
+ <4 RK_PC6 10 &pcfg_pull_none>;
+ };
+
+ uart7m0_rtsn: uart7m0-rtsn {
+ rockchip,pins =
+ /* uart7m0_rtsn */
+ <4 RK_PC2 10 &pcfg_pull_none>;
+ };
+ };
+
+ uart9 {
+ uart9m0_xfer: uart9m0-xfer {
+ rockchip,pins =
+ /* uart9_rx_m0 */
+ <2 RK_PC4 10 &pcfg_pull_up>,
+ /* uart9_tx_m0 */
+ <2 RK_PC2 10 &pcfg_pull_up>;
+ };
+
+ uart9m0_ctsn: uart9m0-ctsn {
+ rockchip,pins =
+ /* uart9m0_ctsn */
+ <4 RK_PC5 10 &pcfg_pull_none>;
+ };
+
+ uart9m0_rtsn: uart9m0-rtsn {
+ rockchip,pins =
+ /* uart9m0_rtsn */
+ <4 RK_PC4 10 &pcfg_pull_none>;
+ };
+ };
+};
diff --git a/arch/arm/dts/rk3588.dtsi b/arch/arm/dts/rk3588.dtsi
new file mode 100644
index 0000000000..3e1bcc83fe
--- /dev/null
+++ b/arch/arm/dts/rk3588.dtsi
@@ -0,0 +1,518 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
+ */
+
+#include <dt-bindings/phy/phy-snps-pcie3.h>
+#include "rk3588s.dtsi"
+#include "rk3588-vccio3-pinctrl.dtsi"
+
+/ {
+ aliases {
+ edp0 = &edp0;
+ edp1 = &edp1;
+ ethernet0 = &gmac0;
+ hdptx0 = &hdptxphy0;
+ hdptx1 = &hdptxphy1;
+ };
+
+ usbdrd3_1: usbdrd3_1 {
+ compatible = "rockchip,rk3588-dwc3", "rockchip,rk3399-dwc3";
+ clocks = <&cru REF_CLK_USB3OTG1>, <&cru SUSPEND_CLK_USB3OTG1>,
+ <&cru ACLK_USB3OTG1>;
+ clock-names = "ref", "suspend", "bus";
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+ status = "disabled";
+
+ usbdrd_dwc3_1: usb@fc400000 {
+ compatible = "snps,dwc3";
+ reg = <0x0 0xfc400000 0x0 0x400000>;
+ interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&power RK3588_PD_USB>;
+ resets = <&cru SRST_A_USB3OTG1>;
+ reset-names = "usb3-otg";
+ dr_mode = "host";
+ phy_type = "utmi_wide";
+ snps,dis_enblslpm_quirk;
+ snps,dis-u2-freeclk-exists-quirk;
+ snps,dis-del-phy-power-chg-quirk;
+ snps,dis-tx-ipgap-linecheck-quirk;
+ status = "disabled";
+ };
+ };
+
+ pcie30_phy_grf: syscon@fd5b8000 {
+ compatible = "rockchip,pcie30-phy-grf", "syscon";
+ reg = <0x0 0xfd5b8000 0x0 0x10000>;
+ };
+
+ pipe_phy1_grf: syscon@fd5c0000 {
+ compatible = "rockchip,pipe-phy-grf", "syscon";
+ reg = <0x0 0xfd5c0000 0x0 0x100>;
+ };
+
+ usbdpphy1_grf: syscon@fd5cc000 {
+ compatible = "rockchip,rk3588-usbdpphy-grf", "syscon";
+ reg = <0x0 0xfd5cc000 0x0 0x4000>;
+ };
+
+ usb2phy1_grf: syscon@fd5d4000 {
+ compatible = "rockchip,rk3588-usb2phy-grf", "syscon",
+ "simple-mfd";
+ reg = <0x0 0xfd5d4000 0x0 0x4000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ u2phy1: usb2-phy@4000 {
+ compatible = "rockchip,rk3588-usb2phy";
+ reg = <0x4000 0x10>;
+ interrupts = <GIC_SPI 394 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>;
+ clock-names = "phyclk";
+ #clock-cells = <0>;
+ status = "disabled";
+
+ u2phy1_otg: otg-port {
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+ };
+ };
+
+ hdptxphy1_grf: syscon@fd5e4000 {
+ compatible = "rockchip,rk3588-hdptxphy-grf", "syscon";
+ reg = <0x0 0xfd5e4000 0x0 0x100>;
+ };
+
+ spdif_tx5: spdif-tx@fddb8000 {
+ compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0xfddb8000 0x0 0x1000>;
+ interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>;
+ dmas = <&dmac1 22>;
+ dma-names = "tx";
+ clock-names = "mclk", "hclk";
+ clocks = <&cru MCLK_SPDIF5_DP1>, <&cru HCLK_SPDIF5_DP1>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ i2s8_8ch: i2s@fddc8000 {
+ compatible = "rockchip,rk3588-i2s-tdm";
+ reg = <0x0 0xfddc8000 0x0 0x1000>;
+ interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S8_8CH_TX>, <&cru HCLK_I2S8_8CH>;
+ clock-names = "mclk_tx", "hclk";
+ dmas = <&dmac2 22>;
+ dma-names = "tx";
+ resets = <&cru SRST_M_I2S8_8CH_TX>;
+ reset-names = "tx-m";
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ spdif_tx4: spdif-tx@fdde8000 {
+ compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0xfdde8000 0x0 0x1000>;
+ interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
+ dmas = <&dmac1 8>;
+ dma-names = "tx";
+ clock-names = "mclk", "hclk";
+ clocks = <&cru MCLK_SPDIF4>, <&cru HCLK_SPDIF4>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ i2s6_8ch: i2s@fddf4000 {
+ compatible = "rockchip,rk3588-i2s-tdm";
+ reg = <0x0 0xfddf4000 0x0 0x1000>;
+ interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S6_8CH_TX>, <&cru HCLK_I2S6_8CH>;
+ clock-names = "mclk_tx", "hclk";
+ dmas = <&dmac2 4>;
+ dma-names = "tx";
+ resets = <&cru SRST_M_I2S6_8CH_TX>;
+ reset-names = "tx-m";
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ i2s7_8ch: i2s@fddf8000 {
+ compatible = "rockchip,rk3588-i2s-tdm";
+ reg = <0x0 0xfddf8000 0x0 0x1000>;
+ interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S7_8CH_RX>, <&cru HCLK_I2S7_8CH>;
+ clock-names = "mclk_rx", "hclk";
+ dmas = <&dmac2 21>;
+ dma-names = "rx";
+ resets = <&cru SRST_M_I2S7_8CH_RX>;
+ reset-names = "rx-m";
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ i2s10_8ch: i2s@fde00000 {
+ compatible = "rockchip,rk3588-i2s-tdm";
+ reg = <0x0 0xfde00000 0x0 0x1000>;
+ interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S10_8CH_RX>, <&cru HCLK_I2S10_8CH>;
+ clock-names = "mclk_rx", "hclk";
+ dmas = <&dmac2 24>;
+ dma-names = "rx";
+ resets = <&cru SRST_M_I2S10_8CH_RX>;
+ reset-names = "rx-m";
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ spdif_rx1: spdif-rx@fde10000 {
+ compatible = "rockchip,rk3588-spdifrx", "rockchip,rk3308-spdifrx";
+ reg = <0x0 0xfde10000 0x0 0x1000>;
+ interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_SPDIFRX1>, <&cru HCLK_SPDIFRX1>;
+ clock-names = "mclk", "hclk";
+ dmas = <&dmac0 22>;
+ dma-names = "rx";
+ resets = <&cru SRST_M_SPDIFRX1>;
+ reset-names = "spdifrx-m";
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ spdif_rx2: spdif-rx@fde18000 {
+ compatible = "rockchip,rk3588-spdifrx", "rockchip,rk3308-spdifrx";
+ reg = <0x0 0xfde18000 0x0 0x1000>;
+ interrupts = <GIC_SPI 201 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_SPDIFRX2>, <&cru HCLK_SPDIFRX2>;
+ clock-names = "mclk", "hclk";
+ dmas = <&dmac0 23>;
+ dma-names = "rx";
+ resets = <&cru SRST_M_SPDIFRX2>;
+ reset-names = "spdifrx-m";
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ edp1: edp@fded0000 {
+ compatible = "rockchip,rk3588-edp";
+ reg = <0x0 0xfded0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru CLK_EDP1_24M>, <&cru PCLK_EDP1>,
+ <&cru CLK_EDP1_200M>;
+ clock-names = "dp", "pclk", "spdif";
+ resets = <&cru SRST_EDP1_24M>, <&cru SRST_P_EDP1>;
+ reset-names = "dp", "apb";
+ phys = <&hdptxphy1>;
+ phy-names = "dp";
+ power-domains = <&power RK3588_PD_VO1>;
+ rockchip,grf = <&vo1_grf>;
+ status = "disabled";
+ };
+
+ pcie3x4: pcie@fe150000 {
+ compatible = "rockchip,rk3588-pcie", "snps,dw-pcie";
+ #address-cells = <3>;
+ #size-cells = <2>;
+ bus-range = <0x00 0x0f>;
+ clocks = <&cru ACLK_PCIE_4L_MSTR>, <&cru ACLK_PCIE_4L_SLV>,
+ <&cru ACLK_PCIE_4L_DBI>, <&cru PCLK_PCIE_4L>,
+ <&cru CLK_PCIE_AUX0>;
+ clock-names = "aclk_mst", "aclk_slv",
+ "aclk_dbi", "pclk", "aux";
+ device_type = "pci";
+ interrupts = <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "sys", "pmc", "msg", "legacy", "err";
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 7>;
+ interrupt-map = <0 0 0 1 &pcie3x4_intc 0>,
+ <0 0 0 2 &pcie3x4_intc 1>,
+ <0 0 0 3 &pcie3x4_intc 2>,
+ <0 0 0 4 &pcie3x4_intc 3>;
+ linux,pci-domain = <0>;
+ num-ib-windows = <16>;
+ num-ob-windows = <16>;
+ max-link-speed = <3>;
+ msi-map = <0x0000 &its 0x0000 0x1000>;
+ num-lanes = <4>;
+ phys = <&pcie30phy>;
+ phy-names = "pcie-phy";
+ power-domains = <&power RK3588_PD_PCIE>;
+ ranges = <0x00000800 0x0 0x80000000 0x9 0x00000000 0x0 0x800000
+ 0x81000000 0x0 0x80800000 0x9 0x00800000 0x0 0x100000
+ 0x83000000 0x0 0x80900000 0x9 0x00900000 0x0 0x3f700000>;
+ reg = <0xa 0x40000000 0x0 0x400000>,
+ <0x0 0xfe150000 0x0 0x10000>;
+ reg-names = "pcie-dbi", "pcie-apb";
+ resets = <&cru SRST_PCIE0_POWER_UP>;
+ reset-names = "pipe";
+ status = "disabled";
+
+ pcie3x4_intc: legacy-interrupt-controller {
+ interrupt-controller;
+ #address-cells = <0>;
+ #interrupt-cells = <1>;
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 260 IRQ_TYPE_EDGE_RISING>;
+ };
+ };
+
+ pcie3x2: pcie@fe160000 {
+ compatible = "rockchip,rk3588-pcie", "snps,dw-pcie";
+ #address-cells = <3>;
+ #size-cells = <2>;
+ bus-range = <0x10 0x1f>;
+ clocks = <&cru ACLK_PCIE_2L_MSTR>, <&cru ACLK_PCIE_2L_SLV>,
+ <&cru ACLK_PCIE_2L_DBI>, <&cru PCLK_PCIE_2L>,
+ <&cru CLK_PCIE_AUX1>;
+ clock-names = "aclk_mst", "aclk_slv",
+ "aclk_dbi", "pclk", "aux";
+ device_type = "pci";
+ interrupts = <GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "sys", "pmc", "msg", "legacy", "err";
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 7>;
+ interrupt-map = <0 0 0 1 &pcie3x2_intc 0>,
+ <0 0 0 2 &pcie3x2_intc 1>,
+ <0 0 0 3 &pcie3x2_intc 2>,
+ <0 0 0 4 &pcie3x2_intc 3>;
+ linux,pci-domain = <1>;
+ num-ib-windows = <16>;
+ num-ob-windows = <16>;
+ max-link-speed = <3>;
+ msi-map = <0x1000 &its 0x1000 0x1000>;
+ num-lanes = <2>;
+ phys = <&pcie30phy>;
+ phy-names = "pcie-phy";
+ power-domains = <&power RK3588_PD_PHP>;
+ ranges = <0x00000800 0x0 0x80000000 0x9 0x40000000 0x0 0x800000
+ 0x81000000 0x0 0x80800000 0x9 0x40800000 0x0 0x100000
+ 0x83000000 0x0 0x80900000 0x9 0x40900000 0x0 0x3f700000>;
+ reg = <0xa 0x40400000 0x0 0x400000>,
+ <0x0 0xfe160000 0x0 0x10000>;
+ reg-names = "pcie-dbi", "pcie-apb";
+ resets = <&cru SRST_PCIE1_POWER_UP>;
+ reset-names = "pipe";
+ status = "disabled";
+
+ pcie3x2_intc: legacy-interrupt-controller {
+ interrupt-controller;
+ #address-cells = <0>;
+ #interrupt-cells = <1>;
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 255 IRQ_TYPE_EDGE_RISING>;
+ };
+ };
+
+ pcie2x1l0: pcie@fe170000 {
+ compatible = "rockchip,rk3588-pcie", "snps,dw-pcie";
+ #address-cells = <3>;
+ #size-cells = <2>;
+ bus-range = <0x20 0x2f>;
+ clocks = <&cru ACLK_PCIE_1L0_MSTR>, <&cru ACLK_PCIE_1L0_SLV>,
+ <&cru ACLK_PCIE_1L0_DBI>, <&cru PCLK_PCIE_1L0>,
+ <&cru CLK_PCIE_AUX2>;
+ clock-names = "aclk_mst", "aclk_slv",
+ "aclk_dbi", "pclk", "aux";
+ device_type = "pci";
+ interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "sys", "pmc", "msg", "legacy", "err";
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 7>;
+ interrupt-map = <0 0 0 1 &pcie2x1l0_intc 0>,
+ <0 0 0 2 &pcie2x1l0_intc 1>,
+ <0 0 0 3 &pcie2x1l0_intc 2>,
+ <0 0 0 4 &pcie2x1l0_intc 3>;
+ linux,pci-domain = <2>;
+ num-ib-windows = <8>;
+ num-ob-windows = <8>;
+ max-link-speed = <2>;
+ msi-map = <0x2000 &its 0x2000 0x1000>;
+ num-lanes = <1>;
+ phys = <&combphy1_ps PHY_TYPE_PCIE>;
+ phy-names = "pcie-phy";
+ power-domains = <&power RK3588_PD_PHP>;
+ ranges = <0x00000800 0x0 0x80000000 0x9 0x80000000 0x0 0x800000
+ 0x81000000 0x0 0x80800000 0x9 0x80800000 0x0 0x100000
+ 0x83000000 0x0 0x80900000 0x9 0x80900000 0x0 0x3f700000>;
+ reg = <0xa 0x40800000 0x0 0x400000>,
+ <0x0 0xfe170000 0x0 0x10000>;
+ reg-names = "pcie-dbi", "pcie-apb";
+ resets = <&cru SRST_PCIE2_POWER_UP>;
+ reset-names = "pipe";
+ status = "disabled";
+
+ pcie2x1l0_intc: legacy-interrupt-controller {
+ interrupt-controller;
+ #address-cells = <0>;
+ #interrupt-cells = <1>;
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 240 IRQ_TYPE_EDGE_RISING>;
+ };
+ };
+
+ gmac0: ethernet@fe1b0000 {
+ compatible = "rockchip,rk3588-gmac", "snps,dwmac-4.20a";
+ reg = <0x0 0xfe1b0000 0x0 0x10000>;
+ interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq", "eth_wake_irq";
+ rockchip,grf = <&sys_grf>;
+ rockchip,php_grf = <&php_grf>;
+ clocks = <&cru CLK_GMAC0>, <&cru ACLK_GMAC0>,
+ <&cru PCLK_GMAC0>, <&cru CLK_GMAC0_PTP_REF>;
+ clock-names = "stmmaceth", "aclk_mac",
+ "pclk_mac", "ptp_ref";
+ resets = <&cru SRST_A_GMAC0>;
+ reset-names = "stmmaceth";
+
+ snps,mixed-burst;
+ snps,tso;
+
+ snps,axi-config = <&gmac0_stmmac_axi_setup>;
+ snps,mtl-rx-config = <&gmac0_mtl_rx_setup>;
+ snps,mtl-tx-config = <&gmac0_mtl_tx_setup>;
+ status = "disabled";
+
+ mdio0: mdio {
+ compatible = "snps,dwmac-mdio";
+ #address-cells = <0x1>;
+ #size-cells = <0x0>;
+ };
+
+ gmac0_stmmac_axi_setup: stmmac-axi-config {
+ snps,wr_osr_lmt = <4>;
+ snps,rd_osr_lmt = <8>;
+ snps,blen = <0 0 0 0 16 8 4>;
+ };
+
+ gmac0_mtl_rx_setup: rx-queues-config {
+ snps,rx-queues-to-use = <2>;
+ queue0 {};
+ queue1 {};
+ };
+
+ gmac0_mtl_tx_setup: tx-queues-config {
+ snps,tx-queues-to-use = <2>;
+ queue0 {};
+ queue1 {};
+ };
+ };
+
+ sata1: sata@fe220000 {
+ compatible = "snps,dwc-ahci";
+ reg = <0 0xfe220000 0 0x1000>;
+ clocks = <&cru ACLK_SATA1>, <&cru CLK_PMALIVE1>,
+ <&cru CLK_RXOOB1>, <&cru CLK_PIPEPHY1_REF>;
+ clock-names = "sata", "pmalive", "rxoob", "ref";
+ interrupts = <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "hostc";
+ phys = <&combphy1_ps PHY_TYPE_SATA>;
+ phy-names = "sata-phy";
+ ports-implemented = <0x1>;
+ power-domains = <&power RK3588_PD_PHP>;
+ status = "disabled";
+ };
+
+ crypto: crypto@fe370000 {
+ compatible = "rockchip,rk3588-crypto";
+ reg = <0x0 0xfe370000 0x0 0x4000>;
+ clocks = <&scmi_clk SCMI_CRYPTO_CORE>, <&scmi_clk SCMI_CRYPTO_PKA>;
+ clock-names = "sclk_crypto", "apkclk_crypto";
+ clock-frequency = <350000000>, <350000000>;
+ status = "disabled";
+ };
+
+ rng: rng@fe378000 {
+ compatible = "rockchip,trngv1";
+ reg = <0x0 0xfe378000 0x0 0x200>;
+ status = "disabled";
+ };
+
+ hdptxphy1: phy@fed70000 {
+ compatible = "rockchip,rk3588-hdptx-phy";
+ reg = <0x0 0xfed70000 0x0 0x2000>;
+ clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>, <&cru PCLK_HDPTX1>;
+ clock-names = "ref", "apb";
+ resets = <&cru SRST_HDPTX1>, <&cru SRST_P_HDPTX1>,
+ <&cru SRST_HDPTX1_INIT>, <&cru SRST_HDPTX1_CMN>,
+ <&cru SRST_HDPTX1_LANE>, <&cru SRST_HDPTX1_ROPLL>,
+ <&cru SRST_HDPTX1_LCPLL>;
+ reset-names = "phy", "apb", "init", "cmn", "lane", "ropll",
+ "lcpll";
+ rockchip,grf = <&hdptxphy1_grf>;
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+
+ usbdp_phy1: phy@fed90000 {
+ compatible = "rockchip,rk3588-usbdp-phy";
+ reg = <0x0 0xfed90000 0x0 0x10000>;
+ rockchip,usb-grf = <&usb_grf>;
+ rockchip,usbdpphy-grf = <&usbdpphy1_grf>;
+ rockchip,vo-grf = <&vo0_grf>;
+ clocks = <&cru CLK_USBDPPHY_MIPIDCPPHY_REF>,
+ <&cru CLK_USBDP_PHY1_IMMORTAL>,
+ <&cru PCLK_USBDPPHY1>;
+ clock-names = "refclk", "immortal", "pclk";
+ resets = <&cru SRST_USBDP_COMBO_PHY1_INIT>,
+ <&cru SRST_USBDP_COMBO_PHY1_CMN>,
+ <&cru SRST_USBDP_COMBO_PHY1_LANE>,
+ <&cru SRST_USBDP_COMBO_PHY1_PCS>,
+ <&cru SRST_P_USBDPPHY1>;
+ reset-names = "init", "cmn", "lane", "pcs_apb", "pma_apb";
+ status = "disabled";
+
+ usbdp_phy1_dp: dp-port {
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+
+ usbdp_phy1_u3: u3-port {
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+ };
+
+ combphy1_ps: phy@fee10000 {
+ compatible = "rockchip,rk3588-naneng-combphy";
+ reg = <0x0 0xfee10000 0x0 0x100>;
+ #phy-cells = <1>;
+ clocks = <&cru CLK_REF_PIPE_PHY1>, <&cru PCLK_PCIE_COMBO_PIPE_PHY1>;
+ clock-names = "refclk", "apbclk";
+ assigned-clocks = <&cru CLK_REF_PIPE_PHY1>;
+ assigned-clock-rates = <100000000>;
+ resets = <&cru SRST_P_PCIE2_PHY1>, <&cru SRST_REF_PIPE_PHY1>;
+ reset-names = "combphy-apb", "combphy";
+ rockchip,pipe-grf = <&php_grf>;
+ rockchip,pipe-phy-grf = <&pipe_phy1_grf>;
+ rockchip,pcie1ln-sel-bits = <0x100 0 0 0>;
+ status = "disabled";
+ };
+
+ pcie30phy: phy@fee80000 {
+ compatible = "rockchip,rk3588-pcie3-phy";
+ reg = <0x0 0xfee80000 0x0 0x20000>;
+ #phy-cells = <0>;
+ clocks = <&cru PCLK_PCIE_COMBO_PIPE_PHY>;
+ clock-names = "pclk";
+ resets = <&cru SRST_PCIE30_PHY>;
+ reset-names = "phy";
+ rockchip,pipe-grf = <&php_grf>;
+ rockchip,phy-grf = <&pcie30_phy_grf>;
+ status = "disabled";
+ };
+
+};
diff --git a/arch/arm/dts/rk3588s-pinctrl.dtsi b/arch/arm/dts/rk3588s-pinctrl.dtsi
new file mode 100644
index 0000000000..64453012a8
--- /dev/null
+++ b/arch/arm/dts/rk3588s-pinctrl.dtsi
@@ -0,0 +1,3009 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
+ */
+
+#include <dt-bindings/pinctrl/rockchip.h>
+#include "rockchip-pinconf.dtsi"
+
+/*
+ * This file is auto generated by pin2dts tool, please keep these code
+ * by adding changes at end of this file.
+ */
+&pinctrl {
+ auddsm {
+ auddsm_pins: auddsm-pins {
+ rockchip,pins =
+ /* auddsm_ln */
+ <3 RK_PA1 4 &pcfg_pull_none>,
+ /* auddsm_lp */
+ <3 RK_PA2 4 &pcfg_pull_none>,
+ /* auddsm_rn */
+ <3 RK_PA3 4 &pcfg_pull_none>,
+ /* auddsm_rp */
+ <3 RK_PA4 4 &pcfg_pull_none>;
+ };
+ };
+
+ bt1120 {
+ bt1120_pins: bt1120-pins {
+ rockchip,pins =
+ /* bt1120_clkout */
+ <4 RK_PB0 2 &pcfg_pull_none>,
+ /* bt1120_d0 */
+ <4 RK_PA0 2 &pcfg_pull_none>,
+ /* bt1120_d1 */
+ <4 RK_PA1 2 &pcfg_pull_none>,
+ /* bt1120_d2 */
+ <4 RK_PA2 2 &pcfg_pull_none>,
+ /* bt1120_d3 */
+ <4 RK_PA3 2 &pcfg_pull_none>,
+ /* bt1120_d4 */
+ <4 RK_PA4 2 &pcfg_pull_none>,
+ /* bt1120_d5 */
+ <4 RK_PA5 2 &pcfg_pull_none>,
+ /* bt1120_d6 */
+ <4 RK_PA6 2 &pcfg_pull_none>,
+ /* bt1120_d7 */
+ <4 RK_PA7 2 &pcfg_pull_none>,
+ /* bt1120_d8 */
+ <4 RK_PB2 2 &pcfg_pull_none>,
+ /* bt1120_d9 */
+ <4 RK_PB3 2 &pcfg_pull_none>,
+ /* bt1120_d10 */
+ <4 RK_PB4 2 &pcfg_pull_none>,
+ /* bt1120_d11 */
+ <4 RK_PB5 2 &pcfg_pull_none>,
+ /* bt1120_d12 */
+ <4 RK_PB6 2 &pcfg_pull_none>,
+ /* bt1120_d13 */
+ <4 RK_PB7 2 &pcfg_pull_none>,
+ /* bt1120_d14 */
+ <4 RK_PC0 2 &pcfg_pull_none>,
+ /* bt1120_d15 */
+ <4 RK_PC1 2 &pcfg_pull_none>;
+ };
+ };
+
+ can0 {
+ can0m0_pins: can0m0-pins {
+ rockchip,pins =
+ /* can0_rx_m0 */
+ <0 RK_PC0 11 &pcfg_pull_none>,
+ /* can0_tx_m0 */
+ <0 RK_PB7 11 &pcfg_pull_none>;
+ };
+
+ can0m1_pins: can0m1-pins {
+ rockchip,pins =
+ /* can0_rx_m1 */
+ <4 RK_PD5 9 &pcfg_pull_none>,
+ /* can0_tx_m1 */
+ <4 RK_PD4 9 &pcfg_pull_none>;
+ };
+ };
+
+ can1 {
+ can1m0_pins: can1m0-pins {
+ rockchip,pins =
+ /* can1_rx_m0 */
+ <3 RK_PB5 9 &pcfg_pull_none>,
+ /* can1_tx_m0 */
+ <3 RK_PB6 9 &pcfg_pull_none>;
+ };
+
+ can1m1_pins: can1m1-pins {
+ rockchip,pins =
+ /* can1_rx_m1 */
+ <4 RK_PB2 12 &pcfg_pull_none>,
+ /* can1_tx_m1 */
+ <4 RK_PB3 12 &pcfg_pull_none>;
+ };
+ };
+
+ can2 {
+ can2m0_pins: can2m0-pins {
+ rockchip,pins =
+ /* can2_rx_m0 */
+ <3 RK_PC4 9 &pcfg_pull_none>,
+ /* can2_tx_m0 */
+ <3 RK_PC5 9 &pcfg_pull_none>;
+ };
+
+ can2m1_pins: can2m1-pins {
+ rockchip,pins =
+ /* can2_rx_m1 */
+ <0 RK_PD4 10 &pcfg_pull_none>,
+ /* can2_tx_m1 */
+ <0 RK_PD5 10 &pcfg_pull_none>;
+ };
+ };
+
+ cif {
+ cif_clk: cif-clk {
+ rockchip,pins =
+ /* cif_clkout */
+ <4 RK_PB4 1 &pcfg_pull_none>;
+ };
+
+ cif_dvp_clk: cif-dvp-clk {
+ rockchip,pins =
+ /* cif_clkin */
+ <4 RK_PB0 1 &pcfg_pull_none>,
+ /* cif_href */
+ <4 RK_PB2 1 &pcfg_pull_none>,
+ /* cif_vsync */
+ <4 RK_PB3 1 &pcfg_pull_none>;
+ };
+
+ cif_dvp_bus16: cif-dvp-bus16 {
+ rockchip,pins =
+ /* cif_d8 */
+ <3 RK_PC4 1 &pcfg_pull_none>,
+ /* cif_d9 */
+ <3 RK_PC5 1 &pcfg_pull_none>,
+ /* cif_d10 */
+ <3 RK_PC6 1 &pcfg_pull_none>,
+ /* cif_d11 */
+ <3 RK_PC7 1 &pcfg_pull_none>,
+ /* cif_d12 */
+ <3 RK_PD0 1 &pcfg_pull_none>,
+ /* cif_d13 */
+ <3 RK_PD1 1 &pcfg_pull_none>,
+ /* cif_d14 */
+ <3 RK_PD2 1 &pcfg_pull_none>,
+ /* cif_d15 */
+ <3 RK_PD3 1 &pcfg_pull_none>;
+ };
+
+ cif_dvp_bus8: cif-dvp-bus8 {
+ rockchip,pins =
+ /* cif_d0 */
+ <4 RK_PA0 1 &pcfg_pull_none>,
+ /* cif_d1 */
+ <4 RK_PA1 1 &pcfg_pull_none>,
+ /* cif_d2 */
+ <4 RK_PA2 1 &pcfg_pull_none>,
+ /* cif_d3 */
+ <4 RK_PA3 1 &pcfg_pull_none>,
+ /* cif_d4 */
+ <4 RK_PA4 1 &pcfg_pull_none>,
+ /* cif_d5 */
+ <4 RK_PA5 1 &pcfg_pull_none>,
+ /* cif_d6 */
+ <4 RK_PA6 1 &pcfg_pull_none>,
+ /* cif_d7 */
+ <4 RK_PA7 1 &pcfg_pull_none>;
+ };
+ };
+
+ clk32k {
+ clk32k_in: clk32k-in {
+ rockchip,pins =
+ /* clk32k_in */
+ <0 RK_PB2 1 &pcfg_pull_none>;
+ };
+
+ clk32k_out0: clk32k-out0 {
+ rockchip,pins =
+ /* clk32k_out0 */
+ <0 RK_PB2 2 &pcfg_pull_none>;
+ };
+ };
+
+ cpu {
+ cpu_pins: cpu-pins {
+ rockchip,pins =
+ /* cpu_big0_avs */
+ <0 RK_PD1 2 &pcfg_pull_none>,
+ /* cpu_big1_avs */
+ <0 RK_PD5 2 &pcfg_pull_none>;
+ };
+ };
+
+ ddrphych0 {
+ ddrphych0_pins: ddrphych0-pins {
+ rockchip,pins =
+ /* ddrphych0_dtb0 */
+ <4 RK_PA0 7 &pcfg_pull_none>,
+ /* ddrphych0_dtb1 */
+ <4 RK_PA1 7 &pcfg_pull_none>,
+ /* ddrphych0_dtb2 */
+ <4 RK_PA2 7 &pcfg_pull_none>,
+ /* ddrphych0_dtb3 */
+ <4 RK_PA3 7 &pcfg_pull_none>;
+ };
+ };
+
+ ddrphych1 {
+ ddrphych1_pins: ddrphych1-pins {
+ rockchip,pins =
+ /* ddrphych1_dtb0 */
+ <4 RK_PA4 7 &pcfg_pull_none>,
+ /* ddrphych1_dtb1 */
+ <4 RK_PA5 7 &pcfg_pull_none>,
+ /* ddrphych1_dtb2 */
+ <4 RK_PA6 7 &pcfg_pull_none>,
+ /* ddrphych1_dtb3 */
+ <4 RK_PA7 7 &pcfg_pull_none>;
+ };
+ };
+
+ ddrphych2 {
+ ddrphych2_pins: ddrphych2-pins {
+ rockchip,pins =
+ /* ddrphych2_dtb0 */
+ <4 RK_PB0 7 &pcfg_pull_none>,
+ /* ddrphych2_dtb1 */
+ <4 RK_PB1 7 &pcfg_pull_none>,
+ /* ddrphych2_dtb2 */
+ <4 RK_PB2 7 &pcfg_pull_none>,
+ /* ddrphych2_dtb3 */
+ <4 RK_PB3 7 &pcfg_pull_none>;
+ };
+ };
+
+ ddrphych3 {
+ ddrphych3_pins: ddrphych3-pins {
+ rockchip,pins =
+ /* ddrphych3_dtb0 */
+ <4 RK_PB4 7 &pcfg_pull_none>,
+ /* ddrphych3_dtb1 */
+ <4 RK_PB5 7 &pcfg_pull_none>,
+ /* ddrphych3_dtb2 */
+ <4 RK_PB6 7 &pcfg_pull_none>,
+ /* ddrphych3_dtb3 */
+ <4 RK_PB7 7 &pcfg_pull_none>;
+ };
+ };
+
+ dp0 {
+ dp0m0_pins: dp0m0-pins {
+ rockchip,pins =
+ /* dp0_hpdin_m0 */
+ <4 RK_PB4 5 &pcfg_pull_none>;
+ };
+
+ dp0m1_pins: dp0m1-pins {
+ rockchip,pins =
+ /* dp0_hpdin_m1 */
+ <0 RK_PC4 10 &pcfg_pull_none>;
+ };
+
+ dp0m2_pins: dp0m2-pins {
+ rockchip,pins =
+ /* dp0_hpdin_m2 */
+ <1 RK_PA0 5 &pcfg_pull_none>;
+ };
+ };
+
+ dp1 {
+ dp1m0_pins: dp1m0-pins {
+ rockchip,pins =
+ /* dp1_hpdin_m0 */
+ <3 RK_PD5 5 &pcfg_pull_none>;
+ };
+
+ dp1m1_pins: dp1m1-pins {
+ rockchip,pins =
+ /* dp1_hpdin_m1 */
+ <0 RK_PC5 10 &pcfg_pull_none>;
+ };
+
+ dp1m2_pins: dp1m2-pins {
+ rockchip,pins =
+ /* dp1_hpdin_m2 */
+ <1 RK_PA1 5 &pcfg_pull_none>;
+ };
+ };
+
+ emmc {
+ emmc_rstnout: emmc-rstnout {
+ rockchip,pins =
+ /* emmc_rstn */
+ <2 RK_PA3 1 &pcfg_pull_none>;
+ };
+
+ emmc_bus8: emmc-bus8 {
+ rockchip,pins =
+ /* emmc_d0 */
+ <2 RK_PD0 1 &pcfg_pull_up_drv_level_2>,
+ /* emmc_d1 */
+ <2 RK_PD1 1 &pcfg_pull_up_drv_level_2>,
+ /* emmc_d2 */
+ <2 RK_PD2 1 &pcfg_pull_up_drv_level_2>,
+ /* emmc_d3 */
+ <2 RK_PD3 1 &pcfg_pull_up_drv_level_2>,
+ /* emmc_d4 */
+ <2 RK_PD4 1 &pcfg_pull_up_drv_level_2>,
+ /* emmc_d5 */
+ <2 RK_PD5 1 &pcfg_pull_up_drv_level_2>,
+ /* emmc_d6 */
+ <2 RK_PD6 1 &pcfg_pull_up_drv_level_2>,
+ /* emmc_d7 */
+ <2 RK_PD7 1 &pcfg_pull_up_drv_level_2>;
+ };
+
+ emmc_clk: emmc-clk {
+ rockchip,pins =
+ /* emmc_clkout */
+ <2 RK_PA1 1 &pcfg_pull_up_drv_level_2>;
+ };
+
+ emmc_cmd: emmc-cmd {
+ rockchip,pins =
+ /* emmc_cmd */
+ <2 RK_PA0 1 &pcfg_pull_up_drv_level_2>;
+ };
+
+ emmc_data_strobe: emmc-data-strobe {
+ rockchip,pins =
+ /* emmc_data_strobe */
+ <2 RK_PA2 1 &pcfg_pull_none>;
+ };
+ };
+
+ eth1 {
+ eth1_pins: eth1-pins {
+ rockchip,pins =
+ /* eth1_refclko_25m */
+ <3 RK_PA6 1 &pcfg_pull_none>;
+ };
+ };
+
+ fspi {
+ fspim0_pins: fspim0-pins {
+ rockchip,pins =
+ /* fspi_clk_m0 */
+ <2 RK_PA0 2 &pcfg_pull_none>,
+ /* fspi_cs0n_m0 */
+ <2 RK_PD6 2 &pcfg_pull_none>,
+ /* fspi_d0_m0 */
+ <2 RK_PD0 2 &pcfg_pull_none>,
+ /* fspi_d1_m0 */
+ <2 RK_PD1 2 &pcfg_pull_none>,
+ /* fspi_d2_m0 */
+ <2 RK_PD2 2 &pcfg_pull_none>,
+ /* fspi_d3_m0 */
+ <2 RK_PD3 2 &pcfg_pull_none>;
+ };
+
+ fspim0_cs1: fspim0-cs1 {
+ rockchip,pins =
+ /* fspi_cs1n_m0 */
+ <2 RK_PD7 2 &pcfg_pull_up>;
+ };
+
+ fspim2_pins: fspim2-pins {
+ rockchip,pins =
+ /* fspi_clk_m2 */
+ <3 RK_PA5 5 &pcfg_pull_none>,
+ /* fspi_cs0n_m2 */
+ <3 RK_PC4 2 &pcfg_pull_none>,
+ /* fspi_d0_m2 */
+ <3 RK_PA0 5 &pcfg_pull_none>,
+ /* fspi_d1_m2 */
+ <3 RK_PA1 5 &pcfg_pull_none>,
+ /* fspi_d2_m2 */
+ <3 RK_PA2 5 &pcfg_pull_none>,
+ /* fspi_d3_m2 */
+ <3 RK_PA3 5 &pcfg_pull_none>;
+ };
+
+ fspim2_cs1: fspim2-cs1 {
+ rockchip,pins =
+ /* fspi_cs1n_m2 */
+ <3 RK_PC5 2 &pcfg_pull_up>;
+ };
+ };
+
+ gmac1 {
+ gmac1_miim: gmac1-miim {
+ rockchip,pins =
+ /* gmac1_mdc */
+ <3 RK_PC2 1 &pcfg_pull_none>,
+ /* gmac1_mdio */
+ <3 RK_PC3 1 &pcfg_pull_none>;
+ };
+
+ gmac1_clkinout: gmac1-clkinout {
+ rockchip,pins =
+ /* gmac1_mclkinout */
+ <3 RK_PB6 1 &pcfg_pull_none>;
+ };
+
+ gmac1_rx_bus2: gmac1-rx-bus2 {
+ rockchip,pins =
+ /* gmac1_rxd0 */
+ <3 RK_PA7 1 &pcfg_pull_none>,
+ /* gmac1_rxd1 */
+ <3 RK_PB0 1 &pcfg_pull_none>,
+ /* gmac1_rxdv_crs */
+ <3 RK_PB1 1 &pcfg_pull_none>;
+ };
+
+ gmac1_tx_bus2: gmac1-tx-bus2 {
+ rockchip,pins =
+ /* gmac1_txd0 */
+ <3 RK_PB3 1 &pcfg_pull_none>,
+ /* gmac1_txd1 */
+ <3 RK_PB4 1 &pcfg_pull_none>,
+ /* gmac1_txen */
+ <3 RK_PB5 1 &pcfg_pull_none>;
+ };
+
+ gmac1_rgmii_clk: gmac1-rgmii-clk {
+ rockchip,pins =
+ /* gmac1_rxclk */
+ <3 RK_PA5 1 &pcfg_pull_none>,
+ /* gmac1_txclk */
+ <3 RK_PA4 1 &pcfg_pull_none>;
+ };
+
+ gmac1_rgmii_bus: gmac1-rgmii-bus {
+ rockchip,pins =
+ /* gmac1_rxd2 */
+ <3 RK_PA2 1 &pcfg_pull_none>,
+ /* gmac1_rxd3 */
+ <3 RK_PA3 1 &pcfg_pull_none>,
+ /* gmac1_txd2 */
+ <3 RK_PA0 1 &pcfg_pull_none>,
+ /* gmac1_txd3 */
+ <3 RK_PA1 1 &pcfg_pull_none>;
+ };
+
+ gmac1_ppsclk: gmac1-ppsclk {
+ rockchip,pins =
+ /* gmac1_ppsclk */
+ <3 RK_PC1 1 &pcfg_pull_none>;
+ };
+
+ gmac1_ppstrig: gmac1-ppstrig {
+ rockchip,pins =
+ /* gmac1_ppstrig */
+ <3 RK_PC0 1 &pcfg_pull_none>;
+ };
+
+ gmac1_ptp_ref_clk: gmac1-ptp-ref-clk {
+ rockchip,pins =
+ /* gmac1_ptp_ref_clk */
+ <3 RK_PB7 1 &pcfg_pull_none>;
+ };
+
+ gmac1_txer: gmac1-txer {
+ rockchip,pins =
+ /* gmac1_txer */
+ <3 RK_PB2 1 &pcfg_pull_none>;
+ };
+ };
+
+ gpu {
+ gpu_pins: gpu-pins {
+ rockchip,pins =
+ /* gpu_avs */
+ <0 RK_PC5 2 &pcfg_pull_none>;
+ };
+ };
+
+ hdmi {
+ hdmim0_pins: hdmim0-pins {
+ rockchip,pins =
+ /* hdmi_rx_cec_m0 */
+ <4 RK_PB5 5 &pcfg_pull_none>,
+ /* hdmi_rx_hpdin_m0 */
+ <4 RK_PB6 5 &pcfg_pull_none>,
+ /* hdmi_rx_scl_m0 */
+ <0 RK_PD2 11 &pcfg_pull_none>,
+ /* hdmi_rx_sda_m0 */
+ <0 RK_PD1 11 &pcfg_pull_none>,
+ /* hdmi_tx0_cec_m0 */
+ <4 RK_PC1 5 &pcfg_pull_none>,
+ /* hdmi_tx0_hpd_m0 */
+ <1 RK_PA5 5 &pcfg_pull_none>,
+ /* hdmi_tx0_scl_m0 */
+ <4 RK_PB7 5 &pcfg_pull_none>,
+ /* hdmi_tx0_sda_m0 */
+ <4 RK_PC0 5 &pcfg_pull_none>,
+ /* hdmi_tx1_hpd_m0 */
+ <1 RK_PA6 5 &pcfg_pull_none>;
+ };
+
+ hdmim1_pins: hdmim1-pins {
+ rockchip,pins =
+ /* hdmi_rx_cec_m1 */
+ <3 RK_PD1 5 &pcfg_pull_none>,
+ /* hdmi_rx_hpdin_m1 */
+ <3 RK_PD4 5 &pcfg_pull_none>,
+ /* hdmi_rx_scl_m1 */
+ <3 RK_PD2 5 &pcfg_pull_none>,
+ /* hdmi_rx_sda_m1 */
+ <3 RK_PD3 5 &pcfg_pull_none>,
+ /* hdmi_tx0_cec_m1 */
+ <0 RK_PD1 13 &pcfg_pull_none>,
+ /* hdmi_tx0_hpd_m1 */
+ <3 RK_PD4 3 &pcfg_pull_none>,
+ /* hdmi_tx0_scl_m1 */
+ <0 RK_PD5 11 &pcfg_pull_none>,
+ /* hdmi_tx0_sda_m1 */
+ <0 RK_PD4 11 &pcfg_pull_none>,
+ /* hdmi_tx1_cec_m1 */
+ <0 RK_PD2 13 &pcfg_pull_none>,
+ /* hdmi_tx1_hpd_m1 */
+ <3 RK_PB7 5 &pcfg_pull_none>,
+ /* hdmi_tx1_scl_m1 */
+ <3 RK_PC6 5 &pcfg_pull_none>,
+ /* hdmi_tx1_sda_m1 */
+ <3 RK_PC5 5 &pcfg_pull_none>;
+ };
+
+ hdmim2_pins: hdmim2-pins {
+ rockchip,pins =
+ /* hdmi_rx_cec_m2 */
+ <1 RK_PB7 5 &pcfg_pull_none>,
+ /* hdmi_rx_hpdin_m2 */
+ <1 RK_PB6 5 &pcfg_pull_none>,
+ /* hdmi_rx_scl_m2 */
+ <1 RK_PD6 5 &pcfg_pull_none>,
+ /* hdmi_rx_sda_m2 */
+ <1 RK_PD7 5 &pcfg_pull_none>,
+ /* hdmi_tx0_scl_m2 */
+ <3 RK_PC7 5 &pcfg_pull_none>,
+ /* hdmi_tx0_sda_m2 */
+ <3 RK_PD0 5 &pcfg_pull_none>,
+ /* hdmi_tx1_cec_m2 */
+ <3 RK_PC4 5 &pcfg_pull_none>,
+ /* hdmi_tx1_scl_m2 */
+ <1 RK_PA4 5 &pcfg_pull_none>,
+ /* hdmi_tx1_sda_m2 */
+ <1 RK_PA3 5 &pcfg_pull_none>;
+ };
+
+ hdmi_debug0: hdmi-debug0 {
+ rockchip,pins =
+ /* hdmi_debug0 */
+ <1 RK_PA7 7 &pcfg_pull_none>;
+ };
+
+ hdmi_debug1: hdmi-debug1 {
+ rockchip,pins =
+ /* hdmi_debug1 */
+ <1 RK_PB0 7 &pcfg_pull_none>;
+ };
+
+ hdmi_debug2: hdmi-debug2 {
+ rockchip,pins =
+ /* hdmi_debug2 */
+ <1 RK_PB1 7 &pcfg_pull_none>;
+ };
+
+ hdmi_debug3: hdmi-debug3 {
+ rockchip,pins =
+ /* hdmi_debug3 */
+ <1 RK_PB2 7 &pcfg_pull_none>;
+ };
+
+ hdmi_debug4: hdmi-debug4 {
+ rockchip,pins =
+ /* hdmi_debug4 */
+ <1 RK_PB3 7 &pcfg_pull_none>;
+ };
+
+ hdmi_debug5: hdmi-debug5 {
+ rockchip,pins =
+ /* hdmi_debug5 */
+ <1 RK_PB4 7 &pcfg_pull_none>;
+ };
+
+ hdmi_debug6: hdmi-debug6 {
+ rockchip,pins =
+ /* hdmi_debug6 */
+ <1 RK_PA0 7 &pcfg_pull_none>;
+ };
+ };
+
+ i2c0 {
+ i2c0m0_xfer: i2c0m0-xfer {
+ rockchip,pins =
+ /* i2c0_scl_m0 */
+ <0 RK_PB3 2 &pcfg_pull_none_smt>,
+ /* i2c0_sda_m0 */
+ <0 RK_PA6 2 &pcfg_pull_none_smt>;
+ };
+
+ i2c0m2_xfer: i2c0m2-xfer {
+ rockchip,pins =
+ /* i2c0_scl_m2 */
+ <0 RK_PD1 3 &pcfg_pull_none_smt>,
+ /* i2c0_sda_m2 */
+ <0 RK_PD2 3 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c1 {
+ i2c1m0_xfer: i2c1m0-xfer {
+ rockchip,pins =
+ /* i2c1_scl_m0 */
+ <0 RK_PB5 9 &pcfg_pull_none_smt>,
+ /* i2c1_sda_m0 */
+ <0 RK_PB6 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c1m1_xfer: i2c1m1-xfer {
+ rockchip,pins =
+ /* i2c1_scl_m1 */
+ <0 RK_PB0 2 &pcfg_pull_none_smt>,
+ /* i2c1_sda_m1 */
+ <0 RK_PB1 2 &pcfg_pull_none_smt>;
+ };
+
+ i2c1m2_xfer: i2c1m2-xfer {
+ rockchip,pins =
+ /* i2c1_scl_m2 */
+ <0 RK_PD4 9 &pcfg_pull_none_smt>,
+ /* i2c1_sda_m2 */
+ <0 RK_PD5 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c1m3_xfer: i2c1m3-xfer {
+ rockchip,pins =
+ /* i2c1_scl_m3 */
+ <2 RK_PD4 9 &pcfg_pull_none_smt>,
+ /* i2c1_sda_m3 */
+ <2 RK_PD5 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c1m4_xfer: i2c1m4-xfer {
+ rockchip,pins =
+ /* i2c1_scl_m4 */
+ <1 RK_PD2 9 &pcfg_pull_none_smt>,
+ /* i2c1_sda_m4 */
+ <1 RK_PD3 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c2 {
+ i2c2m0_xfer: i2c2m0-xfer {
+ rockchip,pins =
+ /* i2c2_scl_m0 */
+ <0 RK_PB7 9 &pcfg_pull_none_smt>,
+ /* i2c2_sda_m0 */
+ <0 RK_PC0 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c2m2_xfer: i2c2m2-xfer {
+ rockchip,pins =
+ /* i2c2_scl_m2 */
+ <2 RK_PA3 9 &pcfg_pull_none_smt>,
+ /* i2c2_sda_m2 */
+ <2 RK_PA2 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c2m3_xfer: i2c2m3-xfer {
+ rockchip,pins =
+ /* i2c2_scl_m3 */
+ <1 RK_PC5 9 &pcfg_pull_none_smt>,
+ /* i2c2_sda_m3 */
+ <1 RK_PC4 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c2m4_xfer: i2c2m4-xfer {
+ rockchip,pins =
+ /* i2c2_scl_m4 */
+ <1 RK_PA1 9 &pcfg_pull_none_smt>,
+ /* i2c2_sda_m4 */
+ <1 RK_PA0 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c3 {
+ i2c3m0_xfer: i2c3m0-xfer {
+ rockchip,pins =
+ /* i2c3_scl_m0 */
+ <1 RK_PC1 9 &pcfg_pull_none_smt>,
+ /* i2c3_sda_m0 */
+ <1 RK_PC0 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c3m1_xfer: i2c3m1-xfer {
+ rockchip,pins =
+ /* i2c3_scl_m1 */
+ <3 RK_PB7 9 &pcfg_pull_none_smt>,
+ /* i2c3_sda_m1 */
+ <3 RK_PC0 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c3m2_xfer: i2c3m2-xfer {
+ rockchip,pins =
+ /* i2c3_scl_m2 */
+ <4 RK_PA4 9 &pcfg_pull_none_smt>,
+ /* i2c3_sda_m2 */
+ <4 RK_PA5 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c3m4_xfer: i2c3m4-xfer {
+ rockchip,pins =
+ /* i2c3_scl_m4 */
+ <4 RK_PD0 9 &pcfg_pull_none_smt>,
+ /* i2c3_sda_m4 */
+ <4 RK_PD1 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c4 {
+ i2c4m0_xfer: i2c4m0-xfer {
+ rockchip,pins =
+ /* i2c4_scl_m0 */
+ <3 RK_PA6 9 &pcfg_pull_none_smt>,
+ /* i2c4_sda_m0 */
+ <3 RK_PA5 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c4m2_xfer: i2c4m2-xfer {
+ rockchip,pins =
+ /* i2c4_scl_m2 */
+ <0 RK_PC5 9 &pcfg_pull_none_smt>,
+ /* i2c4_sda_m2 */
+ <0 RK_PC4 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c4m3_xfer: i2c4m3-xfer {
+ rockchip,pins =
+ /* i2c4_scl_m3 */
+ <1 RK_PA3 9 &pcfg_pull_none_smt>,
+ /* i2c4_sda_m3 */
+ <1 RK_PA2 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c4m4_xfer: i2c4m4-xfer {
+ rockchip,pins =
+ /* i2c4_scl_m4 */
+ <1 RK_PC7 9 &pcfg_pull_none_smt>,
+ /* i2c4_sda_m4 */
+ <1 RK_PC6 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c5 {
+ i2c5m0_xfer: i2c5m0-xfer {
+ rockchip,pins =
+ /* i2c5_scl_m0 */
+ <3 RK_PC7 9 &pcfg_pull_none_smt>,
+ /* i2c5_sda_m0 */
+ <3 RK_PD0 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c5m1_xfer: i2c5m1-xfer {
+ rockchip,pins =
+ /* i2c5_scl_m1 */
+ <4 RK_PB6 9 &pcfg_pull_none_smt>,
+ /* i2c5_sda_m1 */
+ <4 RK_PB7 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c5m2_xfer: i2c5m2-xfer {
+ rockchip,pins =
+ /* i2c5_scl_m2 */
+ <4 RK_PA6 9 &pcfg_pull_none_smt>,
+ /* i2c5_sda_m2 */
+ <4 RK_PA7 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c5m3_xfer: i2c5m3-xfer {
+ rockchip,pins =
+ /* i2c5_scl_m3 */
+ <1 RK_PB6 9 &pcfg_pull_none_smt>,
+ /* i2c5_sda_m3 */
+ <1 RK_PB7 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c6 {
+ i2c6m0_xfer: i2c6m0-xfer {
+ rockchip,pins =
+ /* i2c6_scl_m0 */
+ <0 RK_PD0 9 &pcfg_pull_none_smt>,
+ /* i2c6_sda_m0 */
+ <0 RK_PC7 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c6m1_xfer: i2c6m1-xfer {
+ rockchip,pins =
+ /* i2c6_scl_m1 */
+ <1 RK_PC3 9 &pcfg_pull_none_smt>,
+ /* i2c6_sda_m1 */
+ <1 RK_PC2 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c6m3_xfer: i2c6m3-xfer {
+ rockchip,pins =
+ /* i2c6_scl_m3 */
+ <4 RK_PB1 9 &pcfg_pull_none_smt>,
+ /* i2c6_sda_m3 */
+ <4 RK_PB0 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c6m4_xfer: i2c6m4-xfer {
+ rockchip,pins =
+ /* i2c6_scl_m4 */
+ <3 RK_PA1 9 &pcfg_pull_none_smt>,
+ /* i2c6_sda_m4 */
+ <3 RK_PA0 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c7 {
+ i2c7m0_xfer: i2c7m0-xfer {
+ rockchip,pins =
+ /* i2c7_scl_m0 */
+ <1 RK_PD0 9 &pcfg_pull_none_smt>,
+ /* i2c7_sda_m0 */
+ <1 RK_PD1 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c7m2_xfer: i2c7m2-xfer {
+ rockchip,pins =
+ /* i2c7_scl_m2 */
+ <3 RK_PD2 9 &pcfg_pull_none_smt>,
+ /* i2c7_sda_m2 */
+ <3 RK_PD3 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c7m3_xfer: i2c7m3-xfer {
+ rockchip,pins =
+ /* i2c7_scl_m3 */
+ <4 RK_PB2 9 &pcfg_pull_none_smt>,
+ /* i2c7_sda_m3 */
+ <4 RK_PB3 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2c8 {
+ i2c8m0_xfer: i2c8m0-xfer {
+ rockchip,pins =
+ /* i2c8_scl_m0 */
+ <4 RK_PD2 9 &pcfg_pull_none_smt>,
+ /* i2c8_sda_m0 */
+ <4 RK_PD3 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c8m2_xfer: i2c8m2-xfer {
+ rockchip,pins =
+ /* i2c8_scl_m2 */
+ <1 RK_PD6 9 &pcfg_pull_none_smt>,
+ /* i2c8_sda_m2 */
+ <1 RK_PD7 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c8m3_xfer: i2c8m3-xfer {
+ rockchip,pins =
+ /* i2c8_scl_m3 */
+ <4 RK_PC0 9 &pcfg_pull_none_smt>,
+ /* i2c8_sda_m3 */
+ <4 RK_PC1 9 &pcfg_pull_none_smt>;
+ };
+
+ i2c8m4_xfer: i2c8m4-xfer {
+ rockchip,pins =
+ /* i2c8_scl_m4 */
+ <3 RK_PC2 9 &pcfg_pull_none_smt>,
+ /* i2c8_sda_m4 */
+ <3 RK_PC3 9 &pcfg_pull_none_smt>;
+ };
+ };
+
+ i2s0 {
+ i2s0_lrck: i2s0-lrck {
+ rockchip,pins =
+ /* i2s0_lrck */
+ <1 RK_PC5 1 &pcfg_pull_none>;
+ };
+
+ i2s0_mclk: i2s0-mclk {
+ rockchip,pins =
+ /* i2s0_mclk */
+ <1 RK_PC2 1 &pcfg_pull_none>;
+ };
+
+ i2s0_sclk: i2s0-sclk {
+ rockchip,pins =
+ /* i2s0_sclk */
+ <1 RK_PC3 1 &pcfg_pull_none>;
+ };
+
+ i2s0_sdi0: i2s0-sdi0 {
+ rockchip,pins =
+ /* i2s0_sdi0 */
+ <1 RK_PD4 2 &pcfg_pull_none>;
+ };
+
+ i2s0_sdi1: i2s0-sdi1 {
+ rockchip,pins =
+ /* i2s0_sdi1 */
+ <1 RK_PD3 2 &pcfg_pull_none>;
+ };
+
+ i2s0_sdi2: i2s0-sdi2 {
+ rockchip,pins =
+ /* i2s0_sdi2 */
+ <1 RK_PD2 2 &pcfg_pull_none>;
+ };
+
+ i2s0_sdi3: i2s0-sdi3 {
+ rockchip,pins =
+ /* i2s0_sdi3 */
+ <1 RK_PD1 2 &pcfg_pull_none>;
+ };
+
+ i2s0_sdo0: i2s0-sdo0 {
+ rockchip,pins =
+ /* i2s0_sdo0 */
+ <1 RK_PC7 1 &pcfg_pull_none>;
+ };
+
+ i2s0_sdo1: i2s0-sdo1 {
+ rockchip,pins =
+ /* i2s0_sdo1 */
+ <1 RK_PD0 1 &pcfg_pull_none>;
+ };
+
+ i2s0_sdo2: i2s0-sdo2 {
+ rockchip,pins =
+ /* i2s0_sdo2 */
+ <1 RK_PD1 1 &pcfg_pull_none>;
+ };
+
+ i2s0_sdo3: i2s0-sdo3 {
+ rockchip,pins =
+ /* i2s0_sdo3 */
+ <1 RK_PD2 1 &pcfg_pull_none>;
+ };
+ };
+
+ i2s1 {
+ i2s1m0_lrck: i2s1m0-lrck {
+ rockchip,pins =
+ /* i2s1m0_lrck */
+ <4 RK_PA2 3 &pcfg_pull_none>;
+ };
+
+ i2s1m0_mclk: i2s1m0-mclk {
+ rockchip,pins =
+ /* i2s1m0_mclk */
+ <4 RK_PA0 3 &pcfg_pull_none>;
+ };
+
+ i2s1m0_sclk: i2s1m0-sclk {
+ rockchip,pins =
+ /* i2s1m0_sclk */
+ <4 RK_PA1 3 &pcfg_pull_none>;
+ };
+
+ i2s1m0_sdi0: i2s1m0-sdi0 {
+ rockchip,pins =
+ /* i2s1m0_sdi0 */
+ <4 RK_PA5 3 &pcfg_pull_none>;
+ };
+
+ i2s1m0_sdi1: i2s1m0-sdi1 {
+ rockchip,pins =
+ /* i2s1m0_sdi1 */
+ <4 RK_PA6 3 &pcfg_pull_none>;
+ };
+
+ i2s1m0_sdi2: i2s1m0-sdi2 {
+ rockchip,pins =
+ /* i2s1m0_sdi2 */
+ <4 RK_PA7 3 &pcfg_pull_none>;
+ };
+
+ i2s1m0_sdi3: i2s1m0-sdi3 {
+ rockchip,pins =
+ /* i2s1m0_sdi3 */
+ <4 RK_PB0 3 &pcfg_pull_none>;
+ };
+
+ i2s1m0_sdo0: i2s1m0-sdo0 {
+ rockchip,pins =
+ /* i2s1m0_sdo0 */
+ <4 RK_PB1 3 &pcfg_pull_none>;
+ };
+
+ i2s1m0_sdo1: i2s1m0-sdo1 {
+ rockchip,pins =
+ /* i2s1m0_sdo1 */
+ <4 RK_PB2 3 &pcfg_pull_none>;
+ };
+
+ i2s1m0_sdo2: i2s1m0-sdo2 {
+ rockchip,pins =
+ /* i2s1m0_sdo2 */
+ <4 RK_PB3 3 &pcfg_pull_none>;
+ };
+
+ i2s1m0_sdo3: i2s1m0-sdo3 {
+ rockchip,pins =
+ /* i2s1m0_sdo3 */
+ <4 RK_PB4 3 &pcfg_pull_none>;
+ };
+ i2s1m1_lrck: i2s1m1-lrck {
+ rockchip,pins =
+ /* i2s1m1_lrck */
+ <0 RK_PB7 1 &pcfg_pull_none>;
+ };
+
+ i2s1m1_mclk: i2s1m1-mclk {
+ rockchip,pins =
+ /* i2s1m1_mclk */
+ <0 RK_PB5 1 &pcfg_pull_none>;
+ };
+
+ i2s1m1_sclk: i2s1m1-sclk {
+ rockchip,pins =
+ /* i2s1m1_sclk */
+ <0 RK_PB6 1 &pcfg_pull_none>;
+ };
+
+ i2s1m1_sdi0: i2s1m1-sdi0 {
+ rockchip,pins =
+ /* i2s1m1_sdi0 */
+ <0 RK_PC5 1 &pcfg_pull_none>;
+ };
+
+ i2s1m1_sdi1: i2s1m1-sdi1 {
+ rockchip,pins =
+ /* i2s1m1_sdi1 */
+ <0 RK_PC6 1 &pcfg_pull_none>;
+ };
+
+ i2s1m1_sdi2: i2s1m1-sdi2 {
+ rockchip,pins =
+ /* i2s1m1_sdi2 */
+ <0 RK_PC7 1 &pcfg_pull_none>;
+ };
+
+ i2s1m1_sdi3: i2s1m1-sdi3 {
+ rockchip,pins =
+ /* i2s1m1_sdi3 */
+ <0 RK_PD0 1 &pcfg_pull_none>;
+ };
+
+ i2s1m1_sdo0: i2s1m1-sdo0 {
+ rockchip,pins =
+ /* i2s1m1_sdo0 */
+ <0 RK_PD1 1 &pcfg_pull_none>;
+ };
+
+ i2s1m1_sdo1: i2s1m1-sdo1 {
+ rockchip,pins =
+ /* i2s1m1_sdo1 */
+ <0 RK_PD2 1 &pcfg_pull_none>;
+ };
+
+ i2s1m1_sdo2: i2s1m1-sdo2 {
+ rockchip,pins =
+ /* i2s1m1_sdo2 */
+ <0 RK_PD4 1 &pcfg_pull_none>;
+ };
+
+ i2s1m1_sdo3: i2s1m1-sdo3 {
+ rockchip,pins =
+ /* i2s1m1_sdo3 */
+ <0 RK_PD5 1 &pcfg_pull_none>;
+ };
+ };
+
+ i2s2 {
+ i2s2m1_lrck: i2s2m1-lrck {
+ rockchip,pins =
+ /* i2s2m1_lrck */
+ <3 RK_PB6 3 &pcfg_pull_none>;
+ };
+
+ i2s2m1_mclk: i2s2m1-mclk {
+ rockchip,pins =
+ /* i2s2m1_mclk */
+ <3 RK_PB4 3 &pcfg_pull_none>;
+ };
+
+ i2s2m1_sclk: i2s2m1-sclk {
+ rockchip,pins =
+ /* i2s2m1_sclk */
+ <3 RK_PB5 3 &pcfg_pull_none>;
+ };
+
+ i2s2m1_sdi: i2s2m1-sdi {
+ rockchip,pins =
+ /* i2s2m1_sdi */
+ <3 RK_PB2 3 &pcfg_pull_none>;
+ };
+
+ i2s2m1_sdo: i2s2m1-sdo {
+ rockchip,pins =
+ /* i2s2m1_sdo */
+ <3 RK_PB3 3 &pcfg_pull_none>;
+ };
+ };
+
+ i2s3 {
+ i2s3_lrck: i2s3-lrck {
+ rockchip,pins =
+ /* i2s3_lrck */
+ <3 RK_PA2 3 &pcfg_pull_none>;
+ };
+
+ i2s3_mclk: i2s3-mclk {
+ rockchip,pins =
+ /* i2s3_mclk */
+ <3 RK_PA0 3 &pcfg_pull_none>;
+ };
+
+ i2s3_sclk: i2s3-sclk {
+ rockchip,pins =
+ /* i2s3_sclk */
+ <3 RK_PA1 3 &pcfg_pull_none>;
+ };
+
+ i2s3_sdi: i2s3-sdi {
+ rockchip,pins =
+ /* i2s3_sdi */
+ <3 RK_PA4 3 &pcfg_pull_none>;
+ };
+
+ i2s3_sdo: i2s3-sdo {
+ rockchip,pins =
+ /* i2s3_sdo */
+ <3 RK_PA3 3 &pcfg_pull_none>;
+ };
+ };
+
+ jtag {
+ jtagm0_pins: jtagm0-pins {
+ rockchip,pins =
+ /* jtag_tck_m0 */
+ <4 RK_PD2 5 &pcfg_pull_none>,
+ /* jtag_tms_m0 */
+ <4 RK_PD3 5 &pcfg_pull_none>;
+ };
+
+ jtagm1_pins: jtagm1-pins {
+ rockchip,pins =
+ /* jtag_tck_m1 */
+ <4 RK_PD0 5 &pcfg_pull_none>,
+ /* jtag_tms_m1 */
+ <4 RK_PD1 5 &pcfg_pull_none>;
+ };
+
+ jtagm2_pins: jtagm2-pins {
+ rockchip,pins =
+ /* jtag_tck_m2 */
+ <0 RK_PB5 2 &pcfg_pull_none>,
+ /* jtag_tms_m2 */
+ <0 RK_PB6 2 &pcfg_pull_none>;
+ };
+ };
+
+ litcpu {
+ litcpu_pins: litcpu-pins {
+ rockchip,pins =
+ /* litcpu_avs */
+ <0 RK_PD3 1 &pcfg_pull_none>;
+ };
+ };
+
+ mcu {
+ mcum0_pins: mcum0-pins {
+ rockchip,pins =
+ /* mcu_jtag_tck_m0 */
+ <4 RK_PD4 5 &pcfg_pull_none>,
+ /* mcu_jtag_tms_m0 */
+ <4 RK_PD5 5 &pcfg_pull_none>;
+ };
+
+ mcum1_pins: mcum1-pins {
+ rockchip,pins =
+ /* mcu_jtag_tck_m1 */
+ <3 RK_PD4 6 &pcfg_pull_none>,
+ /* mcu_jtag_tms_m1 */
+ <3 RK_PD5 6 &pcfg_pull_none>;
+ };
+ };
+
+ mipi {
+ mipim0_pins: mipim0-pins {
+ rockchip,pins =
+ /* mipi_camera0_clk_m0 */
+ <4 RK_PB1 1 &pcfg_pull_none>,
+ /* mipi_camera1_clk_m0 */
+ <1 RK_PB6 2 &pcfg_pull_none>,
+ /* mipi_camera2_clk_m0 */
+ <1 RK_PB7 2 &pcfg_pull_none>,
+ /* mipi_camera3_clk_m0 */
+ <1 RK_PD6 2 &pcfg_pull_none>,
+ /* mipi_camera4_clk_m0 */
+ <1 RK_PD7 2 &pcfg_pull_none>;
+ };
+
+ mipim1_pins: mipim1-pins {
+ rockchip,pins =
+ /* mipi_camera0_clk_m1 */
+ <3 RK_PA5 4 &pcfg_pull_none>,
+ /* mipi_camera1_clk_m1 */
+ <3 RK_PA6 4 &pcfg_pull_none>,
+ /* mipi_camera2_clk_m1 */
+ <3 RK_PA7 4 &pcfg_pull_none>,
+ /* mipi_camera3_clk_m1 */
+ <3 RK_PB0 4 &pcfg_pull_none>,
+ /* mipi_camera4_clk_m1 */
+ <3 RK_PB1 4 &pcfg_pull_none>;
+ };
+
+ mipi_te0: mipi-te0 {
+ rockchip,pins =
+ /* mipi_te0 */
+ <3 RK_PC2 2 &pcfg_pull_none>;
+ };
+
+ mipi_te1: mipi-te1 {
+ rockchip,pins =
+ /* mipi_te1 */
+ <3 RK_PC3 2 &pcfg_pull_none>;
+ };
+ };
+
+ npu {
+ npu_pins: npu-pins {
+ rockchip,pins =
+ /* npu_avs */
+ <0 RK_PC6 2 &pcfg_pull_none>;
+ };
+ };
+
+ pcie20x1 {
+ pcie20x1m0_pins: pcie20x1m0-pins {
+ rockchip,pins =
+ /* pcie20x1_2_clkreqn_m0 */
+ <3 RK_PC7 4 &pcfg_pull_none>,
+ /* pcie20x1_2_perstn_m0 */
+ <3 RK_PD1 4 &pcfg_pull_none>,
+ /* pcie20x1_2_waken_m0 */
+ <3 RK_PD0 4 &pcfg_pull_none>;
+ };
+
+ pcie20x1m1_pins: pcie20x1m1-pins {
+ rockchip,pins =
+ /* pcie20x1_2_clkreqn_m1 */
+ <4 RK_PB7 4 &pcfg_pull_none>,
+ /* pcie20x1_2_perstn_m1 */
+ <4 RK_PC1 4 &pcfg_pull_none>,
+ /* pcie20x1_2_waken_m1 */
+ <4 RK_PC0 4 &pcfg_pull_none>;
+ };
+
+ pcie20x1_2_button_rstn: pcie20x1-2-button-rstn {
+ rockchip,pins =
+ /* pcie20x1_2_button_rstn */
+ <4 RK_PB3 4 &pcfg_pull_none>;
+ };
+ };
+
+ pcie30phy {
+ pcie30phy_pins: pcie30phy-pins {
+ rockchip,pins =
+ /* pcie30phy_dtb0 */
+ <1 RK_PC4 4 &pcfg_pull_none>,
+ /* pcie30phy_dtb1 */
+ <1 RK_PD1 4 &pcfg_pull_none>;
+ };
+ };
+
+ pcie30x1 {
+ pcie30x1m0_pins: pcie30x1m0-pins {
+ rockchip,pins =
+ /* pcie30x1_0_clkreqn_m0 */
+ <0 RK_PC0 12 &pcfg_pull_none>,
+ /* pcie30x1_0_perstn_m0 */
+ <0 RK_PC5 12 &pcfg_pull_none>,
+ /* pcie30x1_0_waken_m0 */
+ <0 RK_PC4 12 &pcfg_pull_none>,
+ /* pcie30x1_1_clkreqn_m0 */
+ <0 RK_PB5 12 &pcfg_pull_none>,
+ /* pcie30x1_1_perstn_m0 */
+ <0 RK_PB7 12 &pcfg_pull_none>,
+ /* pcie30x1_1_waken_m0 */
+ <0 RK_PB6 12 &pcfg_pull_none>;
+ };
+
+ pcie30x1m1_pins: pcie30x1m1-pins {
+ rockchip,pins =
+ /* pcie30x1_0_clkreqn_m1 */
+ <4 RK_PA3 4 &pcfg_pull_none>,
+ /* pcie30x1_0_perstn_m1 */
+ <4 RK_PA5 4 &pcfg_pull_none>,
+ /* pcie30x1_0_waken_m1 */
+ <4 RK_PA4 4 &pcfg_pull_none>,
+ /* pcie30x1_1_clkreqn_m1 */
+ <4 RK_PA0 4 &pcfg_pull_none>,
+ /* pcie30x1_1_perstn_m1 */
+ <4 RK_PA2 4 &pcfg_pull_none>,
+ /* pcie30x1_1_waken_m1 */
+ <4 RK_PA1 4 &pcfg_pull_none>;
+ };
+
+ pcie30x1m2_pins: pcie30x1m2-pins {
+ rockchip,pins =
+ /* pcie30x1_0_clkreqn_m2 */
+ <1 RK_PB5 4 &pcfg_pull_none>,
+ /* pcie30x1_0_perstn_m2 */
+ <1 RK_PB4 4 &pcfg_pull_none>,
+ /* pcie30x1_0_waken_m2 */
+ <1 RK_PB3 4 &pcfg_pull_none>,
+ /* pcie30x1_1_clkreqn_m2 */
+ <1 RK_PA0 4 &pcfg_pull_none>,
+ /* pcie30x1_1_perstn_m2 */
+ <1 RK_PA7 4 &pcfg_pull_none>,
+ /* pcie30x1_1_waken_m2 */
+ <1 RK_PA1 4 &pcfg_pull_none>;
+ };
+
+ pcie30x1_0_button_rstn: pcie30x1-0-button-rstn {
+ rockchip,pins =
+ /* pcie30x1_0_button_rstn */
+ <4 RK_PB1 4 &pcfg_pull_none>;
+ };
+
+ pcie30x1_1_button_rstn: pcie30x1-1-button-rstn {
+ rockchip,pins =
+ /* pcie30x1_1_button_rstn */
+ <4 RK_PB2 4 &pcfg_pull_none>;
+ };
+ };
+
+ pcie30x2 {
+ pcie30x2m0_pins: pcie30x2m0-pins {
+ rockchip,pins =
+ /* pcie30x2_clkreqn_m0 */
+ <0 RK_PD1 12 &pcfg_pull_none>,
+ /* pcie30x2_perstn_m0 */
+ <0 RK_PD4 12 &pcfg_pull_none>,
+ /* pcie30x2_waken_m0 */
+ <0 RK_PD2 12 &pcfg_pull_none>;
+ };
+
+ pcie30x2m1_pins: pcie30x2m1-pins {
+ rockchip,pins =
+ /* pcie30x2_clkreqn_m1 */
+ <4 RK_PA6 4 &pcfg_pull_none>,
+ /* pcie30x2_perstn_m1 */
+ <4 RK_PB0 4 &pcfg_pull_none>,
+ /* pcie30x2_waken_m1 */
+ <4 RK_PA7 4 &pcfg_pull_none>;
+ };
+
+ pcie30x2m2_pins: pcie30x2m2-pins {
+ rockchip,pins =
+ /* pcie30x2_clkreqn_m2 */
+ <3 RK_PD2 4 &pcfg_pull_none>,
+ /* pcie30x2_perstn_m2 */
+ <3 RK_PD4 4 &pcfg_pull_none>,
+ /* pcie30x2_waken_m2 */
+ <3 RK_PD3 4 &pcfg_pull_none>;
+ };
+
+ pcie30x2m3_pins: pcie30x2m3-pins {
+ rockchip,pins =
+ /* pcie30x2_clkreqn_m3 */
+ <1 RK_PD7 4 &pcfg_pull_none>,
+ /* pcie30x2_perstn_m3 */
+ <1 RK_PB7 4 &pcfg_pull_none>,
+ /* pcie30x2_waken_m3 */
+ <1 RK_PB6 4 &pcfg_pull_none>;
+ };
+
+ pcie30x2_button_rstn: pcie30x2-button-rstn {
+ rockchip,pins =
+ /* pcie30x2_button_rstn */
+ <3 RK_PC1 4 &pcfg_pull_none>;
+ };
+ };
+
+ pcie30x4 {
+ pcie30x4m0_pins: pcie30x4m0-pins {
+ rockchip,pins =
+ /* pcie30x4_clkreqn_m0 */
+ <0 RK_PC6 12 &pcfg_pull_none>,
+ /* pcie30x4_perstn_m0 */
+ <0 RK_PD0 12 &pcfg_pull_none>,
+ /* pcie30x4_waken_m0 */
+ <0 RK_PC7 12 &pcfg_pull_none>;
+ };
+
+ pcie30x4m1_pins: pcie30x4m1-pins {
+ rockchip,pins =
+ /* pcie30x4_clkreqn_m1 */
+ <4 RK_PB4 4 &pcfg_pull_none>,
+ /* pcie30x4_perstn_m1 */
+ <4 RK_PB6 4 &pcfg_pull_none>,
+ /* pcie30x4_waken_m1 */
+ <4 RK_PB5 4 &pcfg_pull_none>;
+ };
+
+ pcie30x4m2_pins: pcie30x4m2-pins {
+ rockchip,pins =
+ /* pcie30x4_clkreqn_m2 */
+ <3 RK_PC4 4 &pcfg_pull_none>,
+ /* pcie30x4_perstn_m2 */
+ <3 RK_PC6 4 &pcfg_pull_none>,
+ /* pcie30x4_waken_m2 */
+ <3 RK_PC5 4 &pcfg_pull_none>;
+ };
+
+ pcie30x4m3_pins: pcie30x4m3-pins {
+ rockchip,pins =
+ /* pcie30x4_clkreqn_m3 */
+ <1 RK_PB0 4 &pcfg_pull_none>,
+ /* pcie30x4_perstn_m3 */
+ <1 RK_PB2 4 &pcfg_pull_none>,
+ /* pcie30x4_waken_m3 */
+ <1 RK_PB1 4 &pcfg_pull_none>;
+ };
+
+ pcie30x4_button_rstn: pcie30x4-button-rstn {
+ rockchip,pins =
+ /* pcie30x4_button_rstn */
+ <3 RK_PD5 4 &pcfg_pull_none>;
+ };
+ };
+
+ pdm0 {
+ pdm0m0_clk: pdm0m0-clk {
+ rockchip,pins =
+ /* pdm0_clk0_m0 */
+ <1 RK_PC6 3 &pcfg_pull_none>;
+ };
+
+ pdm0m0_clk1: pdm0m0-clk1 {
+ rockchip,pins =
+ /* pdm0m0_clk1 */
+ <1 RK_PC4 3 &pcfg_pull_none>;
+ };
+
+ pdm0m0_sdi0: pdm0m0-sdi0 {
+ rockchip,pins =
+ /* pdm0m0_sdi0 */
+ <1 RK_PD5 3 &pcfg_pull_none>;
+ };
+
+ pdm0m0_sdi1: pdm0m0-sdi1 {
+ rockchip,pins =
+ /* pdm0m0_sdi1 */
+ <1 RK_PD1 3 &pcfg_pull_none>;
+ };
+
+ pdm0m0_sdi2: pdm0m0-sdi2 {
+ rockchip,pins =
+ /* pdm0m0_sdi2 */
+ <1 RK_PD2 3 &pcfg_pull_none>;
+ };
+
+ pdm0m0_sdi3: pdm0m0-sdi3 {
+ rockchip,pins =
+ /* pdm0m0_sdi3 */
+ <1 RK_PD3 3 &pcfg_pull_none>;
+ };
+ pdm0m1_clk: pdm0m1-clk {
+ rockchip,pins =
+ /* pdm0_clk0_m1 */
+ <0 RK_PC0 2 &pcfg_pull_none>;
+ };
+
+ pdm0m1_clk1: pdm0m1-clk1 {
+ rockchip,pins =
+ /* pdm0m1_clk1 */
+ <0 RK_PC4 2 &pcfg_pull_none>;
+ };
+
+ pdm0m1_sdi0: pdm0m1-sdi0 {
+ rockchip,pins =
+ /* pdm0m1_sdi0 */
+ <0 RK_PC7 2 &pcfg_pull_none>;
+ };
+
+ pdm0m1_sdi1: pdm0m1-sdi1 {
+ rockchip,pins =
+ /* pdm0m1_sdi1 */
+ <0 RK_PD0 2 &pcfg_pull_none>;
+ };
+
+ pdm0m1_sdi2: pdm0m1-sdi2 {
+ rockchip,pins =
+ /* pdm0m1_sdi2 */
+ <0 RK_PD4 2 &pcfg_pull_none>;
+ };
+
+ pdm0m1_sdi3: pdm0m1-sdi3 {
+ rockchip,pins =
+ /* pdm0m1_sdi3 */
+ <0 RK_PD6 2 &pcfg_pull_none>;
+ };
+ };
+
+ pdm1 {
+ pdm1m0_clk: pdm1m0-clk {
+ rockchip,pins =
+ /* pdm1_clk0_m0 */
+ <4 RK_PD5 2 &pcfg_pull_none>;
+ };
+
+ pdm1m0_clk1: pdm1m0-clk1 {
+ rockchip,pins =
+ /* pdm1m0_clk1 */
+ <4 RK_PD4 2 &pcfg_pull_none>;
+ };
+
+ pdm1m0_sdi0: pdm1m0-sdi0 {
+ rockchip,pins =
+ /* pdm1m0_sdi0 */
+ <4 RK_PD3 2 &pcfg_pull_none>;
+ };
+
+ pdm1m0_sdi1: pdm1m0-sdi1 {
+ rockchip,pins =
+ /* pdm1m0_sdi1 */
+ <4 RK_PD2 2 &pcfg_pull_none>;
+ };
+
+ pdm1m0_sdi2: pdm1m0-sdi2 {
+ rockchip,pins =
+ /* pdm1m0_sdi2 */
+ <4 RK_PD1 2 &pcfg_pull_none>;
+ };
+
+ pdm1m0_sdi3: pdm1m0-sdi3 {
+ rockchip,pins =
+ /* pdm1m0_sdi3 */
+ <4 RK_PD0 2 &pcfg_pull_none>;
+ };
+ pdm1m1_clk: pdm1m1-clk {
+ rockchip,pins =
+ /* pdm1_clk0_m1 */
+ <1 RK_PB4 2 &pcfg_pull_none>;
+ };
+
+ pdm1m1_clk1: pdm1m1-clk1 {
+ rockchip,pins =
+ /* pdm1m1_clk1 */
+ <1 RK_PB3 2 &pcfg_pull_none>;
+ };
+
+ pdm1m1_sdi0: pdm1m1-sdi0 {
+ rockchip,pins =
+ /* pdm1m1_sdi0 */
+ <1 RK_PA7 2 &pcfg_pull_none>;
+ };
+
+ pdm1m1_sdi1: pdm1m1-sdi1 {
+ rockchip,pins =
+ /* pdm1m1_sdi1 */
+ <1 RK_PB0 2 &pcfg_pull_none>;
+ };
+
+ pdm1m1_sdi2: pdm1m1-sdi2 {
+ rockchip,pins =
+ /* pdm1m1_sdi2 */
+ <1 RK_PB1 2 &pcfg_pull_none>;
+ };
+
+ pdm1m1_sdi3: pdm1m1-sdi3 {
+ rockchip,pins =
+ /* pdm1m1_sdi3 */
+ <1 RK_PB2 2 &pcfg_pull_none>;
+ };
+ };
+
+ pmic {
+ pmic_pins: pmic-pins {
+ rockchip,pins =
+ /* pmic_int_l */
+ <0 RK_PA7 1 &pcfg_pull_none>,
+ /* pmic_sleep1 */
+ <0 RK_PA2 1 &pcfg_pull_none>,
+ /* pmic_sleep2 */
+ <0 RK_PA3 1 &pcfg_pull_none>,
+ /* pmic_sleep3 */
+ <0 RK_PC1 1 &pcfg_pull_none>,
+ /* pmic_sleep4 */
+ <0 RK_PC2 1 &pcfg_pull_none>,
+ /* pmic_sleep5 */
+ <0 RK_PC3 1 &pcfg_pull_none>,
+ /* pmic_sleep6 */
+ <0 RK_PD6 1 &pcfg_pull_none>;
+ };
+ };
+
+ pmu {
+ pmu_pins: pmu-pins {
+ rockchip,pins =
+ /* pmu_debug */
+ <0 RK_PA5 3 &pcfg_pull_none>;
+ };
+ };
+
+ pwm0 {
+ pwm0m0_pins: pwm0m0-pins {
+ rockchip,pins =
+ /* pwm0_m0 */
+ <0 RK_PB7 3 &pcfg_pull_none>;
+ };
+
+ pwm0m1_pins: pwm0m1-pins {
+ rockchip,pins =
+ /* pwm0_m1 */
+ <1 RK_PD2 11 &pcfg_pull_none>;
+ };
+
+ pwm0m2_pins: pwm0m2-pins {
+ rockchip,pins =
+ /* pwm0_m2 */
+ <1 RK_PA2 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm1 {
+ pwm1m0_pins: pwm1m0-pins {
+ rockchip,pins =
+ /* pwm1_m0 */
+ <0 RK_PC0 3 &pcfg_pull_none>;
+ };
+
+ pwm1m1_pins: pwm1m1-pins {
+ rockchip,pins =
+ /* pwm1_m1 */
+ <1 RK_PD3 11 &pcfg_pull_none>;
+ };
+
+ pwm1m2_pins: pwm1m2-pins {
+ rockchip,pins =
+ /* pwm1_m2 */
+ <1 RK_PA3 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm2 {
+ pwm2m0_pins: pwm2m0-pins {
+ rockchip,pins =
+ /* pwm2_m0 */
+ <0 RK_PC4 3 &pcfg_pull_none>;
+ };
+
+ pwm2m1_pins: pwm2m1-pins {
+ rockchip,pins =
+ /* pwm2_m1 */
+ <3 RK_PB1 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm3 {
+ pwm3m0_pins: pwm3m0-pins {
+ rockchip,pins =
+ /* pwm3_ir_m0 */
+ <0 RK_PD4 3 &pcfg_pull_none>;
+ };
+
+ pwm3m1_pins: pwm3m1-pins {
+ rockchip,pins =
+ /* pwm3_ir_m1 */
+ <3 RK_PB2 11 &pcfg_pull_none>;
+ };
+
+ pwm3m2_pins: pwm3m2-pins {
+ rockchip,pins =
+ /* pwm3_ir_m2 */
+ <1 RK_PC2 11 &pcfg_pull_none>;
+ };
+
+ pwm3m3_pins: pwm3m3-pins {
+ rockchip,pins =
+ /* pwm3_ir_m3 */
+ <1 RK_PA7 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm4 {
+ pwm4m0_pins: pwm4m0-pins {
+ rockchip,pins =
+ /* pwm4_m0 */
+ <0 RK_PC5 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm5 {
+ pwm5m0_pins: pwm5m0-pins {
+ rockchip,pins =
+ /* pwm5_m0 */
+ <0 RK_PB1 3 &pcfg_pull_none>;
+ };
+
+ pwm5m1_pins: pwm5m1-pins {
+ rockchip,pins =
+ /* pwm5_m1 */
+ <0 RK_PC6 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm6 {
+ pwm6m0_pins: pwm6m0-pins {
+ rockchip,pins =
+ /* pwm6_m0 */
+ <0 RK_PC7 11 &pcfg_pull_none>;
+ };
+
+ pwm6m1_pins: pwm6m1-pins {
+ rockchip,pins =
+ /* pwm6_m1 */
+ <4 RK_PC1 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm7 {
+ pwm7m0_pins: pwm7m0-pins {
+ rockchip,pins =
+ /* pwm7_ir_m0 */
+ <0 RK_PD0 11 &pcfg_pull_none>;
+ };
+
+ pwm7m1_pins: pwm7m1-pins {
+ rockchip,pins =
+ /* pwm7_ir_m1 */
+ <4 RK_PD4 11 &pcfg_pull_none>;
+ };
+
+ pwm7m2_pins: pwm7m2-pins {
+ rockchip,pins =
+ /* pwm7_ir_m2 */
+ <1 RK_PC3 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm8 {
+ pwm8m0_pins: pwm8m0-pins {
+ rockchip,pins =
+ /* pwm8_m0 */
+ <3 RK_PA7 11 &pcfg_pull_none>;
+ };
+
+ pwm8m1_pins: pwm8m1-pins {
+ rockchip,pins =
+ /* pwm8_m1 */
+ <4 RK_PD0 11 &pcfg_pull_none>;
+ };
+
+ pwm8m2_pins: pwm8m2-pins {
+ rockchip,pins =
+ /* pwm8_m2 */
+ <3 RK_PD0 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm9 {
+ pwm9m0_pins: pwm9m0-pins {
+ rockchip,pins =
+ /* pwm9_m0 */
+ <3 RK_PB0 11 &pcfg_pull_none>;
+ };
+
+ pwm9m1_pins: pwm9m1-pins {
+ rockchip,pins =
+ /* pwm9_m1 */
+ <4 RK_PD1 11 &pcfg_pull_none>;
+ };
+
+ pwm9m2_pins: pwm9m2-pins {
+ rockchip,pins =
+ /* pwm9_m2 */
+ <3 RK_PD1 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm10 {
+ pwm10m0_pins: pwm10m0-pins {
+ rockchip,pins =
+ /* pwm10_m0 */
+ <3 RK_PA0 11 &pcfg_pull_none>;
+ };
+
+ pwm10m1_pins: pwm10m1-pins {
+ rockchip,pins =
+ /* pwm10_m1 */
+ <4 RK_PD3 11 &pcfg_pull_none>;
+ };
+
+ pwm10m2_pins: pwm10m2-pins {
+ rockchip,pins =
+ /* pwm10_m2 */
+ <3 RK_PD3 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm11 {
+ pwm11m0_pins: pwm11m0-pins {
+ rockchip,pins =
+ /* pwm11_ir_m0 */
+ <3 RK_PA1 11 &pcfg_pull_none>;
+ };
+
+ pwm11m1_pins: pwm11m1-pins {
+ rockchip,pins =
+ /* pwm11_ir_m1 */
+ <4 RK_PB4 11 &pcfg_pull_none>;
+ };
+
+ pwm11m2_pins: pwm11m2-pins {
+ rockchip,pins =
+ /* pwm11_ir_m2 */
+ <1 RK_PC4 11 &pcfg_pull_none>;
+ };
+
+ pwm11m3_pins: pwm11m3-pins {
+ rockchip,pins =
+ /* pwm11_ir_m3 */
+ <3 RK_PD5 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm12 {
+ pwm12m0_pins: pwm12m0-pins {
+ rockchip,pins =
+ /* pwm12_m0 */
+ <3 RK_PB5 11 &pcfg_pull_none>;
+ };
+
+ pwm12m1_pins: pwm12m1-pins {
+ rockchip,pins =
+ /* pwm12_m1 */
+ <4 RK_PB5 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm13 {
+ pwm13m0_pins: pwm13m0-pins {
+ rockchip,pins =
+ /* pwm13_m0 */
+ <3 RK_PB6 11 &pcfg_pull_none>;
+ };
+
+ pwm13m1_pins: pwm13m1-pins {
+ rockchip,pins =
+ /* pwm13_m1 */
+ <4 RK_PB6 11 &pcfg_pull_none>;
+ };
+
+ pwm13m2_pins: pwm13m2-pins {
+ rockchip,pins =
+ /* pwm13_m2 */
+ <1 RK_PB7 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm14 {
+ pwm14m0_pins: pwm14m0-pins {
+ rockchip,pins =
+ /* pwm14_m0 */
+ <3 RK_PC2 11 &pcfg_pull_none>;
+ };
+
+ pwm14m1_pins: pwm14m1-pins {
+ rockchip,pins =
+ /* pwm14_m1 */
+ <4 RK_PB2 11 &pcfg_pull_none>;
+ };
+
+ pwm14m2_pins: pwm14m2-pins {
+ rockchip,pins =
+ /* pwm14_m2 */
+ <1 RK_PD6 11 &pcfg_pull_none>;
+ };
+ };
+
+ pwm15 {
+ pwm15m0_pins: pwm15m0-pins {
+ rockchip,pins =
+ /* pwm15_ir_m0 */
+ <3 RK_PC3 11 &pcfg_pull_none>;
+ };
+
+ pwm15m1_pins: pwm15m1-pins {
+ rockchip,pins =
+ /* pwm15_ir_m1 */
+ <4 RK_PB3 11 &pcfg_pull_none>;
+ };
+
+ pwm15m2_pins: pwm15m2-pins {
+ rockchip,pins =
+ /* pwm15_ir_m2 */
+ <1 RK_PC6 11 &pcfg_pull_none>;
+ };
+
+ pwm15m3_pins: pwm15m3-pins {
+ rockchip,pins =
+ /* pwm15_ir_m3 */
+ <1 RK_PD7 11 &pcfg_pull_none>;
+ };
+ };
+
+ refclk {
+ refclk_pins: refclk-pins {
+ rockchip,pins =
+ /* refclk_out */
+ <0 RK_PA0 1 &pcfg_pull_none>;
+ };
+ };
+
+ sata {
+ sata_pins: sata-pins {
+ rockchip,pins =
+ /* sata_cp_pod */
+ <0 RK_PC6 13 &pcfg_pull_none>,
+ /* sata_cpdet */
+ <0 RK_PD4 13 &pcfg_pull_none>,
+ /* sata_mp_switch */
+ <0 RK_PD5 13 &pcfg_pull_none>;
+ };
+ };
+
+ sata0 {
+ sata0m0_pins: sata0m0-pins {
+ rockchip,pins =
+ /* sata0_act_led_m0 */
+ <4 RK_PB6 6 &pcfg_pull_none>;
+ };
+
+ sata0m1_pins: sata0m1-pins {
+ rockchip,pins =
+ /* sata0_act_led_m1 */
+ <1 RK_PB3 6 &pcfg_pull_none>;
+ };
+ };
+
+ sata1 {
+ sata1m0_pins: sata1m0-pins {
+ rockchip,pins =
+ /* sata1_act_led_m0 */
+ <4 RK_PB5 6 &pcfg_pull_none>;
+ };
+
+ sata1m1_pins: sata1m1-pins {
+ rockchip,pins =
+ /* sata1_act_led_m1 */
+ <1 RK_PA1 6 &pcfg_pull_none>;
+ };
+ };
+
+ sata2 {
+ sata2m0_pins: sata2m0-pins {
+ rockchip,pins =
+ /* sata2_act_led_m0 */
+ <4 RK_PB1 6 &pcfg_pull_none>;
+ };
+
+ sata2m1_pins: sata2m1-pins {
+ rockchip,pins =
+ /* sata2_act_led_m1 */
+ <1 RK_PB7 6 &pcfg_pull_none>;
+ };
+ };
+
+ sdio {
+ sdiom1_pins: sdiom1-pins {
+ rockchip,pins =
+ /* sdio_clk_m1 */
+ <3 RK_PA5 2 &pcfg_pull_none>,
+ /* sdio_cmd_m1 */
+ <3 RK_PA4 2 &pcfg_pull_none>,
+ /* sdio_d0_m1 */
+ <3 RK_PA0 2 &pcfg_pull_none>,
+ /* sdio_d1_m1 */
+ <3 RK_PA1 2 &pcfg_pull_none>,
+ /* sdio_d2_m1 */
+ <3 RK_PA2 2 &pcfg_pull_none>,
+ /* sdio_d3_m1 */
+ <3 RK_PA3 2 &pcfg_pull_none>;
+ };
+ };
+
+ sdmmc {
+ sdmmc_bus4: sdmmc-bus4 {
+ rockchip,pins =
+ /* sdmmc_d0 */
+ <4 RK_PD0 1 &pcfg_pull_up_drv_level_2>,
+ /* sdmmc_d1 */
+ <4 RK_PD1 1 &pcfg_pull_up_drv_level_2>,
+ /* sdmmc_d2 */
+ <4 RK_PD2 1 &pcfg_pull_up_drv_level_2>,
+ /* sdmmc_d3 */
+ <4 RK_PD3 1 &pcfg_pull_up_drv_level_2>;
+ };
+
+ sdmmc_clk: sdmmc-clk {
+ rockchip,pins =
+ /* sdmmc_clk */
+ <4 RK_PD5 1 &pcfg_pull_up_drv_level_2>;
+ };
+
+ sdmmc_cmd: sdmmc-cmd {
+ rockchip,pins =
+ /* sdmmc_cmd */
+ <4 RK_PD4 1 &pcfg_pull_up_drv_level_2>;
+ };
+
+ sdmmc_det: sdmmc-det {
+ rockchip,pins =
+ /* sdmmc_det */
+ <0 RK_PA4 1 &pcfg_pull_up>;
+ };
+
+ sdmmc_pwren: sdmmc-pwren {
+ rockchip,pins =
+ /* sdmmc_pwren */
+ <0 RK_PA5 2 &pcfg_pull_none>;
+ };
+ };
+
+ spdif0 {
+ spdif0m0_tx: spdif0m0-tx {
+ rockchip,pins =
+ /* spdif0m0_tx */
+ <1 RK_PB6 3 &pcfg_pull_none>;
+ };
+
+ spdif0m1_tx: spdif0m1-tx {
+ rockchip,pins =
+ /* spdif0m1_tx */
+ <4 RK_PB4 6 &pcfg_pull_none>;
+ };
+ };
+
+ spdif1 {
+ spdif1m0_tx: spdif1m0-tx {
+ rockchip,pins =
+ /* spdif1m0_tx */
+ <1 RK_PB7 3 &pcfg_pull_none>;
+ };
+
+ spdif1m1_tx: spdif1m1-tx {
+ rockchip,pins =
+ /* spdif1m1_tx */
+ <4 RK_PB1 2 &pcfg_pull_none>;
+ };
+
+ spdif1m2_tx: spdif1m2-tx {
+ rockchip,pins =
+ /* spdif1m2_tx */
+ <4 RK_PC1 3 &pcfg_pull_none>;
+ };
+ };
+
+ spi0 {
+ spi0m0_pins: spi0m0-pins {
+ rockchip,pins =
+ /* spi0_clk_m0 */
+ <0 RK_PC6 8 &pcfg_pull_none>,
+ /* spi0_miso_m0 */
+ <0 RK_PC7 8 &pcfg_pull_none>,
+ /* spi0_mosi_m0 */
+ <0 RK_PC0 8 &pcfg_pull_none>;
+ };
+
+ spi0m0_cs0: spi0m0-cs0 {
+ rockchip,pins =
+ /* spi0_cs0_m0 */
+ <0 RK_PD1 8 &pcfg_pull_none>;
+ };
+
+ spi0m0_cs1: spi0m0-cs1 {
+ rockchip,pins =
+ /* spi0_cs1_m0 */
+ <0 RK_PB7 8 &pcfg_pull_none>;
+ };
+ spi0m1_pins: spi0m1-pins {
+ rockchip,pins =
+ /* spi0_clk_m1 */
+ <4 RK_PA2 8 &pcfg_pull_none>,
+ /* spi0_miso_m1 */
+ <4 RK_PA0 8 &pcfg_pull_none>,
+ /* spi0_mosi_m1 */
+ <4 RK_PA1 8 &pcfg_pull_none>;
+ };
+
+ spi0m1_cs0: spi0m1-cs0 {
+ rockchip,pins =
+ /* spi0_cs0_m1 */
+ <4 RK_PB2 8 &pcfg_pull_none>;
+ };
+
+ spi0m1_cs1: spi0m1-cs1 {
+ rockchip,pins =
+ /* spi0_cs1_m1 */
+ <4 RK_PB1 8 &pcfg_pull_none>;
+ };
+ spi0m2_pins: spi0m2-pins {
+ rockchip,pins =
+ /* spi0_clk_m2 */
+ <1 RK_PB3 8 &pcfg_pull_none>,
+ /* spi0_miso_m2 */
+ <1 RK_PB1 8 &pcfg_pull_none>,
+ /* spi0_mosi_m2 */
+ <1 RK_PB2 8 &pcfg_pull_none>;
+ };
+
+ spi0m2_cs0: spi0m2-cs0 {
+ rockchip,pins =
+ /* spi0_cs0_m2 */
+ <1 RK_PB4 8 &pcfg_pull_none>;
+ };
+
+ spi0m2_cs1: spi0m2-cs1 {
+ rockchip,pins =
+ /* spi0_cs1_m2 */
+ <1 RK_PB5 8 &pcfg_pull_none>;
+ };
+ spi0m3_pins: spi0m3-pins {
+ rockchip,pins =
+ /* spi0_clk_m3 */
+ <3 RK_PD3 8 &pcfg_pull_none>,
+ /* spi0_miso_m3 */
+ <3 RK_PD1 8 &pcfg_pull_none>,
+ /* spi0_mosi_m3 */
+ <3 RK_PD2 8 &pcfg_pull_none>;
+ };
+
+ spi0m3_cs0: spi0m3-cs0 {
+ rockchip,pins =
+ /* spi0_cs0_m3 */
+ <3 RK_PD4 8 &pcfg_pull_none>;
+ };
+
+ spi0m3_cs1: spi0m3-cs1 {
+ rockchip,pins =
+ /* spi0_cs1_m3 */
+ <3 RK_PD5 8 &pcfg_pull_none>;
+ };
+ };
+
+ spi1 {
+ spi1m1_pins: spi1m1-pins {
+ rockchip,pins =
+ /* spi1_clk_m1 */
+ <3 RK_PC1 8 &pcfg_pull_none>,
+ /* spi1_miso_m1 */
+ <3 RK_PC0 8 &pcfg_pull_none>,
+ /* spi1_mosi_m1 */
+ <3 RK_PB7 8 &pcfg_pull_none>;
+ };
+
+ spi1m1_cs0: spi1m1-cs0 {
+ rockchip,pins =
+ /* spi1_cs0_m1 */
+ <3 RK_PC2 8 &pcfg_pull_none>;
+ };
+
+ spi1m1_cs1: spi1m1-cs1 {
+ rockchip,pins =
+ /* spi1_cs1_m1 */
+ <3 RK_PC3 8 &pcfg_pull_none>;
+ };
+
+ spi1m2_pins: spi1m2-pins {
+ rockchip,pins =
+ /* spi1_clk_m2 */
+ <1 RK_PD2 8 &pcfg_pull_none>,
+ /* spi1_miso_m2 */
+ <1 RK_PD0 8 &pcfg_pull_none>,
+ /* spi1_mosi_m2 */
+ <1 RK_PD1 8 &pcfg_pull_none>;
+ };
+
+ spi1m2_cs0: spi1m2-cs0 {
+ rockchip,pins =
+ /* spi1_cs0_m2 */
+ <1 RK_PD3 8 &pcfg_pull_none>;
+ };
+
+ spi1m2_cs1: spi1m2-cs1 {
+ rockchip,pins =
+ /* spi1_cs1_m2 */
+ <1 RK_PD5 8 &pcfg_pull_none>;
+ };
+ };
+
+ spi2 {
+ spi2m0_pins: spi2m0-pins {
+ rockchip,pins =
+ /* spi2_clk_m0 */
+ <1 RK_PA6 8 &pcfg_pull_none>,
+ /* spi2_miso_m0 */
+ <1 RK_PA4 8 &pcfg_pull_none>,
+ /* spi2_mosi_m0 */
+ <1 RK_PA5 8 &pcfg_pull_none>;
+ };
+
+ spi2m0_cs0: spi2m0-cs0 {
+ rockchip,pins =
+ /* spi2_cs0_m0 */
+ <1 RK_PA7 8 &pcfg_pull_none>;
+ };
+
+ spi2m0_cs1: spi2m0-cs1 {
+ rockchip,pins =
+ /* spi2_cs1_m0 */
+ <1 RK_PB0 8 &pcfg_pull_none>;
+ };
+
+ spi2m1_pins: spi2m1-pins {
+ rockchip,pins =
+ /* spi2_clk_m1 */
+ <4 RK_PA6 8 &pcfg_pull_none>,
+ /* spi2_miso_m1 */
+ <4 RK_PA4 8 &pcfg_pull_none>,
+ /* spi2_mosi_m1 */
+ <4 RK_PA5 8 &pcfg_pull_none>;
+ };
+
+ spi2m1_cs0: spi2m1-cs0 {
+ rockchip,pins =
+ /* spi2_cs0_m1 */
+ <4 RK_PA7 8 &pcfg_pull_none>;
+ };
+
+ spi2m1_cs1: spi2m1-cs1 {
+ rockchip,pins =
+ /* spi2_cs1_m1 */
+ <4 RK_PB0 8 &pcfg_pull_none>;
+ };
+
+ spi2m2_pins: spi2m2-pins {
+ rockchip,pins =
+ /* spi2_clk_m2 */
+ <0 RK_PA5 1 &pcfg_pull_none>,
+ /* spi2_miso_m2 */
+ <0 RK_PB3 1 &pcfg_pull_none>,
+ /* spi2_mosi_m2 */
+ <0 RK_PA6 1 &pcfg_pull_none>;
+ };
+
+ spi2m2_cs0: spi2m2-cs0 {
+ rockchip,pins =
+ /* spi2_cs0_m2 */
+ <0 RK_PB1 1 &pcfg_pull_none>;
+ };
+
+ spi2m2_cs1: spi2m2-cs1 {
+ rockchip,pins =
+ /* spi2_cs1_m2 */
+ <0 RK_PB0 1 &pcfg_pull_none>;
+ };
+ };
+
+ spi3 {
+ spi3m1_pins: spi3m1-pins {
+ rockchip,pins =
+ /* spi3_clk_m1 */
+ <4 RK_PB7 8 &pcfg_pull_none>,
+ /* spi3_miso_m1 */
+ <4 RK_PB5 8 &pcfg_pull_none>,
+ /* spi3_mosi_m1 */
+ <4 RK_PB6 8 &pcfg_pull_none>;
+ };
+
+ spi3m1_cs0: spi3m1-cs0 {
+ rockchip,pins =
+ /* spi3_cs0_m1 */
+ <4 RK_PC0 8 &pcfg_pull_none>;
+ };
+
+ spi3m1_cs1: spi3m1-cs1 {
+ rockchip,pins =
+ /* spi3_cs1_m1 */
+ <4 RK_PC1 8 &pcfg_pull_none>;
+ };
+
+ spi3m2_pins: spi3m2-pins {
+ rockchip,pins =
+ /* spi3_clk_m2 */
+ <0 RK_PD3 8 &pcfg_pull_none>,
+ /* spi3_miso_m2 */
+ <0 RK_PD0 8 &pcfg_pull_none>,
+ /* spi3_mosi_m2 */
+ <0 RK_PD2 8 &pcfg_pull_none>;
+ };
+
+ spi3m2_cs0: spi3m2-cs0 {
+ rockchip,pins =
+ /* spi3_cs0_m2 */
+ <0 RK_PD4 8 &pcfg_pull_none>;
+ };
+
+ spi3m2_cs1: spi3m2-cs1 {
+ rockchip,pins =
+ /* spi3_cs1_m2 */
+ <0 RK_PD5 8 &pcfg_pull_none>;
+ };
+
+ spi3m3_pins: spi3m3-pins {
+ rockchip,pins =
+ /* spi3_clk_m3 */
+ <3 RK_PD0 8 &pcfg_pull_none>,
+ /* spi3_miso_m3 */
+ <3 RK_PC6 8 &pcfg_pull_none>,
+ /* spi3_mosi_m3 */
+ <3 RK_PC7 8 &pcfg_pull_none>;
+ };
+
+ spi3m3_cs0: spi3m3-cs0 {
+ rockchip,pins =
+ /* spi3_cs0_m3 */
+ <3 RK_PC4 8 &pcfg_pull_none>;
+ };
+
+ spi3m3_cs1: spi3m3-cs1 {
+ rockchip,pins =
+ /* spi3_cs1_m3 */
+ <3 RK_PC5 8 &pcfg_pull_none>;
+ };
+ };
+
+ spi4 {
+ spi4m0_pins: spi4m0-pins {
+ rockchip,pins =
+ /* spi4_clk_m0 */
+ <1 RK_PC2 8 &pcfg_pull_none>,
+ /* spi4_miso_m0 */
+ <1 RK_PC0 8 &pcfg_pull_none>,
+ /* spi4_mosi_m0 */
+ <1 RK_PC1 8 &pcfg_pull_none>;
+ };
+
+ spi4m0_cs0: spi4m0-cs0 {
+ rockchip,pins =
+ /* spi4_cs0_m0 */
+ <1 RK_PC3 8 &pcfg_pull_none>;
+ };
+
+ spi4m0_cs1: spi4m0-cs1 {
+ rockchip,pins =
+ /* spi4_cs1_m0 */
+ <1 RK_PC4 8 &pcfg_pull_none>;
+ };
+
+ spi4m1_pins: spi4m1-pins {
+ rockchip,pins =
+ /* spi4_clk_m1 */
+ <3 RK_PA2 8 &pcfg_pull_none>,
+ /* spi4_miso_m1 */
+ <3 RK_PA0 8 &pcfg_pull_none>,
+ /* spi4_mosi_m1 */
+ <3 RK_PA1 8 &pcfg_pull_none>;
+ };
+
+ spi4m1_cs0: spi4m1-cs0 {
+ rockchip,pins =
+ /* spi4_cs0_m1 */
+ <3 RK_PA3 8 &pcfg_pull_none>;
+ };
+
+ spi4m1_cs1: spi4m1-cs1 {
+ rockchip,pins =
+ /* spi4_cs1_m1 */
+ <3 RK_PA4 8 &pcfg_pull_none>;
+ };
+
+ spi4m2_pins: spi4m2-pins {
+ rockchip,pins =
+ /* spi4_clk_m2 */
+ <1 RK_PA2 8 &pcfg_pull_none>,
+ /* spi4_miso_m2 */
+ <1 RK_PA0 8 &pcfg_pull_none>,
+ /* spi4_mosi_m2 */
+ <1 RK_PA1 8 &pcfg_pull_none>;
+ };
+
+ spi4m2_cs0: spi4m2-cs0 {
+ rockchip,pins =
+ /* spi4_cs0_m2 */
+ <1 RK_PA3 8 &pcfg_pull_none>;
+ };
+ };
+
+ tsadc {
+ tsadcm1_shut: tsadcm1-shut {
+ rockchip,pins =
+ /* tsadcm1_shut */
+ <0 RK_PA2 2 &pcfg_pull_none>;
+ };
+
+ tsadc_shut: tsadc-shut {
+ rockchip,pins =
+ /* tsadc_shut */
+ <0 RK_PA1 2 &pcfg_pull_none>;
+ };
+
+ tsadc_shut_org: tsadc-shut-org {
+ rockchip,pins =
+ /* tsadc_shut_org */
+ <0 RK_PA1 1 &pcfg_pull_none>;
+ };
+ };
+
+ uart0 {
+ uart0m0_xfer: uart0m0-xfer {
+ rockchip,pins =
+ /* uart0_rx_m0 */
+ <0 RK_PC4 4 &pcfg_pull_up>,
+ /* uart0_tx_m0 */
+ <0 RK_PC5 4 &pcfg_pull_up>;
+ };
+
+ uart0m1_xfer: uart0m1-xfer {
+ rockchip,pins =
+ /* uart0_rx_m1 */
+ <0 RK_PB0 4 &pcfg_pull_up>,
+ /* uart0_tx_m1 */
+ <0 RK_PB1 4 &pcfg_pull_up>;
+ };
+
+ uart0m2_xfer: uart0m2-xfer {
+ rockchip,pins =
+ /* uart0_rx_m2 */
+ <4 RK_PA4 10 &pcfg_pull_up>,
+ /* uart0_tx_m2 */
+ <4 RK_PA3 10 &pcfg_pull_up>;
+ };
+
+ uart0_ctsn: uart0-ctsn {
+ rockchip,pins =
+ /* uart0_ctsn */
+ <0 RK_PD1 4 &pcfg_pull_none>;
+ };
+
+ uart0_rtsn: uart0-rtsn {
+ rockchip,pins =
+ /* uart0_rtsn */
+ <0 RK_PC6 4 &pcfg_pull_none>;
+ };
+ };
+
+ uart1 {
+ uart1m1_xfer: uart1m1-xfer {
+ rockchip,pins =
+ /* uart1_rx_m1 */
+ <1 RK_PB7 10 &pcfg_pull_up>,
+ /* uart1_tx_m1 */
+ <1 RK_PB6 10 &pcfg_pull_up>;
+ };
+
+ uart1m1_ctsn: uart1m1-ctsn {
+ rockchip,pins =
+ /* uart1m1_ctsn */
+ <1 RK_PD7 10 &pcfg_pull_none>;
+ };
+
+ uart1m1_rtsn: uart1m1-rtsn {
+ rockchip,pins =
+ /* uart1m1_rtsn */
+ <1 RK_PD6 10 &pcfg_pull_none>;
+ };
+
+ uart1m2_xfer: uart1m2-xfer {
+ rockchip,pins =
+ /* uart1_rx_m2 */
+ <0 RK_PD2 10 &pcfg_pull_up>,
+ /* uart1_tx_m2 */
+ <0 RK_PD1 10 &pcfg_pull_up>;
+ };
+
+ uart1m2_ctsn: uart1m2-ctsn {
+ rockchip,pins =
+ /* uart1m2_ctsn */
+ <0 RK_PD0 10 &pcfg_pull_none>;
+ };
+
+ uart1m2_rtsn: uart1m2-rtsn {
+ rockchip,pins =
+ /* uart1m2_rtsn */
+ <0 RK_PC7 10 &pcfg_pull_none>;
+ };
+ };
+
+ uart2 {
+ uart2m0_xfer: uart2m0-xfer {
+ rockchip,pins =
+ /* uart2_rx_m0 */
+ <0 RK_PB6 10 &pcfg_pull_up>,
+ /* uart2_tx_m0 */
+ <0 RK_PB5 10 &pcfg_pull_up>;
+ };
+
+ uart2m1_xfer: uart2m1-xfer {
+ rockchip,pins =
+ /* uart2_rx_m1 */
+ <4 RK_PD1 10 &pcfg_pull_up>,
+ /* uart2_tx_m1 */
+ <4 RK_PD0 10 &pcfg_pull_up>;
+ };
+
+ uart2m2_xfer: uart2m2-xfer {
+ rockchip,pins =
+ /* uart2_rx_m2 */
+ <3 RK_PB2 10 &pcfg_pull_up>,
+ /* uart2_tx_m2 */
+ <3 RK_PB1 10 &pcfg_pull_up>;
+ };
+
+ uart2_ctsn: uart2-ctsn {
+ rockchip,pins =
+ /* uart2_ctsn */
+ <3 RK_PB4 10 &pcfg_pull_none>;
+ };
+
+ uart2_rtsn: uart2-rtsn {
+ rockchip,pins =
+ /* uart2_rtsn */
+ <3 RK_PB3 10 &pcfg_pull_none>;
+ };
+ };
+
+ uart3 {
+ uart3m0_xfer: uart3m0-xfer {
+ rockchip,pins =
+ /* uart3_rx_m0 */
+ <1 RK_PC0 10 &pcfg_pull_up>,
+ /* uart3_tx_m0 */
+ <1 RK_PC1 10 &pcfg_pull_up>;
+ };
+
+ uart3m1_xfer: uart3m1-xfer {
+ rockchip,pins =
+ /* uart3_rx_m1 */
+ <3 RK_PB6 10 &pcfg_pull_up>,
+ /* uart3_tx_m1 */
+ <3 RK_PB5 10 &pcfg_pull_up>;
+ };
+
+ uart3m2_xfer: uart3m2-xfer {
+ rockchip,pins =
+ /* uart3_rx_m2 */
+ <4 RK_PA6 10 &pcfg_pull_up>,
+ /* uart3_tx_m2 */
+ <4 RK_PA5 10 &pcfg_pull_up>;
+ };
+
+ uart3_ctsn: uart3-ctsn {
+ rockchip,pins =
+ /* uart3_ctsn */
+ <1 RK_PC3 10 &pcfg_pull_none>;
+ };
+
+ uart3_rtsn: uart3-rtsn {
+ rockchip,pins =
+ /* uart3_rtsn */
+ <1 RK_PC2 10 &pcfg_pull_none>;
+ };
+ };
+
+ uart4 {
+ uart4m0_xfer: uart4m0-xfer {
+ rockchip,pins =
+ /* uart4_rx_m0 */
+ <1 RK_PD3 10 &pcfg_pull_up>,
+ /* uart4_tx_m0 */
+ <1 RK_PD2 10 &pcfg_pull_up>;
+ };
+
+ uart4m1_xfer: uart4m1-xfer {
+ rockchip,pins =
+ /* uart4_rx_m1 */
+ <3 RK_PD0 10 &pcfg_pull_up>,
+ /* uart4_tx_m1 */
+ <3 RK_PD1 10 &pcfg_pull_up>;
+ };
+
+ uart4m2_xfer: uart4m2-xfer {
+ rockchip,pins =
+ /* uart4_rx_m2 */
+ <1 RK_PB2 10 &pcfg_pull_up>,
+ /* uart4_tx_m2 */
+ <1 RK_PB3 10 &pcfg_pull_up>;
+ };
+
+ uart4_ctsn: uart4-ctsn {
+ rockchip,pins =
+ /* uart4_ctsn */
+ <1 RK_PC7 10 &pcfg_pull_none>;
+ };
+
+ uart4_rtsn: uart4-rtsn {
+ rockchip,pins =
+ /* uart4_rtsn */
+ <1 RK_PC5 10 &pcfg_pull_none>;
+ };
+ };
+
+ uart5 {
+ uart5m0_xfer: uart5m0-xfer {
+ rockchip,pins =
+ /* uart5_rx_m0 */
+ <4 RK_PD4 10 &pcfg_pull_up>,
+ /* uart5_tx_m0 */
+ <4 RK_PD5 10 &pcfg_pull_up>;
+ };
+
+ uart5m0_ctsn: uart5m0-ctsn {
+ rockchip,pins =
+ /* uart5m0_ctsn */
+ <4 RK_PD2 10 &pcfg_pull_none>;
+ };
+
+ uart5m0_rtsn: uart5m0-rtsn {
+ rockchip,pins =
+ /* uart5m0_rtsn */
+ <4 RK_PD3 10 &pcfg_pull_none>;
+ };
+
+ uart5m1_xfer: uart5m1-xfer {
+ rockchip,pins =
+ /* uart5_rx_m1 */
+ <3 RK_PC5 10 &pcfg_pull_up>,
+ /* uart5_tx_m1 */
+ <3 RK_PC4 10 &pcfg_pull_up>;
+ };
+
+ uart5m1_ctsn: uart5m1-ctsn {
+ rockchip,pins =
+ /* uart5m1_ctsn */
+ <2 RK_PA2 10 &pcfg_pull_none>;
+ };
+
+ uart5m1_rtsn: uart5m1-rtsn {
+ rockchip,pins =
+ /* uart5m1_rtsn */
+ <2 RK_PA3 10 &pcfg_pull_none>;
+ };
+
+ uart5m2_xfer: uart5m2-xfer {
+ rockchip,pins =
+ /* uart5_rx_m2 */
+ <2 RK_PD4 10 &pcfg_pull_up>,
+ /* uart5_tx_m2 */
+ <2 RK_PD5 10 &pcfg_pull_up>;
+ };
+ };
+
+ uart6 {
+ uart6m1_xfer: uart6m1-xfer {
+ rockchip,pins =
+ /* uart6_rx_m1 */
+ <1 RK_PA0 10 &pcfg_pull_up>,
+ /* uart6_tx_m1 */
+ <1 RK_PA1 10 &pcfg_pull_up>;
+ };
+
+ uart6m1_ctsn: uart6m1-ctsn {
+ rockchip,pins =
+ /* uart6m1_ctsn */
+ <1 RK_PA3 10 &pcfg_pull_none>;
+ };
+
+ uart6m1_rtsn: uart6m1-rtsn {
+ rockchip,pins =
+ /* uart6m1_rtsn */
+ <1 RK_PA2 10 &pcfg_pull_none>;
+ };
+
+ uart6m2_xfer: uart6m2-xfer {
+ rockchip,pins =
+ /* uart6_rx_m2 */
+ <1 RK_PD1 10 &pcfg_pull_up>,
+ /* uart6_tx_m2 */
+ <1 RK_PD0 10 &pcfg_pull_up>;
+ };
+ };
+
+ uart7 {
+ uart7m1_xfer: uart7m1-xfer {
+ rockchip,pins =
+ /* uart7_rx_m1 */
+ <3 RK_PC1 10 &pcfg_pull_up>,
+ /* uart7_tx_m1 */
+ <3 RK_PC0 10 &pcfg_pull_up>;
+ };
+
+ uart7m1_ctsn: uart7m1-ctsn {
+ rockchip,pins =
+ /* uart7m1_ctsn */
+ <3 RK_PC3 10 &pcfg_pull_none>;
+ };
+
+ uart7m1_rtsn: uart7m1-rtsn {
+ rockchip,pins =
+ /* uart7m1_rtsn */
+ <3 RK_PC2 10 &pcfg_pull_none>;
+ };
+
+ uart7m2_xfer: uart7m2-xfer {
+ rockchip,pins =
+ /* uart7_rx_m2 */
+ <1 RK_PB4 10 &pcfg_pull_up>,
+ /* uart7_tx_m2 */
+ <1 RK_PB5 10 &pcfg_pull_up>;
+ };
+ };
+
+ uart8 {
+ uart8m0_xfer: uart8m0-xfer {
+ rockchip,pins =
+ /* uart8_rx_m0 */
+ <4 RK_PB1 10 &pcfg_pull_up>,
+ /* uart8_tx_m0 */
+ <4 RK_PB0 10 &pcfg_pull_up>;
+ };
+
+ uart8m0_ctsn: uart8m0-ctsn {
+ rockchip,pins =
+ /* uart8m0_ctsn */
+ <4 RK_PB3 10 &pcfg_pull_none>;
+ };
+
+ uart8m0_rtsn: uart8m0-rtsn {
+ rockchip,pins =
+ /* uart8m0_rtsn */
+ <4 RK_PB2 10 &pcfg_pull_none>;
+ };
+
+ uart8m1_xfer: uart8m1-xfer {
+ rockchip,pins =
+ /* uart8_rx_m1 */
+ <3 RK_PA3 10 &pcfg_pull_up>,
+ /* uart8_tx_m1 */
+ <3 RK_PA2 10 &pcfg_pull_up>;
+ };
+
+ uart8m1_ctsn: uart8m1-ctsn {
+ rockchip,pins =
+ /* uart8m1_ctsn */
+ <3 RK_PA5 10 &pcfg_pull_none>;
+ };
+
+ uart8m1_rtsn: uart8m1-rtsn {
+ rockchip,pins =
+ /* uart8m1_rtsn */
+ <3 RK_PA4 10 &pcfg_pull_none>;
+ };
+
+ uart8_xfer: uart8-xfer {
+ rockchip,pins =
+ /* uart8_rx_ */
+ <4 RK_PB1 10 &pcfg_pull_up>;
+ };
+ };
+
+ uart9 {
+ uart9m1_xfer: uart9m1-xfer {
+ rockchip,pins =
+ /* uart9_rx_m1 */
+ <4 RK_PB5 10 &pcfg_pull_up>,
+ /* uart9_tx_m1 */
+ <4 RK_PB4 10 &pcfg_pull_up>;
+ };
+
+ uart9m1_ctsn: uart9m1-ctsn {
+ rockchip,pins =
+ /* uart9m1_ctsn */
+ <4 RK_PA1 10 &pcfg_pull_none>;
+ };
+
+ uart9m1_rtsn: uart9m1-rtsn {
+ rockchip,pins =
+ /* uart9m1_rtsn */
+ <4 RK_PA0 10 &pcfg_pull_none>;
+ };
+
+ uart9m2_xfer: uart9m2-xfer {
+ rockchip,pins =
+ /* uart9_rx_m2 */
+ <3 RK_PD4 10 &pcfg_pull_up>,
+ /* uart9_tx_m2 */
+ <3 RK_PD5 10 &pcfg_pull_up>;
+ };
+
+ uart9m2_ctsn: uart9m2-ctsn {
+ rockchip,pins =
+ /* uart9m2_ctsn */
+ <3 RK_PD3 10 &pcfg_pull_none>;
+ };
+
+ uart9m2_rtsn: uart9m2-rtsn {
+ rockchip,pins =
+ /* uart9m2_rtsn */
+ <3 RK_PD2 10 &pcfg_pull_none>;
+ };
+ };
+
+ vop {
+ vop_pins: vop-pins {
+ rockchip,pins =
+ /* vop_post_empty */
+ <1 RK_PA2 1 &pcfg_pull_none>;
+ };
+ };
+};
+
+/*
+ * This part is edited handly.
+ */
+&pinctrl {
+ gpio-func {
+ tsadc_gpio_func: tsadc-gpio-func {
+ rockchip,pins =
+ <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
+ spi0-hs {
+ spi0m0_pins_hs: spi0m0-pins {
+ rockchip,pins =
+ /* spi0_clk_m0 */
+ <0 RK_PC6 8 &pcfg_pull_up_drv_level_1>,
+ /* spi0_miso_m0 */
+ <0 RK_PC7 8 &pcfg_pull_up_drv_level_1>,
+ /* spi0_mosi_m0 */
+ <0 RK_PC0 8 &pcfg_pull_up_drv_level_1>;
+ };
+
+ spi0m1_pins_hs: spi0m1-pins {
+ rockchip,pins =
+ /* spi0_clk_m1 */
+ <4 RK_PA2 8 &pcfg_pull_up_drv_level_1>,
+ /* spi0_miso_m1 */
+ <4 RK_PA0 8 &pcfg_pull_up_drv_level_1>,
+ /* spi0_mosi_m1 */
+ <4 RK_PA1 8 &pcfg_pull_up_drv_level_1>;
+ };
+
+ spi0m2_pins_hs: spi0m2-pins {
+ rockchip,pins =
+ /* spi0_clk_m2 */
+ <1 RK_PB3 8 &pcfg_pull_up_drv_level_1>,
+ /* spi0_miso_m2 */
+ <1 RK_PB1 8 &pcfg_pull_up_drv_level_1>,
+ /* spi0_mosi_m2 */
+ <1 RK_PB2 8 &pcfg_pull_up_drv_level_1>;
+ };
+
+ spi0m3_pins_hs: spi0m3-pins {
+ rockchip,pins =
+ /* spi0_clk_m3 */
+ <3 RK_PD3 8 &pcfg_pull_up_drv_level_1>,
+ /* spi0_miso_m3 */
+ <3 RK_PD1 8 &pcfg_pull_up_drv_level_1>,
+ /* spi0_mosi_m3 */
+ <3 RK_PD2 8 &pcfg_pull_up_drv_level_1>;
+ };
+ };
+
+ spi1-hs {
+ spi1m1_pins_hs: spi1m1-pins {
+ rockchip,pins =
+ /* spi1_clk_m1 */
+ <3 RK_PC1 8 &pcfg_pull_up_drv_level_1>,
+ /* spi1_miso_m1 */
+ <3 RK_PC0 8 &pcfg_pull_up_drv_level_1>,
+ /* spi1_mosi_m1 */
+ <3 RK_PB7 8 &pcfg_pull_up_drv_level_1>;
+ };
+
+ spi1m2_pins_hs: spi1m2-pins {
+ rockchip,pins =
+ /* spi1_clk_m2 */
+ <1 RK_PD2 8 &pcfg_pull_up_drv_level_1>,
+ /* spi1_miso_m2 */
+ <1 RK_PD0 8 &pcfg_pull_up_drv_level_1>,
+ /* spi1_mosi_m2 */
+ <1 RK_PD1 8 &pcfg_pull_up_drv_level_1>;
+ };
+ };
+
+ spi2-hs {
+ spi2m0_pins_hs: spi2m0-pins {
+ rockchip,pins =
+ /* spi2_clk_m0 */
+ <1 RK_PA6 8 &pcfg_pull_up_drv_level_1>,
+ /* spi2_miso_m0 */
+ <1 RK_PA4 8 &pcfg_pull_up_drv_level_1>,
+ /* spi2_mosi_m0 */
+ <1 RK_PA5 8 &pcfg_pull_up_drv_level_1>;
+ };
+
+ spi2m1_pins_hs: spi2m1-pins {
+ rockchip,pins =
+ /* spi2_clk_m1 */
+ <4 RK_PA6 8 &pcfg_pull_up_drv_level_1>,
+ /* spi2_miso_m1 */
+ <4 RK_PA4 8 &pcfg_pull_up_drv_level_1>,
+ /* spi2_mosi_m1 */
+ <4 RK_PA5 8 &pcfg_pull_up_drv_level_1>;
+ };
+
+ spi2m2_pins_hs: spi2m2-pins {
+ rockchip,pins =
+ /* spi2_clk_m2 */
+ <0 RK_PA5 1 &pcfg_pull_up_drv_level_1>,
+ /* spi2_miso_m2 */
+ <0 RK_PB3 1 &pcfg_pull_up_drv_level_1>,
+ /* spi2_mosi_m2 */
+ <0 RK_PA6 1 &pcfg_pull_up_drv_level_1>;
+ };
+ };
+
+ spi3-hs {
+ spi3m1_pins_hs: spi3m1-pins {
+ rockchip,pins =
+ /* spi3_clk_m1 */
+ <4 RK_PB7 8 &pcfg_pull_up_drv_level_1>,
+ /* spi3_miso_m1 */
+ <4 RK_PB5 8 &pcfg_pull_up_drv_level_1>,
+ /* spi3_mosi_m1 */
+ <4 RK_PB6 8 &pcfg_pull_up_drv_level_1>;
+ };
+
+ spi3m2_pins_hs: spi3m2-pins {
+ rockchip,pins =
+ /* spi3_clk_m2 */
+ <0 RK_PD3 8 &pcfg_pull_up_drv_level_1>,
+ /* spi3_miso_m2 */
+ <0 RK_PD0 8 &pcfg_pull_up_drv_level_1>,
+ /* spi3_mosi_m2 */
+ <0 RK_PD2 8 &pcfg_pull_up_drv_level_1>;
+ };
+
+ spi3m3_pins_hs: spi3m3-pins {
+ rockchip,pins =
+ /* spi3_clk_m3 */
+ <3 RK_PD0 8 &pcfg_pull_up_drv_level_1>,
+ /* spi3_miso_m3 */
+ <3 RK_PC6 8 &pcfg_pull_up_drv_level_1>,
+ /* spi3_mosi_m3 */
+ <3 RK_PC7 8 &pcfg_pull_up_drv_level_1>;
+ };
+ };
+
+ spi4-hs {
+ spi4m0_pins_hs: spi4m0-pins {
+ rockchip,pins =
+ /* spi4_clk_m0 */
+ <1 RK_PC2 8 &pcfg_pull_up_drv_level_1>,
+ /* spi4_miso_m0 */
+ <1 RK_PC0 8 &pcfg_pull_up_drv_level_1>,
+ /* spi4_mosi_m0 */
+ <1 RK_PC1 8 &pcfg_pull_up_drv_level_1>;
+ };
+
+ spi4m1_pins_hs: spi4m1-pins {
+ rockchip,pins =
+ /* spi4_clk_m1 */
+ <3 RK_PA2 8 &pcfg_pull_up_drv_level_1>,
+ /* spi4_miso_m1 */
+ <3 RK_PA0 8 &pcfg_pull_up_drv_level_1>,
+ /* spi4_mosi_m1 */
+ <3 RK_PA1 8 &pcfg_pull_up_drv_level_1>;
+ };
+
+ spi4m2_pins_hs: spi4m2-pins {
+ rockchip,pins =
+ /* spi4_clk_m2 */
+ <1 RK_PA2 8 &pcfg_pull_up_drv_level_1>,
+ /* spi4_miso_m2 */
+ <1 RK_PA0 8 &pcfg_pull_up_drv_level_1>,
+ /* spi4_mosi_m2 */
+ <1 RK_PA1 8 &pcfg_pull_up_drv_level_1>;
+ };
+ };
+};
diff --git a/arch/arm/dts/rk3588s.dtsi b/arch/arm/dts/rk3588s.dtsi
new file mode 100644
index 0000000000..0bef66b201
--- /dev/null
+++ b/arch/arm/dts/rk3588s.dtsi
@@ -0,0 +1,2370 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
+ */
+
+#include <dt-bindings/clock/rk3588-cru.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/phy/phy.h>
+#include <dt-bindings/power/rk3588-power.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+ compatible = "rockchip,rk3588";
+
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ ethernet1 = &gmac1;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ i2c2 = &i2c2;
+ i2c3 = &i2c3;
+ i2c4 = &i2c4;
+ i2c5 = &i2c5;
+ i2c6 = &i2c6;
+ i2c7 = &i2c7;
+ i2c8 = &i2c8;
+ serial0 = &uart0;
+ serial1 = &uart1;
+ serial2 = &uart2;
+ serial3 = &uart3;
+ serial4 = &uart4;
+ serial5 = &uart5;
+ serial6 = &uart6;
+ serial7 = &uart7;
+ serial8 = &uart8;
+ serial9 = &uart9;
+ spi0 = &spi0;
+ spi1 = &spi1;
+ spi2 = &spi2;
+ spi3 = &spi3;
+ spi4 = &spi4;
+ spi5 = &sfc;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu-map {
+ cluster0 {
+ core0 {
+ cpu = <&cpu_l0>;
+ };
+ core1 {
+ cpu = <&cpu_l1>;
+ };
+ core2 {
+ cpu = <&cpu_l2>;
+ };
+ core3 {
+ cpu = <&cpu_l3>;
+ };
+ };
+ cluster1 {
+ core0 {
+ cpu = <&cpu_b0>;
+ };
+ core1 {
+ cpu = <&cpu_b1>;
+ };
+ };
+ cluster2 {
+ core0 {
+ cpu = <&cpu_b2>;
+ };
+ core1 {
+ cpu = <&cpu_b3>;
+ };
+ };
+ };
+
+ cpu_l0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x0>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <530>;
+ };
+
+ cpu_l1: cpu@100 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x100>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <530>;
+ };
+
+ cpu_l2: cpu@200 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x200>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <530>;
+ };
+
+ cpu_l3: cpu@300 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x300>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <530>;
+ };
+
+ cpu_b0: cpu@400 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a76";
+ reg = <0x400>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
+ };
+
+ cpu_b1: cpu@500 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a76";
+ reg = <0x500>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
+ };
+
+ cpu_b2: cpu@600 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a76";
+ reg = <0x600>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
+ };
+
+ cpu_b3: cpu@700 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a76";
+ reg = <0x700>;
+ enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
+ };
+ };
+
+ arm_pmu: arm-pmu {
+ compatible = "arm,armv8-pmuv3";
+ interrupts = <GIC_PPI 8 IRQ_TYPE_LEVEL_LOW>;
+ interrupt-affinity = <&cpu_l0>, <&cpu_l1>, <&cpu_l2>, <&cpu_l3>,
+ <&cpu_b0>, <&cpu_b1>, <&cpu_b2>, <&cpu_b3>;
+ };
+
+ firmware: firmware {
+ optee: optee {
+ compatible = "linaro,optee-tz";
+ method = "smc";
+ };
+
+ scmi: scmi {
+ compatible = "arm,scmi-smc";
+ shmem = <&scmi_shmem>;
+ arm,smc-id = <0x82000010>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ scmi_clk: protocol@14 {
+ reg = <0x14>;
+ #clock-cells = <1>;
+
+ assigned-clocks = <&scmi_clk SCMI_SPLL>;
+ assigned-clock-rates = <700000000>;
+ };
+
+ scmi_reset: protocol@16 {
+ reg = <0x16>;
+ #reset-cells = <1>;
+ };
+ };
+
+ sdei: sdei {
+ compatible = "arm,sdei-1.0";
+ method = "smc";
+ };
+ };
+
+ psci: psci {
+ compatible = "arm,psci-1.0";
+ method = "smc";
+ };
+
+ spll: spll {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <702000000>;
+ clock-output-names = "spll";
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
+ <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
+ <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
+ <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+ };
+
+ xin32k: xin32k {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <32768>;
+ clock-output-names = "xin32k";
+ };
+
+ xin24m: xin24m {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <24000000>;
+ clock-output-names = "xin24m";
+ };
+
+ sram: sram@10f000 {
+ compatible = "mmio-sram";
+ reg = <0x0 0x0010f000 0x0 0x100>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x0 0x0010f000 0x100>;
+
+ scmi_shmem: scmi_shmem@0 {
+ compatible = "arm,scmi-shmem";
+ reg = <0x0 0x100>;
+ };
+ };
+
+ usbdrd3_0: usbdrd3_0 {
+ compatible = "rockchip,rk3588-dwc3", "rockchip,rk3399-dwc3";
+ clocks = <&cru REF_CLK_USB3OTG0>, <&cru SUSPEND_CLK_USB3OTG0>,
+ <&cru ACLK_USB3OTG0>;
+ clock-names = "ref", "suspend", "bus";
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+ status = "disabled";
+
+ usbdrd_dwc3_0: usb@fc000000 {
+ compatible = "snps,dwc3";
+ reg = <0x0 0xfc000000 0x0 0x400000>;
+ interrupts = <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&power RK3588_PD_USB>;
+ resets = <&cru SRST_A_USB3OTG0>;
+ reset-names = "usb3-otg";
+ dr_mode = "otg";
+ phy_type = "utmi_wide";
+ snps,dis_enblslpm_quirk;
+ snps,dis-u1-entry-quirk;
+ snps,dis-u2-entry-quirk;
+ snps,dis-u2-freeclk-exists-quirk;
+ snps,dis-del-phy-power-chg-quirk;
+ snps,dis-tx-ipgap-linecheck-quirk;
+ status = "disabled";
+ };
+ };
+
+ usb_host0_ehci: usb@fc800000 {
+ compatible = "generic-ehci";
+ reg = <0x0 0xfc800000 0x0 0x40000>;
+ interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST_ARB0>;
+ clock-names = "usbhost", "arbiter";
+ power-domains = <&power RK3588_PD_USB>;
+ status = "disabled";
+ };
+
+ usb_host0_ohci: usb@fc840000 {
+ compatible = "generic-ohci";
+ reg = <0x0 0xfc840000 0x0 0x40000>;
+ interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST_ARB0>;
+ clock-names = "usbhost", "arbiter";
+ power-domains = <&power RK3588_PD_USB>;
+ status = "disabled";
+ };
+
+ usb_host1_ehci: usb@fc880000 {
+ compatible = "generic-ehci";
+ reg = <0x0 0xfc880000 0x0 0x40000>;
+ interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru HCLK_HOST1>, <&cru HCLK_HOST_ARB1>;
+ clock-names = "usbhost", "arbiter";
+ power-domains = <&power RK3588_PD_USB>;
+ status = "disabled";
+ };
+
+ usb_host1_ohci: usb@fc8c0000 {
+ compatible = "generic-ohci";
+ reg = <0x0 0xfc8c0000 0x0 0x40000>;
+ interrupts = <GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru HCLK_HOST1>, <&cru HCLK_HOST_ARB1>;
+ clock-names = "usbhost", "arbiter";
+ power-domains = <&power RK3588_PD_USB>;
+ status = "disabled";
+ };
+
+ mmu600_pcie: iommu@fc900000 {
+ compatible = "arm,smmu-v3";
+ reg = <0x0 0xfc900000 0x0 0x200000>;
+ interrupts = <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
+ #iommu-cells = <1>;
+ status = "disabled";
+ };
+
+ mmu600_php: iommu@fcb00000 {
+ compatible = "arm,smmu-v3";
+ reg = <0x0 0xfcb00000 0x0 0x200000>;
+ interrupts = <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 386 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
+ #iommu-cells = <1>;
+ status = "disabled";
+ };
+
+ usbhost3_0: usbhost3_0 {
+ compatible = "rockchip,rk3588-dwc3", "rockchip,rk3399-dwc3";
+ clocks = <&cru REF_CLK_USB3OTG2>, <&cru SUSPEND_CLK_USB3OTG2>,
+ <&cru ACLK_USB3OTG2>, <&cru CLK_UTMI_OTG2>;
+ clock-names = "ref", "suspend", "bus", "utmi";
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+ status = "disabled";
+
+ usbhost_dwc3_0: usb@fcd00000 {
+ compatible = "snps,dwc3";
+ reg = <0x0 0xfcd00000 0x0 0x400000>;
+ interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&power RK3588_PD_PHP>;
+ resets = <&cru SRST_A_USB3OTG2>;
+ reset-names = "usb3-host";
+ dr_mode = "host";
+ phy_type = "utmi_wide";
+ snps,dis_enblslpm_quirk;
+ snps,dis-u2-freeclk-exists-quirk;
+ snps,dis-del-phy-power-chg-quirk;
+ snps,dis-tx-ipgap-linecheck-quirk;
+ status = "disabled";
+ };
+ };
+
+ sys_grf: syscon@fd58c000 {
+ compatible = "rockchip,rk3588-sys-grf", "syscon";
+ reg = <0x0 0xfd58c000 0x0 0x1000>;
+ };
+
+ vo0_grf: syscon@fd5a6000 {
+ compatible = "rockchip,rk3588-vo-grf", "syscon";
+ reg = <0x0 0xfd5a6000 0x0 0x2000>;
+ };
+
+ vo1_grf: syscon@fd5a8000 {
+ compatible = "rockchip,rk3588-vo-grf", "syscon";
+ reg = <0x0 0xfd5a8000 0x0 0x100>;
+ };
+
+ usb_grf: syscon@fd5ac000 {
+ compatible = "rockchip,rk3588-usb-grf", "syscon";
+ reg = <0x0 0xfd5ac000 0x0 0x4000>;
+ };
+
+ php_grf: syscon@fd5b0000 {
+ compatible = "rockchip,rk3588-php-grf", "syscon";
+ reg = <0x0 0xfd5b0000 0x0 0x1000>;
+ };
+
+ pipe_phy0_grf: syscon@fd5bc000 {
+ compatible = "rockchip,pipe-phy-grf", "syscon";
+ reg = <0x0 0xfd5bc000 0x0 0x100>;
+ };
+
+ pipe_phy2_grf: syscon@fd5c4000 {
+ compatible = "rockchip,pipe-phy-grf", "syscon";
+ reg = <0x0 0xfd5c4000 0x0 0x100>;
+ };
+
+ usbdpphy0_grf: syscon@fd5c8000 {
+ compatible = "rockchip,rk3588-usbdpphy-grf", "syscon";
+ reg = <0x0 0xfd5c8000 0x0 0x4000>;
+ };
+
+ usb2phy0_grf: syscon@fd5d0000 {
+ compatible = "rockchip,rk3588-usb2phy-grf", "syscon",
+ "simple-mfd";
+ reg = <0x0 0xfd5d0000 0x0 0x4000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ u2phy0: usb2-phy@0 {
+ compatible = "rockchip,rk3588-usb2phy";
+ reg = <0x0 0x10>;
+ interrupts = <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>;
+ clock-names = "phyclk";
+ #clock-cells = <0>;
+ status = "disabled";
+
+ u2phy0_otg: otg-port {
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+ };
+ };
+
+ usb2phy2_grf: syscon@fd5d8000 {
+ compatible = "rockchip,rk3588-usb2phy-grf", "syscon",
+ "simple-mfd";
+ reg = <0x0 0xfd5d8000 0x0 0x4000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ u2phy2: usb2-phy@8000 {
+ compatible = "rockchip,rk3588-usb2phy";
+ reg = <0x8000 0x10>;
+ interrupts = <GIC_SPI 391 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>;
+ clock-names = "phyclk";
+ #clock-cells = <0>;
+ status = "disabled";
+
+ u2phy2_host: host-port {
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+ };
+ };
+
+ usb2phy3_grf: syscon@fd5dc000 {
+ compatible = "rockchip,rk3588-usb2phy-grf", "syscon",
+ "simple-mfd";
+ reg = <0x0 0xfd5dc000 0x0 0x4000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ u2phy3: usb2-phy@c000 {
+ compatible = "rockchip,rk3588-usb2phy";
+ reg = <0xc000 0x10>;
+ interrupts = <GIC_SPI 392 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>;
+ clock-names = "phyclk";
+ #clock-cells = <0>;
+ status = "disabled";
+
+ u2phy3_host: host-port {
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+ };
+ };
+
+ hdptxphy0_grf: syscon@fd5e0000 {
+ compatible = "rockchip,rk3588-hdptxphy-grf", "syscon";
+ reg = <0x0 0xfd5e0000 0x0 0x100>;
+ };
+
+ ioc: syscon@fd5f0000 {
+ compatible = "rockchip,rk3588-ioc", "syscon";
+ reg = <0x0 0xfd5f0000 0x0 0x10000>;
+ };
+
+ syssram: sram@fd600000 {
+ compatible = "mmio-sram";
+ reg = <0x0 0xfd600000 0x0 0x100000>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0x0 0xfd600000 0x100000>;
+ };
+
+ cru: clock-controller@fd7c0000 {
+ compatible = "rockchip,rk3588-cru";
+ rockchip,grf = <&php_grf>;
+ reg = <0x0 0xfd7c0000 0x0 0x5c000>;
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+
+ assigned-clocks =
+ <&cru PLL_PPLL>, <&cru PLL_CPLL>,
+ <&cru PLL_NPLL>, <&cru PLL_GPLL>,
+ <&cru ARMCLK_L>, <&cru ARMCLK_B01>,
+ <&cru ACLK_CENTER_ROOT>, <&cru PCLK_CENTER_ROOT>,
+ <&cru HCLK_CENTER_ROOT>, <&cru ACLK_CENTER_LOW_ROOT>,
+ <&cru ACLK_TOP_ROOT>, <&cru PCLK_TOP_ROOT>,
+ <&cru ACLK_LOW_TOP_ROOT>, <&cru PCLK_PMU0_ROOT>,
+ <&cru HCLK_PMU_CM0_ROOT>;
+ assigned-clock-rates =
+ <100000000>, <1500000000>,
+ <850000000>, <1188000000>,
+ <816000000>, <1008000000>,
+ <600000000>, <200000000>,
+ <400000000>, <500000000>,
+ <800000000>, <100000000>,
+ <400000000>, <100000000>,
+ <200000000>;
+ };
+
+ i2c0: i2c@fd880000 {
+ compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0xfd880000 0x0 0x1000>;
+ clocks = <&cru CLK_I2C0>, <&cru PCLK_I2C0>;
+ clock-names = "i2c", "pclk";
+ interrupts = <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c0m0_xfer>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ uart0: serial@fd890000 {
+ compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
+ reg = <0x0 0xfd890000 0x0 0x100>;
+ interrupts = <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
+ clock-names = "baudclk", "apb_pclk";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ dmas = <&dmac0 6>, <&dmac0 7>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart0m0_xfer>;
+ status = "disabled";
+ };
+
+ pwm0: pwm@fd8b0000 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfd8b0000 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm0m0_pins>;
+ clocks = <&cru CLK_PMU1PWM>, <&cru PCLK_PMU1PWM>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm1: pwm@fd8b0010 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfd8b0010 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm1m0_pins>;
+ clocks = <&cru CLK_PMU1PWM>, <&cru PCLK_PMU1PWM>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm2: pwm@fd8b0020 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfd8b0020 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm2m0_pins>;
+ clocks = <&cru CLK_PMU1PWM>, <&cru PCLK_PMU1PWM>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm3: pwm@fd8b0030 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfd8b0030 0x0 0x10>;
+ interrupts = <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm3m0_pins>;
+ clocks = <&cru CLK_PMU1PWM>, <&cru PCLK_PMU1PWM>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pmu: power-management@fd8d8000 {
+ compatible = "rockchip,rk3588-pmu", "syscon", "simple-mfd";
+ reg = <0x0 0xfd8d8000 0x0 0x400>;
+
+ power: power-controller {
+ compatible = "rockchip,rk3588-power-controller";
+ #power-domain-cells = <1>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ /* These power domains are grouped by VD_NPU */
+ power-domain@RK3588_PD_NPU {
+ reg = <RK3588_PD_NPU>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ power-domain@RK3588_PD_NPUTOP {
+ reg = <RK3588_PD_NPUTOP>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ power-domain@RK3588_PD_NPU1 {
+ reg = <RK3588_PD_NPU1>;
+ };
+ power-domain@RK3588_PD_NPU2 {
+ reg = <RK3588_PD_NPU2>;
+ };
+ };
+ };
+ /* These power domains are grouped by VD_GPU */
+ power-domain@RK3588_PD_GPU {
+ reg = <RK3588_PD_GPU>;
+ };
+ /* These power domains are grouped by VD_VCODEC */
+ power-domain@RK3588_PD_VCODEC {
+ reg = <RK3588_PD_VCODEC>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ power-domain@RK3588_PD_RKVDEC0 {
+ reg = <RK3588_PD_RKVDEC0>;
+ };
+ power-domain@RK3588_PD_RKVDEC1 {
+ reg = <RK3588_PD_RKVDEC1>;
+ };
+ power-domain@RK3588_PD_VENC0 {
+ reg = <RK3588_PD_VENC0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ power-domain@RK3588_PD_VENC1 {
+ reg = <RK3588_PD_VENC1>;
+ };
+ };
+ };
+ /* These power domains are grouped by VD_LOGIC */
+ power-domain@RK3588_PD_VDPU {
+ reg = <RK3588_PD_VDPU>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ power-domain@RK3588_PD_RGA30 {
+ reg = <RK3588_PD_RGA30>;
+ };
+ power-domain@RK3588_PD_av1 {
+ reg = <RK3588_PD_AV1>;
+ };
+ };
+ power-domain@RK3588_PD_VOP {
+ reg = <RK3588_PD_VOP>;
+ };
+ power-domain@RK3588_PD_VO0 {
+ reg = <RK3588_PD_VO0>;
+ };
+ power-domain@RK3588_PD_VO1 {
+ reg = <RK3588_PD_VO1>;
+ };
+ power-domain@RK3588_PD_VI {
+ reg = <RK3588_PD_VI>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ power-domain@RK3588_PD_ISP1 {
+ reg = <RK3588_PD_ISP1>;
+ };
+ power-domain@RK3588_PD_FEC {
+ reg = <RK3588_PD_FEC>;
+ };
+ };
+ power-domain@RK3588_PD_RGA31 {
+ reg = <RK3588_PD_RGA31>;
+ };
+ power-domain@RK3588_PD_USB {
+ reg = <RK3588_PD_USB>;
+ };
+ power-domain@RK3588_PD_PHP {
+ reg = <RK3588_PD_PHP>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ power-domain@RK3588_PD_GMAC {
+ reg = <RK3588_PD_GMAC>;
+ };
+ power-domain@RK3588_PD_PCIE {
+ reg = <RK3588_PD_PCIE>;
+ };
+ };
+ power-domain@RK3588_PD_NVM {
+ reg = <RK3588_PD_NVM>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ power-domain@RK3588_PD_NVM0 {
+ reg = <RK3588_PD_NVM0>;
+ };
+ };
+ power-domain@RK3588_PD_SDIO {
+ reg = <RK3588_PD_SDIO>;
+ };
+ power-domain@RK3588_PD_AUDIO {
+ reg = <RK3588_PD_AUDIO>;
+ };
+ power-domain@RK3588_PD_SDMMC {
+ reg = <RK3588_PD_SDMMC>;
+ };
+ };
+ };
+
+ pvtm@fda40000 {
+ compatible = "rockchip,rk3588-bigcore0-pvtm";
+ reg = <0x0 0xfda40000 0x0 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pvtm@0 {
+ reg = <0>;
+ clocks = <&cru CLK_BIGCORE0_PVTM>, <&cru PCLK_BIGCORE0_PVTM>;
+ clock-names = "clk", "pclk";
+ };
+ };
+
+ pvtm@fda50000 {
+ compatible = "rockchip,rk3588-bigcore1-pvtm";
+ reg = <0x0 0xfda50000 0x0 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pvtm@1 {
+ reg = <1>;
+ clocks = <&cru CLK_BIGCORE1_PVTM>, <&cru PCLK_BIGCORE1_PVTM>;
+ clock-names = "clk", "pclk";
+ };
+ };
+
+ pvtm@fda60000 {
+ compatible = "rockchip,rk3588-litcore-pvtm";
+ reg = <0x0 0xfda60000 0x0 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pvtm@2 {
+ reg = <2>;
+ clocks = <&cru CLK_LITCORE_PVTM>, <&cru PCLK_LITCORE_PVTM>;
+ clock-names = "clk", "pclk";
+ };
+ };
+
+ pvtm@fdaf0000 {
+ compatible = "rockchip,rk3588-npu-pvtm";
+ reg = <0x0 0xfdaf0000 0x0 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pvtm@3 {
+ reg = <3>;
+ clocks = <&cru CLK_NPU_PVTM>, <&cru PCLK_NPU_PVTM>;
+ clock-names = "clk", "pclk";
+ resets = <&cru SRST_NPU_PVTM>, <&cru SRST_P_NPU_PVTM>;
+ reset-names = "rts", "rst-p";
+ };
+ };
+
+ pvtm@fdb30000 {
+ compatible = "rockchip,rk3588-gpu-pvtm";
+ reg = <0x0 0xfdb30000 0x0 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pvtm@4 {
+ reg = <4>;
+ clocks = <&cru CLK_GPU_PVTM>, <&cru PCLK_GPU_PVTM>;
+ clock-names = "clk", "pclk";
+ resets = <&cru SRST_GPU_PVTM>, <&cru SRST_P_GPU_PVTM>;
+ reset-names = "rts", "rst-p";
+ };
+ };
+
+ npu0_mmu: iommu@fdab9000 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdab9000 0x0 0x100>, <0x0 0xfdaba000 0x0 0x100>;
+ interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "npu0_mmu";
+ clocks = <&cru ACLK_NPU0>, <&cru HCLK_NPU0>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_NPUTOP>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ npu1_mmu: iommu@fdaca000 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdaca000 0x0 0x100>;
+ interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "npu1_mmu";
+ clocks = <&cru ACLK_NPU1>, <&cru HCLK_NPU1>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_NPU1>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ npu2_mmu: iommu@fdada000 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdada000 0x0 0x100>;
+ interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "npu2_mmu";
+ clocks = <&cru ACLK_NPU2>, <&cru HCLK_NPU2>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_NPU2>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ vdpu_mmu: iommu@fdb50800 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdb50800 0x0 0x40>;
+ interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_vdpu_mmu";
+ clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_VDPU>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ rga3_0_mmu: iommu@fdb60f00 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdb60f00 0x0 0x100>;
+ interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "rga3_0_mmu";
+ clocks = <&cru ACLK_RGA3_0>, <&cru HCLK_RGA3_0>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_RGA30>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ rga3_1_mmu: iommu@fdb70f00 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdb70f00 0x0 0x100>;
+ interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "rga3_1_mmu";
+ clocks = <&cru ACLK_RGA3_1>, <&cru HCLK_RGA3_1>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_RGA31>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ jpegd_mmu: iommu@fdb90480 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdb90480 0x0 0x40>;
+ interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_jpegd_mmu";
+ clocks = <&cru ACLK_JPEG_DECODER>, <&cru HCLK_JPEG_DECODER>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_VDPU>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ jpege0_mmu: iommu@fdba0800 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdba0800 0x0 0x40>;
+ interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_jpege0_mmu";
+ clocks = <&cru ACLK_JPEG_ENCODER0>, <&cru HCLK_JPEG_ENCODER0>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_VDPU>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ jpege1_mmu: iommu@fdba4800 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdba4800 0x0 0x40>;
+ interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_jpege1_mmu";
+ clocks = <&cru ACLK_JPEG_ENCODER1>, <&cru HCLK_JPEG_ENCODER1>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_VDPU>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ jpege2_mmu: iommu@fdba8800 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdba8800 0x0 0x40>;
+ interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_jpege2_mmu";
+ clocks = <&cru ACLK_JPEG_ENCODER2>, <&cru HCLK_JPEG_ENCODER2>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_VDPU>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ jpege3_mmu: iommu@fdbac800 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdbac800 0x0 0x40>;
+ interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_jpege3_mmu";
+ clocks = <&cru ACLK_JPEG_ENCODER3>, <&cru HCLK_JPEG_ENCODER3>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_VDPU>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ iep_mmu: iommu@fdbb0800 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdbb0800 0x0 0x100>;
+ interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_iep_mmu";
+ clocks = <&cru ACLK_IEP2P0>, <&cru HCLK_IEP2P0>;
+ clock-names = "aclk", "iface";
+ #iommu-cells = <0>;
+ power-domains = <&power RK3588_PD_VDPU>;
+ status = "disabled";
+ };
+
+ rkvenc0_mmu: iommu@fdbdf000 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdbdf000 0x0 0x40>, <0x0 0xfdbdf040 0x0 0x40>;
+ interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_rkvenc0_mmu0", "irq_rkvenc0_mmu1";
+ clocks = <&cru ACLK_RKVENC0>, <&cru HCLK_RKVENC0>;
+ clock-names = "aclk", "iface";
+ rockchip,disable-mmu-reset;
+ rockchip,enable-cmd-retry;
+ #iommu-cells = <0>;
+ power-domains = <&power RK3588_PD_VENC0>;
+ status = "disabled";
+ };
+
+ rkvenc1_mmu: iommu@fdbef000 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdbef000 0x0 0x40>, <0x0 0xfdbef040 0x0 0x40>;
+ interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_rkvenc1_mmu0", "irq_rkvenc1_mmu1";
+ clocks = <&cru ACLK_RKVENC1>, <&cru HCLK_RKVENC1>;
+ lock-names = "aclk", "iface";
+ rockchip,disable-mmu-reset;
+ rockchip,enable-cmd-retry;
+ #iommu-cells = <0>;
+ power-domains = <&power RK3588_PD_VENC1>;
+ status = "disabled";
+ };
+
+ rkvdec0_mmu: iommu@fdc38700 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdc38700 0x0 0x40>, <0x0 0xfdc38740 0x0 0x40>;
+ interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_rkvdec0_mmu";
+ locks = <&cru ACLK_RKVDEC0>, <&cru HCLK_RKVDEC0>;
+ clock-names = "aclk", "iface";
+ rockchip,disable-mmu-reset;
+ rockchip,enable-cmd-retry;
+ #iommu-cells = <0>;
+ power-domains = <&power RK3588_PD_RKVDEC0>;
+ status = "disabled";
+ };
+
+ rkvdec1_mmu: iommu@fdc48700 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdc48700 0x0 0x40>, <0x0 0xfdc48740 0x0 0x40>;
+ interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "irq_rkvdec1_mmu";
+ clocks = <&cru ACLK_RKVDEC1>, <&cru HCLK_RKVDEC1>;
+ clock-names = "aclk", "iface";
+ rockchip,disable-mmu-reset;
+ rockchip,enable-cmd-retry;
+ #iommu-cells = <0>;
+ power-domains = <&power RK3588_PD_RKVDEC1>;
+ status = "disabled";
+ };
+
+ isp0_mmu: iommu@fdcb7f00 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdcb7f00 0x0 0x100>;
+ interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "isp0_mmu";
+ clocks = <&cru ACLK_ISP0>, <&cru HCLK_ISP0>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_VI>;
+ #iommu-cells = <0>;
+ rockchip,disable-mmu-reset;
+ status = "disabled";
+ };
+
+ isp1_mmu: iommu@fdcc7f00 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdcc7f00 0x0 0x100>;
+ interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "isp1_mmu";
+ clocks = <&cru ACLK_ISP1>, <&cru HCLK_ISP1>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_ISP1>;
+ #iommu-cells = <0>;
+ rockchip,disable-mmu-reset;
+ status = "disabled";
+ };
+
+ fec0_mmu: iommu@fdcd0f00 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdcd0f00 0x0 0x100>;
+ interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "fec0_mmu";
+ clocks = <&cru ACLK_FISHEYE0>, <&cru HCLK_FISHEYE0>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_FEC>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ fec1_mmu: iommu@fdcd8f00 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdcd8f00 0x0 0x100>;
+ interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "fec1_mmu";
+ clocks = <&cru ACLK_FISHEYE1>, <&cru HCLK_FISHEYE1>;
+ clock-names = "aclk", "iface";
+ power-domains = <&power RK3588_PD_FEC>;
+ #iommu-cells = <0>;
+ status = "disabled";
+ };
+
+ vop_mmu: iommu@fdd97e00 {
+ compatible = "rockchip,iommu-v2";
+ reg = <0x0 0xfdd97e00 0x0 0x100>, <0x0 0xfdd97f00 0x0 0x100>;
+ interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "vop_mmu";
+ clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
+ clock-names = "aclk", "iface";
+ #iommu-cells = <0>;
+ rockchip,disable-device-link-resume;
+ status = "disabled";
+ };
+
+ spdif_tx2: spdif-tx@fddb0000 {
+ compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0xfddb0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
+ dmas = <&dmac1 6>;
+ dma-names = "tx";
+ clock-names = "mclk", "hclk";
+ clocks = <&cru MCLK_SPDIF2_DP0>, <&cru HCLK_SPDIF2_DP0>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ i2s4_8ch: i2s@fddc0000 {
+ compatible = "rockchip,rk3588-i2s-tdm";
+ reg = <0x0 0xfddc0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S4_8CH_TX>, <&cru HCLK_I2S4_8CH>;
+ clock-names = "mclk_tx", "hclk";
+ dmas = <&dmac2 0>;
+ dma-names = "tx";
+ resets = <&cru SRST_M_I2S4_8CH_TX>;
+ reset-names = "tx-m";
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ spdif_tx3: spdif-tx@fdde0000 {
+ compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0xfdde0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>;
+ dmas = <&dmac1 7>;
+ dma-names = "tx";
+ clock-names = "mclk", "hclk";
+ clocks = <&cru MCLK_SPDIF3>, <&cru HCLK_SPDIF3>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ i2s5_8ch: i2s@fddf0000 {
+ compatible = "rockchip,rk3588-i2s-tdm";
+ reg = <0x0 0xfddf0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S5_8CH_TX>, <&cru HCLK_I2S5_8CH>;
+ clock-names = "mclk_tx", "hclk";
+ dmas = <&dmac2 2>;
+ dma-names = "tx";
+ resets = <&cru SRST_M_I2S5_8CH_TX>;
+ reset-names = "tx-m";
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ i2s9_8ch: i2s@fddfc000 {
+ compatible = "rockchip,rk3588-i2s-tdm";
+ reg = <0x0 0xfddfc000 0x0 0x1000>;
+ interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S9_8CH_RX>, <&cru HCLK_I2S9_8CH>;
+ clock-names = "mclk_rx", "hclk";
+ dmas = <&dmac2 23>;
+ dma-names = "rx";
+ resets = <&cru SRST_M_I2S9_8CH_RX>;
+ reset-names = "rx-m";
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ spdif_rx0: spdif-rx@fde08000 {
+ compatible = "rockchip,rk3588-spdifrx", "rockchip,rk3308-spdifrx";
+ reg = <0x0 0xfde08000 0x0 0x1000>;
+ interrupts = <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_SPDIFRX0>, <&cru HCLK_SPDIFRX0>;
+ clock-names = "mclk", "hclk";
+ dmas = <&dmac0 21>;
+ dma-names = "rx";
+ resets = <&cru SRST_M_SPDIFRX0>;
+ reset-names = "spdifrx-m";
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ edp0: edp@fdec0000 {
+ compatible = "rockchip,rk3588-edp";
+ reg = <0x0 0xfdec0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru CLK_EDP0_24M>, <&cru PCLK_EDP0>,
+ <&cru CLK_EDP0_200M>;
+ clock-names = "dp", "pclk", "spdif";
+ resets = <&cru SRST_EDP0_24M>, <&cru SRST_P_EDP0>;
+ reset-names = "dp", "apb";
+ phys = <&hdptxphy0>;
+ phy-names = "dp";
+ power-domains = <&power RK3588_PD_VO1>;
+ rockchip,grf = <&vo1_grf>;
+ status = "disabled";
+ };
+
+ pcie2x1l1: pcie@fe180000 {
+ compatible = "rockchip,rk3588-pcie", "snps,dw-pcie";
+ #address-cells = <3>;
+ #size-cells = <2>;
+ bus-range = <0x30 0x3f>;
+ clocks = <&cru ACLK_PCIE_1L1_MSTR>, <&cru ACLK_PCIE_1L1_SLV>,
+ <&cru ACLK_PCIE_1L1_DBI>, <&cru PCLK_PCIE_1L1>,
+ <&cru CLK_PCIE_AUX3>;
+ clock-names = "aclk_mst", "aclk_slv",
+ "aclk_dbi", "pclk", "aux";
+ device_type = "pci";
+ interrupts = <GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "sys", "pmc", "msg", "legacy", "err";
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 7>;
+ interrupt-map = <0 0 0 1 &pcie2x1l1_intc 0>,
+ <0 0 0 2 &pcie2x1l1_intc 1>,
+ <0 0 0 3 &pcie2x1l1_intc 2>,
+ <0 0 0 4 &pcie2x1l1_intc 3>;
+ linux,pci-domain = <3>;
+ num-ib-windows = <8>;
+ num-ob-windows = <8>;
+ max-link-speed = <2>;
+ msi-map = <0x3000 &its 0x3000 0x1000>;
+ num-lanes = <1>;
+ phys = <&combphy2_psu PHY_TYPE_PCIE>;
+ phy-names = "pcie-phy";
+ power-domains = <&power RK3588_PD_PHP>;
+ ranges = <0x00000800 0x0 0xc0000000 0x9 0xc0000000 0x0 0x100000
+ 0x81000000 0x0 0xc0100000 0x9 0xc0100000 0x0 0x100000
+ 0x83000000 0x0 0xc0200000 0x9 0xc0200000 0x0 0x3fe00000>;
+ reg = <0xa 0x40c00000 0x0 0x400000>,
+ <0x0 0xfe180000 0x0 0x10000>;
+ reg-names = "pcie-dbi", "pcie-apb";
+ resets = <&cru SRST_PCIE3_POWER_UP>;
+ reset-names = "pipe";
+ status = "disabled";
+
+ pcie2x1l1_intc: legacy-interrupt-controller {
+ interrupt-controller;
+ #address-cells = <0>;
+ #interrupt-cells = <1>;
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 245 IRQ_TYPE_EDGE_RISING>;
+ };
+ };
+
+ pcie2x1l2: pcie@fe190000 {
+ compatible = "rockchip,rk3588-pcie", "snps,dw-pcie";
+ #address-cells = <3>;
+ #size-cells = <2>;
+ bus-range = <0x40 0x4f>;
+ clocks = <&cru ACLK_PCIE_1L2_MSTR>, <&cru ACLK_PCIE_1L2_SLV>,
+ <&cru ACLK_PCIE_1L2_DBI>, <&cru PCLK_PCIE_1L2>,
+ <&cru CLK_PCIE_AUX4>;
+ clock-names = "aclk_mst", "aclk_slv",
+ "aclk_dbi", "pclk", "aux";
+ device_type = "pci";
+ interrupts = <GIC_SPI 253 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 251 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "sys", "pmc", "msg", "legacy", "err";
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 7>;
+ interrupt-map = <0 0 0 1 &pcie2x1l2_intc 0>,
+ <0 0 0 2 &pcie2x1l2_intc 1>,
+ <0 0 0 3 &pcie2x1l2_intc 2>,
+ <0 0 0 4 &pcie2x1l2_intc 3>;
+ linux,pci-domain = <4>;
+ num-ib-windows = <8>;
+ num-ob-windows = <8>;
+ max-link-speed = <2>;
+ msi-map = <0x4000 &its 0x4000 0x1000>;
+ num-lanes = <1>;
+ phys = <&combphy0_ps PHY_TYPE_PCIE>;
+ phy-names = "pcie-phy";
+ power-domains = <&power RK3588_PD_PHP>;
+ ranges = <0x00000800 0x0 0xe0000000 0xa 0x00000000 0x0 0x100000
+ 0x81000000 0x0 0xe0100000 0xa 0x00100000 0x0 0x100000
+ 0x83000000 0x0 0xe0200000 0xa 0x00200000 0x0 0x3fe00000>;
+ reg = <0xa 0x41000000 0x0 0x400000>,
+ <0x0 0xfe190000 0x0 0x10000>;
+ reg-names = "pcie-dbi", "pcie-apb";
+ resets = <&cru SRST_PCIE4_POWER_UP>;
+ reset-names = "pipe";
+ status = "disabled";
+
+ pcie2x1l2_intc: legacy-interrupt-controller {
+ interrupt-controller;
+ #address-cells = <0>;
+ #interrupt-cells = <1>;
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 250 IRQ_TYPE_EDGE_RISING>;
+ };
+ };
+
+ gmac1: ethernet@fe1c0000 {
+ compatible = "rockchip,rk3588-gmac", "snps,dwmac-4.20a";
+ reg = <0x0 0xfe1c0000 0x0 0x10000>;
+ interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq", "eth_wake_irq";
+ rockchip,grf = <&sys_grf>;
+ rockchip,php_grf = <&php_grf>;
+ clocks = <&cru CLK_GMAC1>, <&cru ACLK_GMAC1>,
+ <&cru PCLK_GMAC1>, <&cru CLK_GMAC1_PTP_REF>;
+ clock-names = "stmmaceth", "aclk_mac",
+ "pclk_mac", "ptp_ref";
+ resets = <&cru SRST_A_GMAC1>;
+ reset-names = "stmmaceth";
+
+ snps,mixed-burst;
+ snps,tso;
+
+ snps,axi-config = <&gmac1_stmmac_axi_setup>;
+ snps,mtl-rx-config = <&gmac1_mtl_rx_setup>;
+ snps,mtl-tx-config = <&gmac1_mtl_tx_setup>;
+ status = "disabled";
+
+ mdio1: mdio {
+ compatible = "snps,dwmac-mdio";
+ #address-cells = <0x1>;
+ #size-cells = <0x0>;
+ };
+
+ gmac1_stmmac_axi_setup: stmmac-axi-config {
+ snps,wr_osr_lmt = <4>;
+ snps,rd_osr_lmt = <8>;
+ snps,blen = <0 0 0 0 16 8 4>;
+ };
+
+ gmac1_mtl_rx_setup: rx-queues-config {
+ snps,rx-queues-to-use = <2>;
+ queue0 {};
+ queue1 {};
+ };
+
+ gmac1_mtl_tx_setup: tx-queues-config {
+ snps,tx-queues-to-use = <2>;
+ queue0 {};
+ queue1 {};
+ };
+ };
+
+ sata0: sata@fe210000 {
+ compatible = "snps,dwc-ahci";
+ reg = <0 0xfe210000 0 0x1000>;
+ clocks = <&cru ACLK_SATA0>, <&cru CLK_PMALIVE0>,
+ <&cru CLK_RXOOB0>, <&cru CLK_PIPEPHY0_REF>;
+ clock-names = "sata", "pmalive", "rxoob", "ref";
+ interrupts = <GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "hostc";
+ phys = <&combphy0_ps PHY_TYPE_SATA>;
+ phy-names = "sata-phy";
+ ports-implemented = <0x1>;
+ power-domains = <&power RK3588_PD_PHP>;
+ status = "disabled";
+ };
+
+ sata2: sata@fe230000 {
+ compatible = "snps,dwc-ahci";
+ reg = <0 0xfe230000 0 0x1000>;
+ clocks = <&cru ACLK_SATA2>, <&cru CLK_PMALIVE2>,
+ <&cru CLK_RXOOB2>, <&cru CLK_PIPEPHY2_REF>;
+ clock-names = "sata", "pmalive", "rxoob", "ref";
+ interrupts = <GIC_SPI 275 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "hostc";
+ phys = <&combphy2_psu PHY_TYPE_SATA>;
+ phy-names = "sata-phy";
+ ports-implemented = <0x1>;
+ power-domains = <&power RK3588_PD_PHP>;
+ status = "disabled";
+ };
+
+ sfc: spi@fe2b0000 {
+ compatible = "rockchip,sfc";
+ reg = <0x0 0xfe2b0000 0x0 0x4000>;
+ interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_SFC>, <&cru HCLK_SFC>;
+ clock-names = "clk_sfc", "hclk_sfc";
+ assigned-clocks = <&cru SCLK_SFC>;
+ assigned-clock-rates = <100000000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ sdmmc: mmc@fe2c0000 {
+ compatible = "rockchip,rk3588-dw-mshc", "rockchip,rk3288-dw-mshc";
+ reg = <0x0 0xfe2c0000 0x0 0x4000>;
+ interrupts = <GIC_SPI 203 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&scmi_clk SCMI_CCLK_SD>, <&scmi_clk SCMI_HCLK_SD>,
+ <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
+ clock-names = "ciu", "biu", "ciu-drive", "ciu-sample";
+ fifo-depth = <0x100>;
+ max-frequency = <200000000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_det &sdmmc_bus4>;
+ status = "disabled";
+ };
+
+ sdio: mmc@fe2d0000 {
+ compatible = "rockchip,rk3588-dw-mshc", "rockchip,rk3288-dw-mshc";
+ reg = <0x0 0xfe2d0000 0x0 0x4000>;
+ interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru HCLK_SDIO>, <&cru CCLK_SRC_SDIO>,
+ <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
+ clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
+ fifo-depth = <0x100>;
+ max-frequency = <200000000>;
+ status = "disabled";
+ };
+
+ sdhci: mmc@fe2e0000 {
+ compatible = "rockchip,rk3588-dwcmshc", "rockchip,dwcmshc-sdhci";
+ reg = <0x0 0xfe2e0000 0x0 0x10000>;
+ interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
+ assigned-clocks = <&cru BCLK_EMMC>, <&cru TMCLK_EMMC>;
+ assigned-clock-rates = <200000000>, <24000000>;
+ clocks = <&cru CCLK_EMMC>, <&cru HCLK_EMMC>,
+ <&cru ACLK_EMMC>, <&cru BCLK_EMMC>,
+ <&cru TMCLK_EMMC>;
+ clock-names = "core", "bus", "axi", "block", "timer";
+ max-frequency = <200000000>;
+ status = "disabled";
+ };
+
+ i2s0_8ch: i2s@fe470000 {
+ compatible = "rockchip,rk3588-i2s-tdm";
+ reg = <0x0 0xfe470000 0x0 0x1000>;
+ interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S0_8CH_TX>, <&cru MCLK_I2S0_8CH_RX>, <&cru HCLK_I2S0_8CH>;
+ clock-names = "mclk_tx", "mclk_rx", "hclk";
+ dmas = <&dmac0 0>, <&dmac0 1>;
+ dma-names = "tx", "rx";
+ resets = <&cru SRST_M_I2S0_8CH_TX>, <&cru SRST_M_I2S0_8CH_RX>;
+ reset-names = "tx-m", "rx-m";
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2s0_lrck
+ &i2s0_sclk
+ &i2s0_sdi0
+ &i2s0_sdi1
+ &i2s0_sdi2
+ &i2s0_sdi3
+ &i2s0_sdo0
+ &i2s0_sdo1
+ &i2s0_sdo2
+ &i2s0_sdo3>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ i2s1_8ch: i2s@fe480000 {
+ compatible = "rockchip,rk3588-i2s-tdm";
+ reg = <0x0 0xfe480000 0x0 0x1000>;
+ interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S1_8CH_TX>, <&cru MCLK_I2S1_8CH_RX>, <&cru HCLK_I2S1_8CH>;
+ clock-names = "mclk_tx", "mclk_rx", "hclk";
+ dmas = <&dmac0 2>, <&dmac0 3>;
+ dma-names = "tx", "rx";
+ resets = <&cru SRST_M_I2S1_8CH_TX>, <&cru SRST_M_I2S1_8CH_RX>;
+ reset-names = "tx-m", "rx-m";
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2s1m0_lrck
+ &i2s1m0_sclk
+ &i2s1m0_sdi0
+ &i2s1m0_sdi1
+ &i2s1m0_sdi2
+ &i2s1m0_sdi3
+ &i2s1m0_sdo0
+ &i2s1m0_sdo1
+ &i2s1m0_sdo2
+ &i2s1m0_sdo3>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ i2s2_2ch: i2s@fe490000 {
+ compatible = "rockchip,rk3588-i2s", "rockchip,rk3066-i2s";
+ reg = <0x0 0xfe490000 0x0 0x1000>;
+ interrupts = <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S2_2CH>, <&cru HCLK_I2S2_2CH>;
+ clock-names = "i2s_clk", "i2s_hclk";
+ dmas = <&dmac1 0>, <&dmac1 1>;
+ dma-names = "tx", "rx";
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2s2m1_lrck
+ &i2s2m1_sclk
+ &i2s2m1_sdi
+ &i2s2m1_sdo>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ i2s3_2ch: i2s@fe4a0000 {
+ compatible = "rockchip,rk3588-i2s", "rockchip,rk3066-i2s";
+ reg = <0x0 0xfe4a0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_I2S3_2CH>, <&cru HCLK_I2S3_2CH>;
+ clock-names = "i2s_clk", "i2s_hclk";
+ dmas = <&dmac1 2>, <&dmac1 3>;
+ dma-names = "tx", "rx";
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2s3_lrck
+ &i2s3_sclk
+ &i2s3_sdi
+ &i2s3_sdo>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ pdm0: pdm@fe4b0000 {
+ compatible = "rockchip,rk3588-pdm";
+ reg = <0x0 0xfe4b0000 0x0 0x1000>;
+ clocks = <&cru MCLK_PDM0>, <&cru HCLK_PDM0>;
+ clock-names = "pdm_clk", "pdm_hclk";
+ dmas = <&dmac0 4>;
+ dma-names = "rx";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pdm0m0_clk
+ &pdm0m0_clk1
+ &pdm0m0_sdi0
+ &pdm0m0_sdi1
+ &pdm0m0_sdi2
+ &pdm0m0_sdi3>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ pdm1: pdm@fe4c0000 {
+ compatible = "rockchip,rk3588-pdm";
+ reg = <0x0 0xfe4c0000 0x0 0x1000>;
+ clocks = <&cru MCLK_PDM1>, <&cru HCLK_PDM1>;
+ clock-names = "pdm_clk", "pdm_hclk";
+ dmas = <&dmac1 4>;
+ dma-names = "rx";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pdm1m0_clk
+ &pdm1m0_clk1
+ &pdm1m0_sdi0
+ &pdm1m0_sdi1
+ &pdm1m0_sdi2
+ &pdm1m0_sdi3>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ vad: vad@fe4d0000 {
+ compatible = "rockchip,rk3588-vad";
+ reg = <0x0 0xfe4d0000 0x0 0x1000>;
+ reg-names = "vad";
+ clocks = <&cru HCLK_VAD>;
+ clock-names = "hclk";
+ interrupts = <GIC_SPI 202 IRQ_TYPE_LEVEL_HIGH>;
+ rockchip,audio-src = <0>;
+ rockchip,det-channel = <0>;
+ rockchip,mode = <0>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ spdif_tx0: spdif-tx@fe4e0000 {
+ compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0xfe4e0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
+ dmas = <&dmac0 5>;
+ dma-names = "tx";
+ clock-names = "mclk", "hclk";
+ clocks = <&cru MCLK_SPDIF0>, <&cru HCLK_SPDIF0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&spdif0m0_tx>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ spdif_tx1: spdif-tx@fe4f0000 {
+ compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0xfe4f0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
+ dmas = <&dmac1 5>;
+ dma-names = "tx";
+ clock-names = "mclk", "hclk";
+ clocks = <&cru MCLK_SPDIF1>, <&cru HCLK_SPDIF1>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&spdif1m0_tx>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ acdcdig_dsm: codec-digital@fe500000 {
+ compatible = "rockchip,rk3588-codec-digital", "rockchip,codec-digital-v1";
+ reg = <0x0 0xfe500000 0x0 0x1000>;
+ clocks = <&cru CLK_DAC_ACDCDIG>, <&cru PCLK_ACDCDIG>;
+ clock-names = "dac", "pclk";
+ resets = <&cru SRST_DAC_ACDCDIG>;
+ reset-names = "reset" ;
+ rockchip,grf = <&sys_grf>;
+ rockchip,pwm-output-mode;
+ pinctrl-names = "default";
+ pinctrl-0 = <&auddsm_pins>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ hwlock: hwspinlock@fe5a0000 {
+ compatible = "rockchip,hwspinlock";
+ reg = <0 0xfe5a0000 0 0x100>;
+ #hwlock-cells = <1>;
+ };
+
+ gic: interrupt-controller@fe600000 {
+ compatible = "arm,gic-v3";
+ #interrupt-cells = <3>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+ interrupt-controller;
+
+ reg = <0x0 0xfe600000 0 0x10000>, /* GICD */
+ <0x0 0xfe680000 0 0x100000>; /* GICR */
+ interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+ its: interrupt-controller@fe640000 {
+ compatible = "arm,gic-v3-its";
+ msi-controller;
+ #msi-cells = <1>;
+ reg = <0x0 0xfe640000 0x0 0x20000>;
+ };
+ };
+
+ dmac0: dma-controller@fea10000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0x0 0xfea10000 0x0 0x4000>;
+ interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru ACLK_DMAC0>;
+ clock-names = "apb_pclk";
+ #dma-cells = <1>;
+ arm,pl330-periph-burst;
+ };
+
+ dmac1: dma-controller@fea30000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0x0 0xfea30000 0x0 0x4000>;
+ interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru ACLK_DMAC1>;
+ clock-names = "apb_pclk";
+ #dma-cells = <1>;
+ arm,pl330-periph-burst;
+ };
+
+ can0: can@fea50000 {
+ compatible = "rockchip,canfd-1.0";
+ reg = <0x0 0xfea50000 0x0 0x1000>;
+ iinterrupts = <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru CLK_CAN0>, <&cru PCLK_CAN0>;
+ clock-names = "baudclk", "apb_pclk";
+ resets = <&cru SRST_CAN0>, <&cru SRST_P_CAN0>;
+ reset-names = "can", "can-apb";
+ pinctrl-names = "default";
+ pinctrl-0 = <&can0m0_pins>;
+ tx-fifo-depth = <1>;
+ rx-fifo-depth = <6>;
+ status = "disabled";
+ };
+
+ can1: can@fea60000 {
+ compatible = "rockchip,canfd-1.0";
+ reg = <0x0 0xfea60000 0x0 0x1000>;
+ interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru CLK_CAN1>, <&cru PCLK_CAN1>;
+ clock-names = "baudclk", "apb_pclk";
+ resets = <&cru SRST_CAN1>, <&cru SRST_P_CAN1>;
+ reset-names = "can", "can-apb";
+ pinctrl-names = "default";
+ pinctrl-0 = <&can1m0_pins>;
+ tx-fifo-depth = <1>;
+ rx-fifo-depth = <6>;
+ status = "disabled";
+ };
+
+ can2: can@fea70000 {
+ compatible = "rockchip,canfd-1.0";
+ reg = <0x0 0xfea70000 0x0 0x1000>;
+ interrupts = <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru CLK_CAN2>, <&cru PCLK_CAN2>;
+ clock-names = "baudclk", "apb_pclk";
+ resets = <&cru SRST_CAN2>, <&cru SRST_P_CAN2>;
+ reset-names = "can", "can-apb";
+ pinctrl-names = "default";
+ pinctrl-0 = <&can2m0_pins>;
+ tx-fifo-depth = <1>;
+ rx-fifo-depth = <6>;
+ status = "disabled";
+ };
+
+ hw_decompress: decompress@fea80000 {
+ compatible = "rockchip,hw-decompress";
+ reg = <0x0 0xfea80000 0x0 0x1000>;
+ interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru ACLK_DECOM>, <&cru DCLK_DECOM>, <&cru PCLK_DECOM>;
+ clock-names = "aclk", "dclk", "pclk";
+ resets = <&cru SRST_D_DECOM>;
+ reset-names = "dresetn";
+ status = "disabled";
+ };
+
+ i2c1: i2c@fea90000 {
+ compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0xfea90000 0x0 0x1000>;
+ clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>;
+ clock-names = "i2c", "pclk";
+ interrupts = <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c1m0_xfer>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ i2c2: i2c@feaa0000 {
+ compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0xfeaa0000 0x0 0x1000>;
+ clocks = <&cru CLK_I2C2>, <&cru PCLK_I2C2>;
+ clock-names = "i2c", "pclk";
+ interrupts = <GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c2m0_xfer>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ i2c3: i2c@feab0000 {
+ compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0xfeab0000 0x0 0x1000>;
+ clocks = <&cru CLK_I2C3>, <&cru PCLK_I2C3>;
+ clock-names = "i2c", "pclk";
+ interrupts = <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c3m0_xfer>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ i2c4: i2c@feac0000 {
+ compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0xfeac0000 0x0 0x1000>;
+ clocks = <&cru CLK_I2C4>, <&cru PCLK_I2C4>;
+ clock-names = "i2c", "pclk";
+ interrupts = <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c4m0_xfer>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ i2c5: i2c@fead0000 {
+ compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0xfead0000 0x0 0x1000>;
+ clocks = <&cru CLK_I2C5>, <&cru PCLK_I2C5>;
+ clock-names = "i2c", "pclk";
+ interrupts = <GIC_SPI 322 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c5m0_xfer>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ rktimer: timer@feae0000 {
+ compatible = "rockchip,rk3588-timer", "rockchip,rk3288-timer";
+ reg = <0x0 0xfeae0000 0x0 0x20>;
+ interrupts = <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru PCLK_BUSTIMER0>, <&cru CLK_BUSTIMER0>;
+ clock-names = "pclk", "timer";
+ };
+
+ wdt: watchdog@feaf0000 {
+ compatible = "snps,dw-wdt";
+ reg = <0x0 0xfeaf0000 0x0 0x100>;
+ clocks = <&cru TCLK_WDT0>, <&cru PCLK_WDT0>;
+ clock-names = "tclk", "pclk";
+ interrupts = <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>;
+ status = "disabled";
+ };
+
+ spi0: spi@feb00000 {
+ compatible = "rockchip,rk3066-spi";
+ reg = <0x0 0xfeb00000 0x0 0x1000>;
+ interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clocks = <&cru CLK_SPI0>, <&cru PCLK_SPI0>;
+ clock-names = "spiclk", "apb_pclk";
+ dmas = <&dmac0 14>, <&dmac0 15>;
+ dma-names = "tx", "rx";
+ pinctrl-names = "default", "high_speed";
+ pinctrl-0 = <&spi0m0_cs0 &spi0m0_cs1 &spi0m0_pins>;
+ pinctrl-1 = <&spi0m0_cs0 &spi0m0_cs1 &spi0m0_pins_hs>;
+ num-cs = <2>;
+ status = "disabled";
+ };
+
+ spi1: spi@feb10000 {
+ compatible = "rockchip,rk3066-spi";
+ reg = <0x0 0xfeb10000 0x0 0x1000>;
+ interrupts = <GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clocks = <&cru CLK_SPI1>, <&cru PCLK_SPI1>;
+ clock-names = "spiclk", "apb_pclk";
+ dmas = <&dmac0 16>, <&dmac0 17>;
+ dma-names = "tx", "rx";
+ pinctrl-names = "default", "high_speed";
+ pinctrl-0 = <&spi1m1_cs0 &spi1m1_cs1 &spi1m1_pins>;
+ pinctrl-1 = <&spi1m1_cs0 &spi1m1_cs1 &spi1m1_pins_hs>;
+ num-cs = <2>;
+ status = "disabled";
+ };
+
+ spi2: spi@feb20000 {
+ compatible = "rockchip,rk3066-spi";
+ reg = <0x0 0xfeb20000 0x0 0x1000>;
+ interrupts = <GIC_SPI 328 IRQ_TYPE_LEVEL_HIGH>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clocks = <&cru CLK_SPI2>, <&cru PCLK_SPI2>;
+ clock-names = "spiclk", "apb_pclk";
+ dmas = <&dmac1 15>, <&dmac1 16>;
+ dma-names = "tx", "rx";
+ pinctrl-names = "default", "high_speed";
+ pinctrl-0 = <&spi2m0_cs0 &spi2m0_cs1 &spi2m0_pins>;
+ pinctrl-1 = <&spi2m0_cs0 &spi2m0_cs1 &spi2m0_pins_hs>;
+ num-cs = <2>;
+ status = "disabled";
+ };
+
+ spi3: spi@feb30000 {
+ compatible = "rockchip,rk3066-spi";
+ reg = <0x0 0xfeb30000 0x0 0x1000>;
+ interrupts = <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clocks = <&cru CLK_SPI3>, <&cru PCLK_SPI3>;
+ clock-names = "spiclk", "apb_pclk";
+ dmas = <&dmac1 17>, <&dmac1 18>;
+ dma-names = "tx", "rx";
+ pinctrl-names = "default", "high_speed";
+ pinctrl-0 = <&spi3m1_cs0 &spi3m1_cs1 &spi3m1_pins>;
+ pinctrl-1 = <&spi3m1_cs0 &spi3m1_cs1 &spi3m1_pins_hs>;
+ num-cs = <2>;
+ status = "disabled";
+ };
+
+ uart1: serial@feb40000 {
+ compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
+ reg = <0x0 0xfeb40000 0x0 0x100>;
+ interrupts = <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
+ clock-names = "baudclk", "apb_pclk";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ dmas = <&dmac0 8>, <&dmac0 9>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart1m0_xfer>;
+ status = "disabled";
+ };
+
+ uart2: serial@feb50000 {
+ compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
+ reg = <0x0 0xfeb50000 0x0 0x100>;
+ interrupts = <GIC_SPI 333 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
+ clock-names = "baudclk", "apb_pclk";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ dmas = <&dmac0 10>, <&dmac0 11>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart2m0_xfer>;
+ status = "disabled";
+ };
+
+ uart3: serial@feb60000 {
+ compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
+ reg = <0x0 0xfeb60000 0x0 0x100>;
+ interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
+ clock-names = "baudclk", "apb_pclk";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ dmas = <&dmac0 12>, <&dmac0 13>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart3m0_xfer>;
+ status = "disabled";
+ };
+
+ uart4: serial@feb70000 {
+ compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
+ reg = <0x0 0xfeb70000 0x0 0x100>;
+ interrupts = <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
+ clock-names = "baudclk", "apb_pclk";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ dmas = <&dmac1 9>, <&dmac1 10>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart4m0_xfer>;
+ status = "disabled";
+ };
+
+ uart5: serial@feb80000 {
+ compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
+ reg = <0x0 0xfeb80000 0x0 0x100>;
+ interrupts = <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
+ clock-names = "baudclk", "apb_pclk";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ dmas = <&dmac1 11>, <&dmac1 12>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart5m0_xfer>;
+ status = "disabled";
+ };
+
+ uart6: serial@feb90000 {
+ compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
+ reg = <0x0 0xfeb90000 0x0 0x100>;
+ interrupts = <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>;
+ clock-names = "baudclk", "apb_pclk";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ dmas = <&dmac1 13>, <&dmac1 14>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart6m0_xfer>;
+ status = "disabled";
+ };
+
+ uart7: serial@feba0000 {
+ compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
+ reg = <0x0 0xfeba0000 0x0 0x100>;
+ interrupts = <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>;
+ clock-names = "baudclk", "apb_pclk";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ dmas = <&dmac2 7>, <&dmac2 8>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart7m0_xfer>;
+ status = "disabled";
+ };
+
+ uart8: serial@febb0000 {
+ compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
+ reg = <0x0 0xfebb0000 0x0 0x100>;
+ interrupts = <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_UART8>, <&cru PCLK_UART8>;
+ clock-names = "baudclk", "apb_pclk";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ dmas = <&dmac2 9>, <&dmac2 10>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart8m0_xfer>;
+ status = "disabled";
+ };
+
+ uart9: serial@febc0000 {
+ compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
+ reg = <0x0 0xfebc0000 0x0 0x100>;
+ interrupts = <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru SCLK_UART9>, <&cru PCLK_UART9>;
+ clock-names = "baudclk", "apb_pclk";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ dmas = <&dmac2 11>, <&dmac2 12>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart9m0_xfer>;
+ status = "disabled";
+ };
+
+ pwm4: pwm@febd0000 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebd0000 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm4m0_pins>;
+ clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm5: pwm@febd0010 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebd0010 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm5m0_pins>;
+ clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm6: pwm@febd0020 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebd0020 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm6m0_pins>;
+ clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm7: pwm@febd0030 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebd0030 0x0 0x10>;
+ interrupts = <GIC_SPI 346 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm7m0_pins>;
+ clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm8: pwm@febe0000 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebe0000 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm8m0_pins>;
+ clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm9: pwm@febe0010 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebe0010 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm9m0_pins>;
+ clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm10: pwm@febe0020 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebe0020 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm10m0_pins>;
+ clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm11: pwm@febe0030 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebe0030 0x0 0x10>;
+ interrupts = <GIC_SPI 348 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 349 IRQ_TYPE_LEVEL_HIGH>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm11m0_pins>;
+ clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm12: pwm@febf0000 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebf0000 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm12m0_pins>;
+ clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm13: pwm@febf0010 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebf0010 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm13m0_pins>;
+ clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm14: pwm@febf0020 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebf0020 0x0 0x10>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm14m0_pins>;
+ clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ pwm15: pwm@febf0030 {
+ compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
+ reg = <0x0 0xfebf0030 0x0 0x10>;
+ interrupts = <GIC_SPI 350 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 351 IRQ_TYPE_LEVEL_HIGH>;
+ #pwm-cells = <3>;
+ pinctrl-names = "active";
+ pinctrl-0 = <&pwm15m0_pins>;
+ clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
+ clock-names = "pwm", "pclk";
+ status = "disabled";
+ };
+
+ tsadc: tsadc@fec00000 {
+ compatible = "rockchip,rk3588-tsadc";
+ reg = <0x0 0xfec00000 0x0 0x400>;
+ interrupts = <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru CLK_TSADC>, <&cru PCLK_TSADC>;
+ clock-names = "tsadc", "apb_pclk";
+ assigned-clocks = <&cru CLK_TSADC>;
+ assigned-clock-rates = <2000000>;
+ resets = <&cru SRST_TSADC>, <&cru SRST_P_TSADC>;
+ reset-names = "tsadc", "tsadc-apb";
+ #thermal-sensor-cells = <1>;
+ rockchip,hw-tshut-temp = <120000>;
+ rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
+ rockchip,hw-tshut-polarity = <0>; /* tshut polarity 0:LOW 1:HIGH */
+ pinctrl-names = "gpio", "otpout";
+ pinctrl-0 = <&tsadc_gpio_func>;
+ pinctrl-1 = <&tsadc_shut_org>;
+ status = "disabled";
+ };
+
+ saradc: saradc@fec10000 {
+ compatible = "rockchip,rk3588-saradc";
+ reg = <0x0 0xfec10000 0x0 0x10000>;
+ interrupts = <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>;
+ #io-channel-cells = <1>;
+ clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>;
+ clock-names = "saradc", "apb_pclk";
+ resets = <&cru SRST_P_SARADC>;
+ reset-names = "saradc-apb";
+ status = "disabled";
+ };
+
+ mailbox0: mailbox@fec60000 {
+ compatible = "rockchip,rk3588-mailbox",
+ "rockchip,rk3368-mailbox";
+ reg = <0x0 0xfec60000 0x0 0x200>;
+ interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru PCLK_MAILBOX0>;
+ clock-names = "pclk_mailbox";
+ #mbox-cells = <1>;
+ status = "disabled";
+ };
+
+ mailbox1: mailbox@fec70000 {
+ compatible = "rockchip,rk3588-mailbox",
+ "rockchip,rk3368-mailbox";
+ reg = <0x0 0xfec70000 0x0 0x200>;
+ interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru PCLK_MAILBOX1>;
+ clock-names = "pclk_mailbox";
+ #mbox-cells = <1>;
+ status = "disabled";
+ };
+
+ i2c6: i2c@fec80000 {
+ compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0xfec80000 0x0 0x1000>;
+ clocks = <&cru CLK_I2C6>, <&cru PCLK_I2C6>;
+ clock-names = "i2c", "pclk";
+ interrupts = <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c6m0_xfer>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ i2c7: i2c@fec90000 {
+ compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0xfec90000 0x0 0x1000>;
+ clocks = <&cru CLK_I2C7>, <&cru PCLK_I2C7>;
+ clock-names = "i2c", "pclk";
+ interrupts = <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c7m0_xfer>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ i2c8: i2c@feca0000 {
+ compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
+ reg = <0x0 0xfeca0000 0x0 0x1000>;
+ clocks = <&cru CLK_I2C8>, <&cru PCLK_I2C8>;
+ clock-names = "i2c", "pclk";
+ interrupts = <GIC_SPI 325 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c8m0_xfer>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ spi4: spi@fecb0000 {
+ compatible = "rockchip,rk3066-spi";
+ reg = <0x0 0xfecb0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clocks = <&cru CLK_SPI4>, <&cru PCLK_SPI4>;
+ clock-names = "spiclk", "apb_pclk";
+ dmas = <&dmac2 13>, <&dmac2 14>;
+ dma-names = "tx", "rx";
+ pinctrl-names = "default", "high_speed";
+ pinctrl-0 = <&spi4m0_cs0 &spi4m0_cs1 &spi4m0_pins>;
+ pinctrl-1 = <&spi4m0_cs0 &spi4m0_cs1 &spi4m0_pins_hs>;
+ num-cs = <2>;
+ status = "disabled";
+ };
+
+ otp: otp@fecc0000 {
+ compatible = "rockchip,rk3588-otp";
+ reg = <0x0 0xfecc0000 0x0 0x400>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ clocks = <&cru CLK_OTPC_NS>, <&cru PCLK_OTPC_NS>,
+ <&cru CLK_OTPC_ARB>, <&cru CLK_OTP_PHY_G>;
+ clock-names = "otpc", "apb", "arb", "phy";
+ resets = <&cru SRST_OTPC_NS>, <&cru SRST_P_OTPC_NS>,
+ <&cru SRST_OTPC_ARB>;
+ reset-names = "otpc", "apb", "arb";
+ };
+
+ mailbox2: mailbox@fece0000 {
+ compatible = "rockchip,rk3588-mailbox",
+ "rockchip,rk3368-mailbox";
+ reg = <0x0 0xfece0000 0x0 0x200>;
+ interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru PCLK_MAILBOX2>;
+ clock-names = "pclk_mailbox";
+ #mbox-cells = <1>;
+ status = "disabled";
+ };
+
+ dmac2: dma-controller@fed10000 {
+ compatible = "arm,pl330", "arm,primecell";
+ reg = <0x0 0xfed10000 0x0 0x4000>;
+ interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru ACLK_DMAC2>;
+ clock-names = "apb_pclk";
+ #dma-cells = <1>;
+ arm,pl330-periph-burst;
+ };
+
+ hdptxphy0: phy@fed60000 {
+ compatible = "rockchip,rk3588-hdptx-phy";
+ reg = <0x0 0xfed60000 0x0 0x2000>;
+ clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>, <&cru PCLK_HDPTX0>;
+ clock-names = "ref", "apb";
+ resets = <&cru SRST_HDPTX0>, <&cru SRST_P_HDPTX0>,
+ <&cru SRST_HDPTX0_INIT>, <&cru SRST_HDPTX0_CMN>,
+ <&cru SRST_HDPTX0_LANE>, <&cru SRST_HDPTX0_ROPLL>,
+ <&cru SRST_HDPTX0_LCPLL>;
+ reset-names = "phy", "apb", "init", "cmn", "lane", "ropll",
+ "lcpll";
+ rockchip,grf = <&hdptxphy0_grf>;
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+
+ usbdp_phy0: phy@fed80000 {
+ compatible = "rockchip,rk3588-usbdp-phy";
+ reg = <0x0 0xfed80000 0x0 0x10000>;
+ rockchip,usb-grf = <&usb_grf>;
+ rockchip,usbdpphy-grf = <&usbdpphy0_grf>;
+ rockchip,vo-grf = <&vo0_grf>;
+ clocks = <&cru CLK_USBDPPHY_MIPIDCPPHY_REF>,
+ <&cru CLK_USBDP_PHY0_IMMORTAL>,
+ <&cru PCLK_USBDPPHY0>;
+ clock-names = "refclk", "immortal", "pclk";
+ resets = <&cru SRST_USBDP_COMBO_PHY0_INIT>,
+ <&cru SRST_USBDP_COMBO_PHY0_CMN>,
+ <&cru SRST_USBDP_COMBO_PHY0_LANE>,
+ <&cru SRST_USBDP_COMBO_PHY0_PCS>,
+ <&cru SRST_P_USBDPPHY0>;
+ reset-names = "init", "cmn", "lane", "pcs_apb", "pma_apb";
+ status = "disabled";
+
+ usbdp_phy0_dp: dp-port {
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+
+ usbdp_phy0_u3: u3-port {
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+ };
+
+ combphy0_ps: phy@fee00000 {
+ compatible = "rockchip,rk3588-naneng-combphy";
+ reg = <0x0 0xfee00000 0x0 0x100>;
+ #phy-cells = <1>;
+ clocks = <&cru CLK_REF_PIPE_PHY0>, <&cru PCLK_PCIE_COMBO_PIPE_PHY0>;
+ clock-names = "refclk", "apbclk";
+ assigned-clocks = <&cru CLK_REF_PIPE_PHY0>;
+ assigned-clock-rates = <100000000>;
+ resets = <&cru SRST_P_PCIE2_PHY0>, <&cru SRST_REF_PIPE_PHY0>;
+ reset-names = "combphy-apb", "combphy";
+ rockchip,pipe-grf = <&php_grf>;
+ rockchip,pipe-phy-grf = <&pipe_phy0_grf>;
+ status = "disabled";
+ };
+
+ combphy2_psu: phy@fee20000 {
+ compatible = "rockchip,rk3588-naneng-combphy";
+ reg = <0x0 0xfee20000 0x0 0x100>;
+ #phy-cells = <1>;
+ clocks = <&cru CLK_REF_PIPE_PHY2>, <&cru PCLK_PCIE_COMBO_PIPE_PHY2>;
+ clock-names = "refclk", "apbclk";
+ assigned-clocks = <&cru CLK_REF_PIPE_PHY2>;
+ assigned-clock-rates = <100000000>;
+ resets = <&cru SRST_P_PCIE2_PHY2>, <&cru SRST_REF_PIPE_PHY2>;
+ reset-names = "combphy-apb", "combphy";
+ rockchip,pipe-grf = <&php_grf>;
+ rockchip,pipe-phy-grf = <&pipe_phy2_grf>;
+ rockchip,pcie1ln-sel-bits = <0x100 1 1 0>;
+ status = "disabled";
+ };
+
+ pinctrl: pinctrl {
+ compatible = "rockchip,rk3588-pinctrl";
+ rockchip,grf = <&ioc>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ gpio0: gpio@fd8a0000 {
+ compatible = "rockchip,gpio-bank";
+ reg = <0x0 0xfd8a0000 0x0 0x100>;
+ interrupts = <GIC_SPI 277 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru PCLK_GPIO0>, <&cru DBCLK_GPIO0>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-ranges = <&pinctrl 0 0 32>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpio1: gpio@fec20000 {
+ compatible = "rockchip,gpio-bank";
+ reg = <0x0 0xfec20000 0x0 0x100>;
+ interrupts = <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-ranges = <&pinctrl 0 32 32>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpio2: gpio@fec30000 {
+ compatible = "rockchip,gpio-bank";
+ reg = <0x0 0xfec30000 0x0 0x100>;
+ interrupts = <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-ranges = <&pinctrl 0 64 32>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpio3: gpio@fec40000 {
+ compatible = "rockchip,gpio-bank";
+ reg = <0x0 0xfec40000 0x0 0x100>;
+ interrupts = <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-ranges = <&pinctrl 0 96 32>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpio4: gpio@fec50000 {
+ compatible = "rockchip,gpio-bank";
+ reg = <0x0 0xfec50000 0x0 0x100>;
+ interrupts = <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-ranges = <&pinctrl 0 128 32>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+ };
+};
+
+#include "rk3588s-pinctrl.dtsi"
--
2.39.1
1
0

[PATCH 5/7] rockchip: clk: pll: add pll_rk3588 type for RK3588 Soc
by fatorangecat@189.cn 24 Jan '23
by fatorangecat@189.cn 24 Jan '23
24 Jan '23
From: Elaine Zhang <zhangqing(a)rock-chips.com>
Signed-off-by: Elaine Zhang <zhangqing(a)rock-chips.com>
---
arch/arm/include/asm/arch-rockchip/clock.h | 15 ++
drivers/clk/rockchip/clk_pll.c | 231 ++++++++++++++++++++-
2 files changed, 243 insertions(+), 3 deletions(-)
diff --git a/arch/arm/include/asm/arch-rockchip/clock.h b/arch/arm/include/asm/arch-rockchip/clock.h
index 52eaf6f5e4..6b09fa0057 100644
--- a/arch/arm/include/asm/arch-rockchip/clock.h
+++ b/arch/arm/include/asm/arch-rockchip/clock.h
@@ -68,6 +68,15 @@ enum rk_clk_id {
.frac = _frac, \
}
+#define RK3588_PLL_RATE(_rate, _p, _m, _s, _k) \
+{ \
+ .rate = _rate##U, \
+ .p = _p, \
+ .m = _m, \
+ .s = _s, \
+ .k = _k, \
+}
+
struct rockchip_pll_rate_table {
unsigned long rate;
unsigned int nr;
@@ -81,6 +90,11 @@ struct rockchip_pll_rate_table {
unsigned int postdiv2;
unsigned int dsmpd;
unsigned int frac;
+ /* for RK3588 */
+ unsigned int m;
+ unsigned int p;
+ unsigned int s;
+ unsigned int k;
};
enum rockchip_pll_type {
@@ -89,6 +103,7 @@ enum rockchip_pll_type {
pll_rk3328,
pll_rk3366,
pll_rk3399,
+ pll_rk3588,
};
struct rockchip_pll_clock {
diff --git a/drivers/clk/rockchip/clk_pll.c b/drivers/clk/rockchip/clk_pll.c
index 09b97cf57a..ac37dd494c 100644
--- a/drivers/clk/rockchip/clk_pll.c
+++ b/drivers/clk/rockchip/clk_pll.c
@@ -41,6 +41,10 @@ enum {
VCO_MIN_HZ = 800 * 1000000,
OUTPUT_MAX_HZ = 3200U * 1000000,
OUTPUT_MIN_HZ = 24 * 1000000,
+ RK3588_VCO_MIN_HZ = 2250U * 1000000,
+ RK3588_VCO_MAX_HZ = 4500U * 1000000,
+ RK3588_FOUT_MIN_HZ = 37U * 1000000,
+ RK3588_FOUT_MAX_HZ = 4500U * 1000000,
};
#define MIN_FOUTVCO_FREQ (800 * MHZ)
@@ -164,6 +168,66 @@ rockchip_pll_clk_set_by_auto(ulong fin_hz,
return rate_table;
}
+static struct rockchip_pll_rate_table *
+rk3588_pll_clk_set_by_auto(unsigned long fin_hz,
+ unsigned long fout_hz)
+{
+ struct rockchip_pll_rate_table *rate_table = &rockchip_auto_table;
+ u32 p, m, s;
+ ulong fvco, fref, fout, ffrac;
+
+ if (fin_hz == 0 || fout_hz == 0 || fout_hz == fin_hz)
+ return NULL;
+
+ if (fout_hz > RK3588_FOUT_MAX_HZ || fout_hz < RK3588_FOUT_MIN_HZ)
+ return NULL;
+
+ if (fin_hz / MHZ * MHZ == fin_hz && fout_hz / MHZ * MHZ == fout_hz) {
+ for (s = 0; s <= 6; s++) {
+ fvco = fout_hz << s;
+ if (fvco < RK3588_VCO_MIN_HZ ||
+ fvco > RK3588_VCO_MAX_HZ)
+ continue;
+ for (p = 2; p <= 4; p++) {
+ for (m = 64; m <= 1023; m++) {
+ if (fvco == m * fin_hz / p) {
+ rate_table->p = p;
+ rate_table->m = m;
+ rate_table->s = s;
+ rate_table->k = 0;
+ return rate_table;
+ }
+ }
+ }
+ }
+ pr_err("CANNOT FIND Fout by auto,fout = %lu\n", fout_hz);
+ } else {
+ fout = (fout_hz / MHZ) * MHZ;
+ ffrac = (fout_hz % MHZ);
+ for (s = 0; s <= 6; s++) {
+ fvco = fout << s;
+ if (fvco < RK3588_VCO_MIN_HZ ||
+ fvco > RK3588_VCO_MAX_HZ)
+ continue;
+ for (p = 1; p <= 4; p++) {
+ for (m = 64; m <= 1023; m++) {
+ if (fvco == m * fin_hz / p) {
+ rate_table->p = p;
+ rate_table->m = m;
+ rate_table->s = s;
+ fref = fin_hz / p;
+ fout = (ffrac << s) * 65535;
+ rate_table->k = fout / fref;
+ return rate_table;
+ }
+ }
+ }
+ }
+ pr_err("CANNOT FIND Fout by auto,fout = %lu\n", fout_hz);
+ }
+ return NULL;
+}
+
static const struct rockchip_pll_rate_table *
rockchip_get_pll_settings(struct rockchip_pll_clock *pll, ulong rate)
{
@@ -174,10 +238,14 @@ rockchip_get_pll_settings(struct rockchip_pll_clock *pll, ulong rate)
break;
rate_table++;
}
- if (rate_table->rate != rate)
- return rockchip_pll_clk_set_by_auto(24 * MHZ, rate);
- else
+ if (rate_table->rate != rate) {
+ if (pll->type == pll_rk3588)
+ return rk3588_pll_clk_set_by_auto(24 * MHZ, rate);
+ else
+ return rockchip_pll_clk_set_by_auto(24 * MHZ, rate);
+ } else {
return rate_table;
+ }
}
static int rk3036_pll_set_rate(struct rockchip_pll_clock *pll,
@@ -296,6 +364,155 @@ static ulong rk3036_pll_get_rate(struct rockchip_pll_clock *pll,
}
}
+#define RK3588_PLLCON(i) ((i) * 0x4)
+#define RK3588_PLLCON0_M_MASK 0x3ff << 0
+#define RK3588_PLLCON0_M_SHIFT 0
+#define RK3588_PLLCON1_P_MASK 0x3f << 0
+#define RK3588_PLLCON1_P_SHIFT 0
+#define RK3588_PLLCON1_S_MASK 0x7 << 6
+#define RK3588_PLLCON1_S_SHIFT 6
+#define RK3588_PLLCON2_K_MASK 0xffff
+#define RK3588_PLLCON2_K_SHIFT 0
+#define RK3588_PLLCON1_PWRDOWN BIT(13)
+#define RK3588_PLLCON6_LOCK_STATUS BIT(15)
+#define RK3588_B0PLL_CLKSEL_CON(i) ((i) * 0x4 + 0x50000 + 0x300)
+#define RK3588_B1PLL_CLKSEL_CON(i) ((i) * 0x4 + 0x52000 + 0x300)
+#define RK3588_LPLL_CLKSEL_CON(i) ((i) * 0x4 + 0x58000 + 0x300)
+
+static int rk3588_pll_set_rate(struct rockchip_pll_clock *pll,
+ void __iomem *base, ulong pll_id,
+ ulong drate)
+{
+ const struct rockchip_pll_rate_table *rate;
+
+ rate = rockchip_get_pll_settings(pll, drate);
+ if (!rate) {
+ printf("%s unsupported rate\n", __func__);
+ return -EINVAL;
+ }
+
+ debug("%s: rate settings for %lu p: %d, m: %d, s: %d, k: %d\n",
+ __func__, rate->rate, rate->p, rate->m, rate->s, rate->k);
+
+ /*
+ * When power on or changing PLL setting,
+ * we must force PLL into slow mode to ensure output stable clock.
+ */
+ rk_clrsetreg(base + pll->mode_offset,
+ pll->mode_mask << pll->mode_shift,
+ RKCLK_PLL_MODE_SLOW << pll->mode_shift);
+ if (pll_id == 0)
+ rk_clrsetreg(base + RK3588_B0PLL_CLKSEL_CON(0),
+ pll->mode_mask << 6,
+ RKCLK_PLL_MODE_SLOW << 6);
+ else if (pll_id == 1)
+ rk_clrsetreg(base + RK3588_B1PLL_CLKSEL_CON(0),
+ pll->mode_mask << 6,
+ RKCLK_PLL_MODE_SLOW << 6);
+ else if (pll_id == 2)
+ rk_clrsetreg(base + RK3588_LPLL_CLKSEL_CON(5),
+ pll->mode_mask << 14,
+ RKCLK_PLL_MODE_SLOW << 14);
+
+ /* Power down */
+ rk_setreg(base + pll->con_offset + RK3588_PLLCON(1),
+ RK3588_PLLCON1_PWRDOWN);
+
+ rk_clrsetreg(base + pll->con_offset,
+ RK3588_PLLCON0_M_MASK,
+ (rate->m << RK3588_PLLCON0_M_SHIFT));
+ rk_clrsetreg(base + pll->con_offset + RK3588_PLLCON(1),
+ (RK3588_PLLCON1_P_MASK |
+ RK3588_PLLCON1_S_MASK),
+ (rate->p << RK3588_PLLCON1_P_SHIFT |
+ rate->s << RK3588_PLLCON1_S_SHIFT));
+ if (!rate->k) {
+ rk_clrsetreg(base + pll->con_offset + RK3588_PLLCON(2),
+ RK3588_PLLCON2_K_MASK,
+ rate->k << RK3588_PLLCON2_K_SHIFT);
+ }
+ /* Power up */
+ rk_clrreg(base + pll->con_offset + RK3588_PLLCON(1),
+ RK3588_PLLCON1_PWRDOWN);
+
+ /* waiting for pll lock */
+ while (!(readl(base + pll->con_offset + RK3588_PLLCON(6)) &
+ RK3588_PLLCON6_LOCK_STATUS)) {
+ udelay(1);
+ debug("%s: wait pll lock, pll_id=%ld\n", __func__, pll_id);
+ }
+
+ rk_clrsetreg(base + pll->mode_offset, pll->mode_mask << pll->mode_shift,
+ RKCLK_PLL_MODE_NORMAL << pll->mode_shift);
+ if (pll_id == 0)
+ rk_clrsetreg(base + RK3588_B0PLL_CLKSEL_CON(0),
+ pll->mode_mask << 6,
+ 2 << 6);
+ else if (pll_id == 1)
+ rk_clrsetreg(base + RK3588_B0PLL_CLKSEL_CON(0),
+ pll->mode_mask << 6,
+ 2 << 6);
+ else if (pll_id == 2)
+ rk_clrsetreg(base + RK3588_LPLL_CLKSEL_CON(5),
+ pll->mode_mask << 14,
+ 2 << 14);
+ debug("PLL at %p: con0=%x con1= %x con2= %x mode= %x\n",
+ pll, readl(base + pll->con_offset),
+ readl(base + pll->con_offset + 0x4),
+ readl(base + pll->con_offset + 0x8),
+ readl(base + pll->mode_offset));
+
+ return 0;
+}
+
+static ulong rk3588_pll_get_rate(struct rockchip_pll_clock *pll,
+ void __iomem *base, ulong pll_id)
+{
+ u32 m, p, s, k;
+ u32 con = 0, shift, mode;
+ u64 rate, postdiv;
+
+ con = readl(base + pll->mode_offset);
+ shift = pll->mode_shift;
+ if (pll_id == 8)
+ mode = RKCLK_PLL_MODE_NORMAL;
+ else
+ mode = (con & (pll->mode_mask << shift)) >> shift;
+ switch (mode) {
+ case RKCLK_PLL_MODE_SLOW:
+ return OSC_HZ;
+ case RKCLK_PLL_MODE_NORMAL:
+ /* normal mode */
+ con = readl(base + pll->con_offset);
+ m = (con & RK3588_PLLCON0_M_MASK) >>
+ RK3588_PLLCON0_M_SHIFT;
+ con = readl(base + pll->con_offset + RK3588_PLLCON(1));
+ p = (con & RK3588_PLLCON1_P_MASK) >>
+ RK3036_PLLCON0_FBDIV_SHIFT;
+ s = (con & RK3588_PLLCON1_S_MASK) >>
+ RK3588_PLLCON1_S_SHIFT;
+ con = readl(base + pll->con_offset + RK3588_PLLCON(2));
+ k = (con & RK3588_PLLCON2_K_MASK) >>
+ RK3588_PLLCON2_K_SHIFT;
+
+ rate = OSC_HZ / p;
+ rate *= m;
+ if (k) {
+ /* fractional mode */
+ u64 frac_rate64 = OSC_HZ * k;
+
+ postdiv = p * 65535;
+ do_div(frac_rate64, postdiv);
+ rate += frac_rate64;
+ }
+ rate = rate >> s;
+ return rate;
+ case RKCLK_PLL_MODE_DEEP:
+ default:
+ return 32768;
+ }
+}
+
ulong rockchip_pll_get_rate(struct rockchip_pll_clock *pll,
void __iomem *base,
ulong pll_id)
@@ -311,6 +528,10 @@ ulong rockchip_pll_get_rate(struct rockchip_pll_clock *pll,
pll->mode_mask = PLL_RK3328_MODE_MASK;
rate = rk3036_pll_get_rate(pll, base, pll_id);
break;
+ case pll_rk3588:
+ pll->mode_mask = PLL_MODE_MASK;
+ rate = rk3588_pll_get_rate(pll, base, pll_id);
+ break;
default:
printf("%s: Unknown pll type for pll clk %ld\n",
__func__, pll_id);
@@ -336,6 +557,10 @@ int rockchip_pll_set_rate(struct rockchip_pll_clock *pll,
pll->mode_mask = PLL_RK3328_MODE_MASK;
ret = rk3036_pll_set_rate(pll, base, pll_id, drate);
break;
+ case pll_rk3588:
+ pll->mode_mask = PLL_MODE_MASK;
+ ret = rk3588_pll_set_rate(pll, base, pll_id, drate);
+ break;
default:
printf("%s: Unknown pll type for pll clk %ld\n",
__func__, pll_id);
--
2.39.1
1
0

[PATCH 4/7] dt-bindings: clock: rk3588: Add binding header for rk3588
by fatorangecat@189.cn 24 Jan '23
by fatorangecat@189.cn 24 Jan '23
24 Jan '23
From: Elaine Zhang <zhangqing(a)rock-chips.com>
files origin from kernel tree.
Signed-off-by: Zhang Yubing <yubing.zhang(a)rock-chips.com>
Signed-off-by: Elaine Zhang <zhangqing(a)rock-chips.com>
---
include/dt-bindings/clock/rk3588-cru.h | 1494 ++++++++++++++++++++++
include/dt-bindings/power/rk3588-power.h | 69 +
2 files changed, 1563 insertions(+)
create mode 100644 include/dt-bindings/clock/rk3588-cru.h
create mode 100644 include/dt-bindings/power/rk3588-power.h
diff --git a/include/dt-bindings/clock/rk3588-cru.h b/include/dt-bindings/clock/rk3588-cru.h
new file mode 100644
index 0000000000..87f35d8da5
--- /dev/null
+++ b/include/dt-bindings/clock/rk3588-cru.h
@@ -0,0 +1,1494 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co. Ltd.
+ * Author: Elaine Zhang <zhangqing(a)rock-chips.com>
+ */
+
+#ifndef _DT_BINDINGS_CLK_ROCKCHIP_RK3588_H
+#define _DT_BINDINGS_CLK_ROCKCHIP_RK3588_H
+
+/* cru-clocks indices */
+
+/* cru plls */
+#define PLL_B0PLL 1
+#define PLL_B1PLL 2
+#define PLL_LPLL 3
+#define PLL_V0PLL 4
+#define PLL_AUPLL 5
+#define PLL_CPLL 6
+#define PLL_GPLL 7
+#define PLL_NPLL 8
+#define PLL_PPLL 9
+#define ARMCLK_L 10
+#define ARMCLK_B01 11
+#define ARMCLK_B23 12
+
+/* cru clocks */
+#define PCLK_BIGCORE0_ROOT 20
+#define PCLK_BIGCORE0_PVTM 21
+#define PCLK_BIGCORE1_ROOT 22
+#define PCLK_BIGCORE1_PVTM 23
+#define PCLK_DSU_S_ROOT 24
+#define PCLK_DSU_ROOT 25
+#define PCLK_DSU_NS_ROOT 26
+#define PCLK_LITCORE_PVTM 27
+#define PCLK_DBG 28
+#define PCLK_DSU 29
+#define PCLK_S_DAPLITE 30
+#define PCLK_M_DAPLITE 31
+#define MBIST_MCLK_PDM1 32
+#define MBIST_CLK_ACDCDIG 33
+#define HCLK_I2S2_2CH 34
+#define HCLK_I2S3_2CH 35
+#define CLK_I2S2_2CH_SRC 36
+#define CLK_I2S2_2CH_FRAC 37
+#define CLK_I2S2_2CH 38
+#define MCLK_I2S2_2CH 39
+#define I2S2_2CH_MCLKOUT 40
+#define CLK_DAC_ACDCDIG 41
+#define CLK_I2S3_2CH_SRC 42
+#define CLK_I2S3_2CH_FRAC 43
+#define CLK_I2S3_2CH 44
+#define MCLK_I2S3_2CH 45
+#define I2S3_2CH_MCLKOUT 46
+#define PCLK_ACDCDIG 47
+#define HCLK_I2S0_8CH 48
+#define CLK_I2S0_8CH_TX_SRC 49
+#define CLK_I2S0_8CH_TX_FRAC 50
+#define MCLK_I2S0_8CH_TX 51
+#define CLK_I2S0_8CH_TX 52
+#define CLK_I2S0_8CH_RX_SRC 53
+#define CLK_I2S0_8CH_RX_FRAC 54
+#define MCLK_I2S0_8CH_RX 55
+#define CLK_I2S0_8CH_RX 56
+#define I2S0_8CH_MCLKOUT 57
+#define HCLK_PDM1 58
+#define MCLK_PDM1 59
+#define HCLK_AUDIO_ROOT 60
+#define PCLK_AUDIO_ROOT 61
+#define HCLK_SPDIF0 62
+#define CLK_SPDIF0_SRC 63
+#define CLK_SPDIF0_FRAC 64
+#define MCLK_SPDIF0 65
+#define CLK_SPDIF0 66
+#define CLK_SPDIF1 67
+#define HCLK_SPDIF1 68
+#define CLK_SPDIF1_SRC 69
+#define CLK_SPDIF1_FRAC 70
+#define MCLK_SPDIF1 71
+#define ACLK_AV1_ROOT 72
+#define ACLK_AV1 73
+#define PCLK_AV1_ROOT 74
+#define PCLK_AV1 75
+#define PCLK_MAILBOX0 76
+#define PCLK_MAILBOX1 77
+#define PCLK_MAILBOX2 78
+#define PCLK_PMU2 79
+#define PCLK_PMUCM0_INTMUX 80
+#define PCLK_DDRCM0_INTMUX 81
+#define PCLK_TOP 82
+#define PCLK_PWM1 83
+#define CLK_PWM1 84
+#define CLK_PWM1_CAPTURE 85
+#define PCLK_PWM2 86
+#define CLK_PWM2 87
+#define CLK_PWM2_CAPTURE 88
+#define PCLK_PWM3 89
+#define CLK_PWM3 90
+#define CLK_PWM3_CAPTURE 91
+#define PCLK_BUSTIMER0 92
+#define PCLK_BUSTIMER1 93
+#define CLK_BUS_TIMER_ROOT 94
+#define CLK_BUSTIMER0 95
+#define CLK_BUSTIMER1 96
+#define CLK_BUSTIMER2 97
+#define CLK_BUSTIMER3 98
+#define CLK_BUSTIMER4 99
+#define CLK_BUSTIMER5 100
+#define CLK_BUSTIMER6 101
+#define CLK_BUSTIMER7 102
+#define CLK_BUSTIMER8 103
+#define CLK_BUSTIMER9 104
+#define CLK_BUSTIMER10 105
+#define CLK_BUSTIMER11 106
+#define PCLK_WDT0 107
+#define TCLK_WDT0 108
+#define PCLK_CAN0 111
+#define CLK_CAN0 112
+#define PCLK_CAN1 113
+#define CLK_CAN1 114
+#define PCLK_CAN2 115
+#define CLK_CAN2 116
+#define ACLK_DECOM 117
+#define PCLK_DECOM 118
+#define DCLK_DECOM 119
+#define ACLK_DMAC0 120
+#define ACLK_DMAC1 121
+#define ACLK_DMAC2 122
+#define ACLK_BUS_ROOT 123
+#define ACLK_GIC 124
+#define PCLK_GPIO1 125
+#define DBCLK_GPIO1 126
+#define PCLK_GPIO2 127
+#define DBCLK_GPIO2 128
+#define PCLK_GPIO3 129
+#define DBCLK_GPIO3 130
+#define PCLK_GPIO4 131
+#define DBCLK_GPIO4 132
+#define PCLK_I2C1 133
+#define PCLK_I2C2 134
+#define PCLK_I2C3 135
+#define PCLK_I2C4 136
+#define PCLK_I2C5 137
+#define PCLK_I2C6 138
+#define PCLK_I2C7 139
+#define PCLK_I2C8 140
+#define CLK_I2C1 141
+#define CLK_I2C2 142
+#define CLK_I2C3 143
+#define CLK_I2C4 144
+#define CLK_I2C5 145
+#define CLK_I2C6 146
+#define CLK_I2C7 147
+#define CLK_I2C8 148
+#define PCLK_OTPC_NS 149
+#define CLK_OTPC_NS 150
+#define CLK_OTPC_ARB 151
+#define CLK_OTPC_AUTO_RD_G 152
+#define CLK_OTP_PHY_G 153
+#define PCLK_SARADC 156
+#define CLK_SARADC 157
+#define PCLK_SPI0 158
+#define PCLK_SPI1 159
+#define PCLK_SPI2 160
+#define PCLK_SPI3 161
+#define PCLK_SPI4 162
+#define CLK_SPI0 163
+#define CLK_SPI1 164
+#define CLK_SPI2 165
+#define CLK_SPI3 166
+#define CLK_SPI4 167
+#define ACLK_SPINLOCK 168
+#define PCLK_TSADC 169
+#define CLK_TSADC 170
+#define PCLK_UART1 171
+#define PCLK_UART2 172
+#define PCLK_UART3 173
+#define PCLK_UART4 174
+#define PCLK_UART5 175
+#define PCLK_UART6 176
+#define PCLK_UART7 177
+#define PCLK_UART8 178
+#define PCLK_UART9 179
+#define CLK_UART1_SRC 180
+#define CLK_UART1_FRAC 181
+#define CLK_UART1 182
+#define SCLK_UART1 183
+#define CLK_UART2_SRC 184
+#define CLK_UART2_FRAC 185
+#define CLK_UART2 186
+#define SCLK_UART2 187
+#define CLK_UART3_SRC 188
+#define CLK_UART3_FRAC 189
+#define CLK_UART3 190
+#define SCLK_UART3 191
+#define CLK_UART4_SRC 192
+#define CLK_UART4_FRAC 193
+#define CLK_UART4 194
+#define SCLK_UART4 195
+#define CLK_UART5_SRC 196
+#define CLK_UART5_FRAC 197
+#define CLK_UART5 198
+#define SCLK_UART5 199
+#define CLK_UART6_SRC 200
+#define CLK_UART6_FRAC 201
+#define CLK_UART6 202
+#define SCLK_UART6 203
+#define CLK_UART7_SRC 204
+#define CLK_UART7_FRAC 205
+#define CLK_UART7 206
+#define SCLK_UART7 207
+#define CLK_UART8_SRC 208
+#define CLK_UART8_FRAC 209
+#define CLK_UART8 210
+#define SCLK_UART8 211
+#define CLK_UART9_SRC 212
+#define CLK_UART9_FRAC 213
+#define CLK_UART9 214
+#define SCLK_UART9 215
+#define ACLK_CENTER_ROOT 216
+#define ACLK_CENTER_LOW_ROOT 217
+#define HCLK_CENTER_ROOT 218
+#define PCLK_CENTER_ROOT 219
+#define ACLK_DMA2DDR 220
+#define ACLK_DDR_SHAREMEM 221
+#define ACLK_CENTER_S200_ROOT 222
+#define ACLK_CENTER_S400_ROOT 223
+#define FCLK_DDR_CM0_CORE 224
+#define CLK_DDR_TIMER_ROOT 225
+#define CLK_DDR_TIMER0 226
+#define CLK_DDR_TIMER1 227
+#define TCLK_WDT_DDR 228
+#define CLK_DDR_CM0_RTC 228
+#define PCLK_WDT 230
+#define PCLK_TIMER 231
+#define PCLK_DMA2DDR 232
+#define PCLK_SHAREMEM 233
+#define CLK_50M_SRC 234
+#define CLK_100M_SRC 235
+#define CLK_150M_SRC 236
+#define CLK_200M_SRC 237
+#define CLK_250M_SRC 238
+#define CLK_300M_SRC 239
+#define CLK_350M_SRC 240
+#define CLK_400M_SRC 241
+#define CLK_450M_SRC 242
+#define CLK_500M_SRC 243
+#define CLK_600M_SRC 244
+#define CLK_650M_SRC 245
+#define CLK_700M_SRC 246
+#define CLK_800M_SRC 247
+#define CLK_1000M_SRC 248
+#define CLK_1200M_SRC 249
+#define ACLK_TOP_M300_ROOT 250
+#define ACLK_TOP_M500_ROOT 251
+#define ACLK_TOP_M400_ROOT 252
+#define ACLK_TOP_S200_ROOT 253
+#define ACLK_TOP_S400_ROOT 254
+#define CLK_MIPI_CAMARAOUT_M0 255
+#define CLK_MIPI_CAMARAOUT_M1 256
+#define CLK_MIPI_CAMARAOUT_M2 257
+#define CLK_MIPI_CAMARAOUT_M3 258
+#define CLK_MIPI_CAMARAOUT_M4 259
+#define MCLK_GMAC0_OUT 260
+#define REFCLKO25M_ETH0_OUT 261
+#define REFCLKO25M_ETH1_OUT 262
+#define CLK_CIFOUT_OUT 263
+#define PCLK_MIPI_DCPHY0 264
+#define PCLK_MIPI_DCPHY1 265
+#define PCLK_CSIPHY0 268
+#define PCLK_CSIPHY1 269
+#define ACLK_TOP_ROOT 270
+#define PCLK_TOP_ROOT 271
+#define ACLK_LOW_TOP_ROOT 272
+#define PCLK_CRU 273
+#define PCLK_GPU_ROOT 274
+#define CLK_GPU_SRC 275
+#define CLK_GPU 276
+#define CLK_GPU_COREGROUP 277
+#define CLK_GPU_STACKS 278
+#define PCLK_GPU_PVTM 279
+#define CLK_GPU_PVTM 280
+#define CLK_CORE_GPU_PVTM 281
+#define PCLK_GPU_GRF 282
+#define ACLK_ISP1_ROOT 283
+#define HCLK_ISP1_ROOT 284
+#define CLK_ISP1_CORE 285
+#define CLK_ISP1_CORE_MARVIN 286
+#define CLK_ISP1_CORE_VICAP 287
+#define ACLK_ISP1 288
+#define HCLK_ISP1 289
+#define ACLK_NPU1 290
+#define HCLK_NPU1 291
+#define ACLK_NPU2 292
+#define HCLK_NPU2 293
+#define HCLK_NPU_CM0_ROOT 294
+#define FCLK_NPU_CM0_CORE 295
+#define CLK_NPU_CM0_RTC 296
+#define PCLK_NPU_PVTM 297
+#define PCLK_NPU_GRF 298
+#define CLK_NPU_PVTM 299
+#define CLK_CORE_NPU_PVTM 300
+#define ACLK_NPU0 301
+#define HCLK_NPU0 302
+#define HCLK_NPU_ROOT 303
+#define CLK_NPU_DSU0 304
+#define PCLK_NPU_ROOT 305
+#define PCLK_NPU_TIMER 306
+#define CLK_NPUTIMER_ROOT 307
+#define CLK_NPUTIMER0 308
+#define CLK_NPUTIMER1 309
+#define PCLK_NPU_WDT 310
+#define TCLK_NPU_WDT 311
+#define HCLK_EMMC 312
+#define ACLK_EMMC 313
+#define CCLK_EMMC 314
+#define BCLK_EMMC 315
+#define TMCLK_EMMC 316
+#define SCLK_SFC 317
+#define HCLK_SFC 318
+#define HCLK_SFC_XIP 319
+#define HCLK_NVM_ROOT 320
+#define ACLK_NVM_ROOT 321
+#define CLK_GMAC0_PTP_REF 322
+#define CLK_GMAC1_PTP_REF 323
+#define CLK_GMAC_125M 324
+#define CLK_GMAC_50M 325
+#define ACLK_PHP_GIC_ITS 326
+#define ACLK_MMU_PCIE 327
+#define ACLK_MMU_PHP 328
+#define ACLK_PCIE_4L_DBI 329
+#define ACLK_PCIE_2L_DBI 330
+#define ACLK_PCIE_1L0_DBI 331
+#define ACLK_PCIE_1L1_DBI 332
+#define ACLK_PCIE_1L2_DBI 333
+#define ACLK_PCIE_4L_MSTR 334
+#define ACLK_PCIE_2L_MSTR 335
+#define ACLK_PCIE_1L0_MSTR 336
+#define ACLK_PCIE_1L1_MSTR 337
+#define ACLK_PCIE_1L2_MSTR 338
+#define ACLK_PCIE_4L_SLV 339
+#define ACLK_PCIE_2L_SLV 340
+#define ACLK_PCIE_1L0_SLV 341
+#define ACLK_PCIE_1L1_SLV 342
+#define ACLK_PCIE_1L2_SLV 343
+#define PCLK_PCIE_4L 344
+#define PCLK_PCIE_2L 345
+#define PCLK_PCIE_1L0 347
+#define PCLK_PCIE_1L1 348
+#define PCLK_PCIE_1L2 349
+#define CLK_PCIE_AUX0 350
+#define CLK_PCIE_AUX1 351
+#define CLK_PCIE_AUX2 352
+#define CLK_PCIE_AUX3 353
+#define CLK_PCIE_AUX4 354
+#define CLK_PIPEPHY0_REF 355
+#define CLK_PIPEPHY1_REF 356
+#define CLK_PIPEPHY2_REF 357
+#define PCLK_PHP_ROOT 358
+#define PCLK_GMAC0 359
+#define PCLK_GMAC1 360
+#define ACLK_PCIE_ROOT 361
+#define ACLK_PHP_ROOT 362
+#define ACLK_PCIE_BRIDGE 363
+#define ACLK_GMAC0 364
+#define ACLK_GMAC1 365
+#define CLK_PMALIVE0 366
+#define CLK_PMALIVE1 367
+#define CLK_PMALIVE2 368
+#define ACLK_SATA0 369
+#define ACLK_SATA1 370
+#define ACLK_SATA2 371
+#define CLK_RXOOB0 372
+#define CLK_RXOOB1 373
+#define CLK_RXOOB2 374
+#define ACLK_USB3OTG2 375
+#define SUSPEND_CLK_USB3OTG2 376
+#define REF_CLK_USB3OTG2 377
+#define CLK_UTMI_OTG2 378
+#define CLK_PIPEPHY0_PIPE_G 379
+#define CLK_PIPEPHY1_PIPE_G 380
+#define CLK_PIPEPHY2_PIPE_G 381
+#define CLK_PIPEPHY0_PIPE_ASIC_G 382
+#define CLK_PIPEPHY1_PIPE_ASIC_G 383
+#define CLK_PIPEPHY2_PIPE_ASIC_G 384
+#define CLK_PIPEPHY2_PIPE_U3_G 385
+#define CLK_PCIE1L2_PIPE 386
+#define CLK_PCIE4L_PIPE 387
+#define CLK_PCIE2L_PIPE 388
+#define PCLK_PCIE_COMBO_PIPE_PHY0 389
+#define PCLK_PCIE_COMBO_PIPE_PHY1 390
+#define PCLK_PCIE_COMBO_PIPE_PHY2 391
+#define PCLK_PCIE_COMBO_PIPE_PHY 392
+#define HCLK_RGA3_1 393
+#define ACLK_RGA3_1 394
+#define CLK_RGA3_1_CORE 395
+#define ACLK_RGA3_ROOT 396
+#define HCLK_RGA3_ROOT 397
+#define ACLK_RKVDEC_CCU 398
+#define HCLK_RKVDEC0 399
+#define ACLK_RKVDEC0 400
+#define CLK_RKVDEC0_CA 401
+#define CLK_RKVDEC0_HEVC_CA 402
+#define CLK_RKVDEC0_CORE 403
+#define HCLK_RKVDEC1 404
+#define ACLK_RKVDEC1 405
+#define CLK_RKVDEC1_CA 406
+#define CLK_RKVDEC1_HEVC_CA 407
+#define CLK_RKVDEC1_CORE 408
+#define HCLK_SDIO 409
+#define CCLK_SRC_SDIO 410
+#define ACLK_USB_ROOT 411
+#define HCLK_USB_ROOT 412
+#define HCLK_HOST0 413
+#define HCLK_HOST_ARB0 414
+#define HCLK_HOST1 415
+#define HCLK_HOST_ARB1 416
+#define ACLK_USB3OTG0 417
+#define SUSPEND_CLK_USB3OTG0 418
+#define REF_CLK_USB3OTG0 419
+#define ACLK_USB3OTG1 420
+#define SUSPEND_CLK_USB3OTG1 421
+#define REF_CLK_USB3OTG1 422
+#define UTMI_OHCI_CLK48_HOST0 423
+#define UTMI_OHCI_CLK48_HOST1 424
+#define HCLK_IEP2P0 425
+#define ACLK_IEP2P0 426
+#define CLK_IEP2P0_CORE 427
+#define ACLK_JPEG_ENCODER0 428
+#define HCLK_JPEG_ENCODER0 429
+#define ACLK_JPEG_ENCODER1 430
+#define HCLK_JPEG_ENCODER1 431
+#define ACLK_JPEG_ENCODER2 432
+#define HCLK_JPEG_ENCODER2 433
+#define ACLK_JPEG_ENCODER3 434
+#define HCLK_JPEG_ENCODER3 435
+#define ACLK_JPEG_DECODER 436
+#define HCLK_JPEG_DECODER 437
+#define HCLK_RGA2 438
+#define ACLK_RGA2 439
+#define CLK_RGA2_CORE 440
+#define HCLK_RGA3_0 441
+#define ACLK_RGA3_0 442
+#define CLK_RGA3_0_CORE 443
+#define ACLK_VDPU_ROOT 444
+#define ACLK_VDPU_LOW_ROOT 445
+#define HCLK_VDPU_ROOT 446
+#define ACLK_JPEG_DECODER_ROOT 447
+#define ACLK_VPU 448
+#define HCLK_VPU 449
+#define HCLK_RKVENC0_ROOT 450
+#define ACLK_RKVENC0_ROOT 451
+#define HCLK_RKVENC0 452
+#define ACLK_RKVENC0 453
+#define CLK_RKVENC0_CORE 454
+#define HCLK_RKVENC1_ROOT 455
+#define ACLK_RKVENC1_ROOT 456
+#define HCLK_RKVENC1 457
+#define ACLK_RKVENC1 458
+#define CLK_RKVENC1_CORE 459
+#define ICLK_CSIHOST01 460
+#define ICLK_CSIHOST0 461
+#define ICLK_CSIHOST1 462
+#define PCLK_CSI_HOST_0 463
+#define PCLK_CSI_HOST_1 464
+#define PCLK_CSI_HOST_2 465
+#define PCLK_CSI_HOST_3 466
+#define PCLK_CSI_HOST_4 467
+#define PCLK_CSI_HOST_5 468
+#define ACLK_FISHEYE0 469
+#define HCLK_FISHEYE0 470
+#define CLK_FISHEYE0_CORE 471
+#define ACLK_FISHEYE1 472
+#define HCLK_FISHEYE1 473
+#define CLK_FISHEYE1_CORE 474
+#define CLK_ISP0_CORE 475
+#define CLK_ISP0_CORE_MARVIN 476
+#define CLK_ISP0_CORE_VICAP 477
+#define ACLK_ISP0 478
+#define HCLK_ISP0 479
+#define ACLK_VI_ROOT 480
+#define HCLK_VI_ROOT 481
+#define PCLK_VI_ROOT 482
+#define DCLK_VICAP 483
+#define ACLK_VICAP 484
+#define HCLK_VICAP 485
+#define PCLK_DP0 486
+#define PCLK_DP1 487
+#define PCLK_S_DP0 488
+#define PCLK_S_DP1 489
+#define CLK_DP0 490
+#define CLK_DP1 491
+#define HCLK_HDCP_KEY0 492
+#define ACLK_HDCP0 493
+#define HCLK_HDCP0 494
+#define PCLK_HDCP0 495
+#define HCLK_I2S4_8CH 496
+#define ACLK_TRNG0 497
+#define PCLK_TRNG0 498
+#define ACLK_VO0_ROOT 499
+#define HCLK_VO0_ROOT 500
+#define HCLK_VO0_S_ROOT 501
+#define PCLK_VO0_ROOT 502
+#define PCLK_VO0_S_ROOT 503
+#define PCLK_VO0GRF 504
+#define CLK_I2S4_8CH_TX_SRC 505
+#define CLK_I2S4_8CH_TX_FRAC 506
+#define MCLK_I2S4_8CH_TX 507
+#define CLK_I2S4_8CH_TX 508
+#define HCLK_I2S8_8CH 510
+#define CLK_I2S8_8CH_TX_SRC 511
+#define CLK_I2S8_8CH_TX_FRAC 512
+#define MCLK_I2S8_8CH_TX 513
+#define CLK_I2S8_8CH_TX 514
+#define HCLK_SPDIF2_DP0 516
+#define CLK_SPDIF2_DP0_SRC 517
+#define CLK_SPDIF2_DP0_FRAC 518
+#define MCLK_SPDIF2_DP0 519
+#define CLK_SPDIF2_DP0 520
+#define MCLK_SPDIF2 521
+#define HCLK_SPDIF5_DP1 522
+#define CLK_SPDIF5_DP1_SRC 523
+#define CLK_SPDIF5_DP1_FRAC 524
+#define MCLK_SPDIF5_DP1 525
+#define CLK_SPDIF5_DP1 526
+#define MCLK_SPDIF5 527
+#define PCLK_EDP0 528
+#define CLK_EDP0_24M 529
+#define CLK_EDP0_200M 530
+#define PCLK_EDP1 531
+#define CLK_EDP1_24M 532
+#define CLK_EDP1_200M 533
+#define HCLK_HDCP_KEY1 534
+#define ACLK_HDCP1 535
+#define HCLK_HDCP1 536
+#define PCLK_HDCP1 537
+#define ACLK_HDMIRX 538
+#define PCLK_HDMIRX 539
+#define CLK_HDMIRX_REF 540
+#define CLK_HDMIRX_AUD_SRC 541
+#define CLK_HDMIRX_AUD_FRAC 542
+#define CLK_HDMIRX_AUD 543
+#define CLK_HDMIRX_AUD_P_MUX 544
+#define PCLK_HDMITX0 545
+#define CLK_HDMITX0_EARC 546
+#define CLK_HDMITX0_REF 547
+#define PCLK_HDMITX1 548
+#define CLK_HDMITX1_EARC 549
+#define CLK_HDMITX1_REF 550
+#define CLK_HDMITRX_REFSRC 551
+#define ACLK_TRNG1 552
+#define PCLK_TRNG1 553
+#define ACLK_HDCP1_ROOT 554
+#define ACLK_HDMIRX_ROOT 555
+#define HCLK_VO1_ROOT 556
+#define HCLK_VO1_S_ROOT 557
+#define PCLK_VO1_ROOT 558
+#define PCLK_VO1_S_ROOT 559
+#define PCLK_S_EDP0 560
+#define PCLK_S_EDP1 561
+#define PCLK_S_HDMIRX 562
+#define HCLK_I2S10_8CH 563
+#define CLK_I2S10_8CH_RX_SRC 564
+#define CLK_I2S10_8CH_RX_FRAC 565
+#define CLK_I2S10_8CH_RX 566
+#define MCLK_I2S10_8CH_RX 567
+#define HCLK_I2S7_8CH 568
+#define CLK_I2S7_8CH_RX_SRC 569
+#define CLK_I2S7_8CH_RX_FRAC 570
+#define CLK_I2S7_8CH_RX 571
+#define MCLK_I2S7_8CH_RX 572
+#define HCLK_I2S9_8CH 574
+#define CLK_I2S9_8CH_RX_SRC 575
+#define CLK_I2S9_8CH_RX_FRAC 576
+#define CLK_I2S9_8CH_RX 577
+#define MCLK_I2S9_8CH_RX 578
+#define CLK_I2S5_8CH_TX_SRC 579
+#define CLK_I2S5_8CH_TX_FRAC 580
+#define CLK_I2S5_8CH_TX 581
+#define MCLK_I2S5_8CH_TX 582
+#define HCLK_I2S5_8CH 584
+#define CLK_I2S6_8CH_TX_SRC 585
+#define CLK_I2S6_8CH_TX_FRAC 586
+#define CLK_I2S6_8CH_TX 587
+#define MCLK_I2S6_8CH_TX 588
+#define CLK_I2S6_8CH_RX_SRC 589
+#define CLK_I2S6_8CH_RX_FRAC 590
+#define CLK_I2S6_8CH_RX 591
+#define MCLK_I2S6_8CH_RX 592
+#define I2S6_8CH_MCLKOUT 593
+#define HCLK_I2S6_8CH 594
+#define HCLK_SPDIF3 595
+#define CLK_SPDIF3_SRC 596
+#define CLK_SPDIF3_FRAC 597
+#define CLK_SPDIF3 598
+#define MCLK_SPDIF3 599
+#define HCLK_SPDIF4 600
+#define CLK_SPDIF4_SRC 601
+#define CLK_SPDIF4_FRAC 602
+#define CLK_SPDIF4 603
+#define MCLK_SPDIF4 604
+#define HCLK_SPDIFRX0 605
+#define MCLK_SPDIFRX0 606
+#define HCLK_SPDIFRX1 607
+#define MCLK_SPDIFRX1 608
+#define HCLK_SPDIFRX2 609
+#define MCLK_SPDIFRX2 610
+#define ACLK_VO1USB_TOP_ROOT 611
+#define HCLK_VO1USB_TOP_ROOT 612
+#define CLK_HDMIHDP0 613
+#define CLK_HDMIHDP1 614
+#define PCLK_HDPTX0 615
+#define PCLK_HDPTX1 616
+#define PCLK_USBDPPHY0 617
+#define PCLK_USBDPPHY1 618
+#define ACLK_VOP_ROOT 619
+#define ACLK_VOP_LOW_ROOT 620
+#define HCLK_VOP_ROOT 621
+#define PCLK_VOP_ROOT 622
+#define HCLK_VOP 623
+#define ACLK_VOP 624
+#define DCLK_VOP0_SRC 625
+#define DCLK_VOP1_SRC 626
+#define DCLK_VOP2_SRC 627
+#define DCLK_VOP0 628
+#define DCLK_VOP1 629
+#define DCLK_VOP2 630
+#define DCLK_VOP3 631
+#define PCLK_DSIHOST0 632
+#define PCLK_DSIHOST1 633
+#define CLK_DSIHOST0 634
+#define CLK_DSIHOST1 635
+#define CLK_VOP_PMU 636
+#define ACLK_VOP_DOBY 637
+#define ACLK_VOP_SUB_SRC 638
+#define CLK_USBDP_PHY0_IMMORTAL 639
+#define CLK_USBDP_PHY1_IMMORTAL 640
+#define CLK_PMU0 641
+#define PCLK_PMU0 642
+#define PCLK_PMU0IOC 643
+#define PCLK_GPIO0 644
+#define DBCLK_GPIO0 645
+#define PCLK_I2C0 646
+#define CLK_I2C0 647
+#define HCLK_I2S1_8CH 648
+#define CLK_I2S1_8CH_TX_SRC 649
+#define CLK_I2S1_8CH_TX_FRAC 650
+#define CLK_I2S1_8CH_TX 651
+#define MCLK_I2S1_8CH_TX 652
+#define CLK_I2S1_8CH_RX_SRC 653
+#define CLK_I2S1_8CH_RX_FRAC 654
+#define CLK_I2S1_8CH_RX 655
+#define MCLK_I2S1_8CH_RX 656
+#define I2S1_8CH_MCLKOUT 657
+#define CLK_PMU1_50M_SRC 658
+#define CLK_PMU1_100M_SRC 659
+#define CLK_PMU1_200M_SRC 660
+#define CLK_PMU1_300M_SRC 661
+#define CLK_PMU1_400M_SRC 662
+#define HCLK_PMU1_ROOT 663
+#define PCLK_PMU1_ROOT 664
+#define PCLK_PMU0_ROOT 665
+#define HCLK_PMU_CM0_ROOT 666
+#define PCLK_PMU1 667
+#define CLK_DDR_FAIL_SAFE 668
+#define CLK_PMU1 669
+#define HCLK_PDM0 670
+#define MCLK_PDM0 671
+#define HCLK_VAD 672
+#define FCLK_PMU_CM0_CORE 673
+#define CLK_PMU_CM0_RTC 674
+#define PCLK_PMU1_IOC 675
+#define PCLK_PMU1PWM 676
+#define CLK_PMU1PWM 677
+#define CLK_PMU1PWM_CAPTURE 678
+#define PCLK_PMU1TIMER 679
+#define CLK_PMU1TIMER_ROOT 680
+#define CLK_PMU1TIMER0 681
+#define CLK_PMU1TIMER1 682
+#define CLK_UART0_SRC 683
+#define CLK_UART0_FRAC 684
+#define CLK_UART0 685
+#define SCLK_UART0 686
+#define PCLK_UART0 687
+#define PCLK_PMU1WDT 688
+#define TCLK_PMU1WDT 689
+#define CLK_CR_PARA 690
+#define CLK_GMAC0 691
+#define CLK_GMAC1 692
+#define CLK_USB2PHY_HDPTXRXPHY_REF 693
+#define CLK_USBDPPHY_MIPIDCPPHY_REF 694
+#define CLK_REF_PIPE_PHY0_OSC_SRC 695
+#define CLK_REF_PIPE_PHY1_OSC_SRC 696
+#define CLK_REF_PIPE_PHY2_OSC_SRC 697
+#define CLK_REF_PIPE_PHY0_PLL_SRC 698
+#define CLK_REF_PIPE_PHY1_PLL_SRC 699
+#define CLK_REF_PIPE_PHY2_PLL_SRC 700
+#define CLK_REF_PIPE_PHY0 701
+#define CLK_REF_PIPE_PHY1 702
+#define CLK_REF_PIPE_PHY2 703
+#define SCLK_SDIO_DRV 704
+#define SCLK_SDIO_SAMPLE 705
+#define SCLK_SDMMC_DRV 706
+#define SCLK_SDMMC_SAMPLE 707
+#define CLK_PCIE1L0_PIPE 708
+#define CLK_PCIE1L1_PIPE 709
+#define CLK_BIGCORE0_PVTM 710
+#define CLK_CORE_BIGCORE0_PVTM 711
+#define CLK_BIGCORE1_PVTM 712
+#define CLK_CORE_BIGCORE1_PVTM 713
+#define CLK_LITCORE_PVTM 714
+#define CLK_CORE_LITCORE_PVTM 715
+#define CLK_AUX16M_0 716
+#define CLK_AUX16M_1 717
+
+#define CLK_NR_CLKS (CLK_AUX16M_1 + 1)
+
+/********Name=SOFTRST_CON01,Offset=0xA04********/
+#define SRST_A_TOP_BIU 19
+#define SRST_P_TOP_BIU 20
+#define SRST_P_CSIPHY0 22
+#define SRST_CSIPHY0 23
+#define SRST_P_CSIPHY1 24
+#define SRST_CSIPHY1 25
+#define SRST_A_TOP_M500_BIU 31
+/********Name=SOFTRST_CON02,Offset=0xA08********/
+#define SRST_A_TOP_M400_BIU 32
+#define SRST_A_TOP_S200_BIU 33
+#define SRST_A_TOP_S400_BIU 34
+#define SRST_A_TOP_M300_BIU 35
+#define SRST_USBDP_COMBO_PHY0_INIT 40
+#define SRST_USBDP_COMBO_PHY0_CMN 41
+#define SRST_USBDP_COMBO_PHY0_LANE 42
+#define SRST_USBDP_COMBO_PHY0_PCS 43
+#define SRST_USBDP_COMBO_PHY1_INIT 47
+/********Name=SOFTRST_CON03,Offset=0xA0C********/
+#define SRST_USBDP_COMBO_PHY1_CMN 48
+#define SRST_USBDP_COMBO_PHY1_LANE 49
+#define SRST_USBDP_COMBO_PHY1_PCS 50
+#define SRST_DCPHY0 59
+#define SRST_P_MIPI_DCPHY0 62
+#define SRST_P_MIPI_DCPHY0_GRF 63
+/********Name=SOFTRST_CON04,Offset=0xA10********/
+#define SRST_DCPHY1 64
+#define SRST_P_MIPI_DCPHY1 67
+#define SRST_P_MIPI_DCPHY1_GRF 68
+#define SRST_P_APB2ASB_SLV_CDPHY 69
+#define SRST_P_APB2ASB_SLV_CSIPHY 70
+#define SRST_P_APB2ASB_SLV_VCCIO3_5 71
+#define SRST_P_APB2ASB_SLV_VCCIO6 72
+#define SRST_P_APB2ASB_SLV_EMMCIO 73
+#define SRST_P_APB2ASB_SLV_IOC_TOP 74
+#define SRST_P_APB2ASB_SLV_IOC_RIGHT 75
+/********Name=SOFTRST_CON05,Offset=0xA14********/
+#define SRST_P_CRU 80
+#define SRST_A_CHANNEL_SECURE2VO1USB 87
+#define SRST_A_CHANNEL_SECURE2CENTER 88
+#define SRST_H_CHANNEL_SECURE2VO1USB 94
+#define SRST_H_CHANNEL_SECURE2CENTER 95
+/********Name=SOFTRST_CON06,Offset=0xA18********/
+#define SRST_P_CHANNEL_SECURE2VO1USB 96
+#define SRST_P_CHANNEL_SECURE2CENTER 97
+/********Name=SOFTRST_CON07,Offset=0xA1C********/
+#define SRST_H_AUDIO_BIU 114
+#define SRST_P_AUDIO_BIU 115
+#define SRST_H_I2S0_8CH 116
+#define SRST_M_I2S0_8CH_TX 119
+#define SRST_M_I2S0_8CH_RX 122
+#define SRST_P_ACDCDIG 123
+#define SRST_H_I2S2_2CH 124
+#define SRST_H_I2S3_2CH 125
+/********Name=SOFTRST_CON08,Offset=0xA20********/
+#define SRST_M_I2S2_2CH 128
+#define SRST_M_I2S3_2CH 131
+#define SRST_DAC_ACDCDIG 132
+#define SRST_H_SPDIF0 142
+/********Name=SOFTRST_CON09,Offset=0xA24********/
+#define SRST_M_SPDIF0 145
+#define SRST_H_SPDIF1 146
+#define SRST_M_SPDIF1 149
+#define SRST_H_PDM1 150
+#define SRST_PDM1 151
+/********Name=SOFTRST_CON10,Offset=0xA28********/
+#define SRST_A_BUS_BIU 161
+#define SRST_P_BUS_BIU 162
+#define SRST_A_GIC 163
+#define SRST_A_GIC_DBG 164
+#define SRST_A_DMAC0 165
+#define SRST_A_DMAC1 166
+#define SRST_A_DMAC2 167
+#define SRST_P_I2C1 168
+#define SRST_P_I2C2 169
+#define SRST_P_I2C3 170
+#define SRST_P_I2C4 171
+#define SRST_P_I2C5 172
+#define SRST_P_I2C6 173
+#define SRST_P_I2C7 174
+#define SRST_P_I2C8 175
+/********Name=SOFTRST_CON11,Offset=0xA2C********/
+#define SRST_I2C1 176
+#define SRST_I2C2 177
+#define SRST_I2C3 178
+#define SRST_I2C4 179
+#define SRST_I2C5 180
+#define SRST_I2C6 181
+#define SRST_I2C7 182
+#define SRST_I2C8 183
+#define SRST_P_CAN0 184
+#define SRST_CAN0 185
+#define SRST_P_CAN1 186
+#define SRST_CAN1 187
+#define SRST_P_CAN2 188
+#define SRST_CAN2 189
+#define SRST_P_SARADC 190
+/********Name=SOFTRST_CON12,Offset=0xA30********/
+#define SRST_P_TSADC 192
+#define SRST_TSADC 193
+#define SRST_P_UART1 194
+#define SRST_P_UART2 195
+#define SRST_P_UART3 196
+#define SRST_P_UART4 197
+#define SRST_P_UART5 198
+#define SRST_P_UART6 199
+#define SRST_P_UART7 200
+#define SRST_P_UART8 201
+#define SRST_P_UART9 202
+#define SRST_S_UART1 205
+/********Name=SOFTRST_CON13,Offset=0xA34********/
+#define SRST_S_UART2 208
+#define SRST_S_UART3 211
+#define SRST_S_UART4 214
+#define SRST_S_UART5 217
+#define SRST_S_UART6 220
+#define SRST_S_UART7 223
+/********Name=SOFTRST_CON14,Offset=0xA38********/
+#define SRST_S_UART8 226
+#define SRST_S_UART9 229
+#define SRST_P_SPI0 230
+#define SRST_P_SPI1 231
+#define SRST_P_SPI2 232
+#define SRST_P_SPI3 233
+#define SRST_P_SPI4 234
+#define SRST_SPI0 235
+#define SRST_SPI1 236
+#define SRST_SPI2 237
+#define SRST_SPI3 238
+#define SRST_SPI4 239
+/********Name=SOFTRST_CON15,Offset=0xA3C********/
+#define SRST_P_WDT0 240
+#define SRST_T_WDT0 241
+#define SRST_P_SYS_GRF 242
+#define SRST_P_PWM1 243
+#define SRST_PWM1 244
+#define SRST_P_PWM2 246
+#define SRST_PWM2 247
+#define SRST_P_PWM3 249
+#define SRST_PWM3 250
+#define SRST_P_BUSTIMER0 252
+#define SRST_P_BUSTIMER1 253
+#define SRST_BUSTIMER0 255
+/********Name=SOFTRST_CON16,Offset=0xA40********/
+#define SRST_BUSTIMER1 256
+#define SRST_BUSTIMER2 257
+#define SRST_BUSTIMER3 258
+#define SRST_BUSTIMER4 259
+#define SRST_BUSTIMER5 260
+#define SRST_BUSTIMER6 261
+#define SRST_BUSTIMER7 262
+#define SRST_BUSTIMER8 263
+#define SRST_BUSTIMER9 264
+#define SRST_BUSTIMER10 265
+#define SRST_BUSTIMER11 266
+#define SRST_P_MAILBOX0 267
+#define SRST_P_MAILBOX1 268
+#define SRST_P_MAILBOX2 269
+#define SRST_P_GPIO1 270
+#define SRST_GPIO1 271
+/********Name=SOFTRST_CON17,Offset=0xA44********/
+#define SRST_P_GPIO2 272
+#define SRST_GPIO2 273
+#define SRST_P_GPIO3 274
+#define SRST_GPIO3 275
+#define SRST_P_GPIO4 276
+#define SRST_GPIO4 277
+#define SRST_A_DECOM 278
+#define SRST_P_DECOM 279
+#define SRST_D_DECOM 280
+#define SRST_P_TOP 281
+#define SRST_A_GICADB_GIC2CORE_BUS 283
+#define SRST_P_DFT2APB 284
+#define SRST_P_APB2ASB_MST_TOP 285
+#define SRST_P_APB2ASB_MST_CDPHY 286
+#define SRST_P_APB2ASB_MST_BOT_RIGHT 287
+/********Name=SOFTRST_CON18,Offset=0xA48********/
+#define SRST_P_APB2ASB_MST_IOC_TOP 288
+#define SRST_P_APB2ASB_MST_IOC_RIGHT 289
+#define SRST_P_APB2ASB_MST_CSIPHY 290
+#define SRST_P_APB2ASB_MST_VCCIO3_5 291
+#define SRST_P_APB2ASB_MST_VCCIO6 292
+#define SRST_P_APB2ASB_MST_EMMCIO 293
+#define SRST_A_SPINLOCK 294
+#define SRST_P_OTPC_NS 297
+#define SRST_OTPC_NS 298
+#define SRST_OTPC_ARB 299
+/********Name=SOFTRST_CON19,Offset=0xA4C********/
+#define SRST_P_BUSIOC 304
+#define SRST_P_PMUCM0_INTMUX 308
+#define SRST_P_DDRCM0_INTMUX 309
+/********Name=SOFTRST_CON20,Offset=0xA50********/
+#define SRST_P_DDR_DFICTL_CH0 320
+#define SRST_P_DDR_MON_CH0 321
+#define SRST_P_DDR_STANDBY_CH0 322
+#define SRST_P_DDR_UPCTL_CH0 323
+#define SRST_TM_DDR_MON_CH0 324
+#define SRST_P_DDR_GRF_CH01 325
+#define SRST_DFI_CH0 326
+#define SRST_SBR_CH0 327
+#define SRST_DDR_UPCTL_CH0 328
+#define SRST_DDR_DFICTL_CH0 329
+#define SRST_DDR_MON_CH0 330
+#define SRST_DDR_STANDBY_CH0 331
+#define SRST_A_DDR_UPCTL_CH0 332
+#define SRST_P_DDR_DFICTL_CH1 333
+#define SRST_P_DDR_MON_CH1 334
+#define SRST_P_DDR_STANDBY_CH1 335
+/********Name=SOFTRST_CON21,Offset=0xA54********/
+#define SRST_P_DDR_UPCTL_CH1 336
+#define SRST_TM_DDR_MON_CH1 337
+#define SRST_DFI_CH1 338
+#define SRST_SBR_CH1 339
+#define SRST_DDR_UPCTL_CH1 340
+#define SRST_DDR_DFICTL_CH1 341
+#define SRST_DDR_MON_CH1 342
+#define SRST_DDR_STANDBY_CH1 343
+#define SRST_A_DDR_UPCTL_CH1 344
+#define SRST_A_DDR01_MSCH0 349
+#define SRST_A_DDR01_RS_MSCH0 350
+#define SRST_A_DDR01_FRS_MSCH0 351
+/********Name=SOFTRST_CON22,Offset=0xA58********/
+#define SRST_A_DDR01_SCRAMBLE0 352
+#define SRST_A_DDR01_FRS_SCRAMBLE0 353
+#define SRST_A_DDR01_MSCH1 354
+#define SRST_A_DDR01_RS_MSCH1 355
+#define SRST_A_DDR01_FRS_MSCH1 356
+#define SRST_A_DDR01_SCRAMBLE1 357
+#define SRST_A_DDR01_FRS_SCRAMBLE1 358
+#define SRST_P_DDR01_MSCH0 359
+#define SRST_P_DDR01_MSCH1 360
+/********Name=SOFTRST_CON23,Offset=0xA5C********/
+#define SRST_P_DDR_DFICTL_CH2 368
+#define SRST_P_DDR_MON_CH2 369
+#define SRST_P_DDR_STANDBY_CH2 370
+#define SRST_P_DDR_UPCTL_CH2 371
+#define SRST_TM_DDR_MON_CH2 372
+#define SRST_P_DDR_GRF_CH23 373
+#define SRST_DFI_CH2 374
+#define SRST_SBR_CH2 375
+#define SRST_DDR_UPCTL_CH2 376
+#define SRST_DDR_DFICTL_CH2 377
+#define SRST_DDR_MON_CH2 378
+#define SRST_DDR_STANDBY_CH2 379
+#define SRST_A_DDR_UPCTL_CH2 380
+#define SRST_P_DDR_DFICTL_CH3 381
+#define SRST_P_DDR_MON_CH3 382
+#define SRST_P_DDR_STANDBY_CH3 383
+/********Name=SOFTRST_CON24,Offset=0xA60********/
+#define SRST_P_DDR_UPCTL_CH3 384
+#define SRST_TM_DDR_MON_CH3 385
+#define SRST_DFI_CH3 386
+#define SRST_SBR_CH3 387
+#define SRST_DDR_UPCTL_CH3 388
+#define SRST_DDR_DFICTL_CH3 389
+#define SRST_DDR_MON_CH3 390
+#define SRST_DDR_STANDBY_CH3 391
+#define SRST_A_DDR_UPCTL_CH3 392
+#define SRST_A_DDR23_MSCH2 397
+#define SRST_A_DDR23_RS_MSCH2 398
+#define SRST_A_DDR23_FRS_MSCH2 399
+/********Name=SOFTRST_CON25,Offset=0xA64********/
+#define SRST_A_DDR23_SCRAMBLE2 400
+#define SRST_A_DDR23_FRS_SCRAMBLE2 401
+#define SRST_A_DDR23_MSCH3 402
+#define SRST_A_DDR23_RS_MSCH3 403
+#define SRST_A_DDR23_FRS_MSCH3 404
+#define SRST_A_DDR23_SCRAMBLE3 405
+#define SRST_A_DDR23_FRS_SCRAMBLE3 406
+#define SRST_P_DDR23_MSCH2 407
+#define SRST_P_DDR23_MSCH3 408
+/********Name=SOFTRST_CON26,Offset=0xA68********/
+#define SRST_ISP1 419
+#define SRST_ISP1_VICAP 420
+#define SRST_A_ISP1_BIU 422
+#define SRST_H_ISP1_BIU 424
+/********Name=SOFTRST_CON27,Offset=0xA6C********/
+#define SRST_A_RKNN1 432
+#define SRST_A_RKNN1_BIU 433
+#define SRST_H_RKNN1 434
+#define SRST_H_RKNN1_BIU 435
+/********Name=SOFTRST_CON28,Offset=0xA70********/
+#define SRST_A_RKNN2 448
+#define SRST_A_RKNN2_BIU 449
+#define SRST_H_RKNN2 450
+#define SRST_H_RKNN2_BIU 451
+/********Name=SOFTRST_CON29,Offset=0xA74********/
+#define SRST_A_RKNN_DSU0 467
+#define SRST_P_NPUTOP_BIU 469
+#define SRST_P_NPU_TIMER 470
+#define SRST_NPUTIMER0 472
+#define SRST_NPUTIMER1 473
+#define SRST_P_NPU_WDT 474
+#define SRST_T_NPU_WDT 475
+#define SRST_P_NPU_PVTM 476
+#define SRST_P_NPU_GRF 477
+#define SRST_NPU_PVTM 478
+/********Name=SOFTRST_CON30,Offset=0xA78********/
+#define SRST_NPU_PVTPLL 480
+#define SRST_H_NPU_CM0_BIU 482
+#define SRST_F_NPU_CM0_CORE 483
+#define SRST_T_NPU_CM0_JTAG 484
+#define SRST_A_RKNN0 486
+#define SRST_A_RKNN0_BIU 487
+#define SRST_H_RKNN0 488
+#define SRST_H_RKNN0_BIU 489
+/********Name=SOFTRST_CON31,Offset=0xA7C********/
+#define SRST_H_NVM_BIU 498
+#define SRST_A_NVM_BIU 499
+#define SRST_H_EMMC 500
+#define SRST_A_EMMC 501
+#define SRST_C_EMMC 502
+#define SRST_B_EMMC 503
+#define SRST_T_EMMC 504
+#define SRST_S_SFC 505
+#define SRST_H_SFC 506
+#define SRST_H_SFC_XIP 507
+/********Name=SOFTRST_CON32,Offset=0xA80********/
+#define SRST_P_GRF 513
+#define SRST_P_DEC_BIU 514
+#define SRST_P_PHP_BIU 517
+#define SRST_A_PCIE_GRIDGE 520
+#define SRST_A_PHP_BIU 521
+#define SRST_A_GMAC0 522
+#define SRST_A_GMAC1 523
+#define SRST_A_PCIE_BIU 524
+#define SRST_PCIE0_POWER_UP 525
+#define SRST_PCIE1_POWER_UP 526
+#define SRST_PCIE2_POWER_UP 527
+/********Name=SOFTRST_CON33,Offset=0xA84********/
+#define SRST_PCIE3_POWER_UP 528
+#define SRST_PCIE4_POWER_UP 529
+#define SRST_P_PCIE0 540
+#define SRST_P_PCIE1 541
+#define SRST_P_PCIE2 542
+#define SRST_P_PCIE3 543
+/********Name=SOFTRST_CON34,Offset=0xA88********/
+#define SRST_P_PCIE4 544
+#define SRST_A_PHP_GIC_ITS 550
+#define SRST_A_MMU_PCIE 551
+#define SRST_A_MMU_PHP 552
+#define SRST_A_MMU_BIU 553
+/********Name=SOFTRST_CON35,Offset=0xA8C********/
+#define SRST_A_USB3OTG2 567
+/********Name=SOFTRST_CON37,Offset=0xA94********/
+#define SRST_PMALIVE0 596
+#define SRST_PMALIVE1 597
+#define SRST_PMALIVE2 598
+#define SRST_A_SATA0 599
+#define SRST_A_SATA1 600
+#define SRST_A_SATA2 601
+#define SRST_RXOOB0 602
+#define SRST_RXOOB1 603
+#define SRST_RXOOB2 604
+#define SRST_ASIC0 605
+#define SRST_ASIC1 606
+#define SRST_ASIC2 607
+/********Name=SOFTRST_CON40,Offset=0xAA0********/
+#define SRST_A_RKVDEC_CCU 642
+#define SRST_H_RKVDEC0 643
+#define SRST_A_RKVDEC0 644
+#define SRST_H_RKVDEC0_BIU 645
+#define SRST_A_RKVDEC0_BIU 646
+#define SRST_RKVDEC0_CA 647
+#define SRST_RKVDEC0_HEVC_CA 648
+#define SRST_RKVDEC0_CORE 649
+/********Name=SOFTRST_CON41,Offset=0xAA4********/
+#define SRST_H_RKVDEC1 658
+#define SRST_A_RKVDEC1 659
+#define SRST_H_RKVDEC1_BIU 660
+#define SRST_A_RKVDEC1_BIU 661
+#define SRST_RKVDEC1_CA 662
+#define SRST_RKVDEC1_HEVC_CA 663
+#define SRST_RKVDEC1_CORE 664
+/********Name=SOFTRST_CON42,Offset=0xAA8********/
+#define SRST_A_USB_BIU 674
+#define SRST_H_USB_BIU 675
+#define SRST_A_USB3OTG0 676
+#define SRST_A_USB3OTG1 679
+#define SRST_H_HOST0 682
+#define SRST_H_HOST_ARB0 683
+#define SRST_H_HOST1 684
+#define SRST_H_HOST_ARB1 685
+#define SRST_A_USB_GRF 686
+#define SRST_C_USB2P0_HOST0 687
+/********Name=SOFTRST_CON43,Offset=0xAAC********/
+#define SRST_C_USB2P0_HOST1 688
+#define SRST_HOST_UTMI0 689
+#define SRST_HOST_UTMI1 690
+/********Name=SOFTRST_CON44,Offset=0xAB0********/
+#define SRST_A_VDPU_BIU 708
+#define SRST_A_VDPU_LOW_BIU 709
+#define SRST_H_VDPU_BIU 710
+#define SRST_A_JPEG_DECODER_BIU 711
+#define SRST_A_VPU 712
+#define SRST_H_VPU 713
+#define SRST_A_JPEG_ENCODER0 714
+#define SRST_H_JPEG_ENCODER0 715
+#define SRST_A_JPEG_ENCODER1 716
+#define SRST_H_JPEG_ENCODER1 717
+#define SRST_A_JPEG_ENCODER2 718
+#define SRST_H_JPEG_ENCODER2 719
+/********Name=SOFTRST_CON45,Offset=0xAB4********/
+#define SRST_A_JPEG_ENCODER3 720
+#define SRST_H_JPEG_ENCODER3 721
+#define SRST_A_JPEG_DECODER 722
+#define SRST_H_JPEG_DECODER 723
+#define SRST_H_IEP2P0 724
+#define SRST_A_IEP2P0 725
+#define SRST_IEP2P0_CORE 726
+#define SRST_H_RGA2 727
+#define SRST_A_RGA2 728
+#define SRST_RGA2_CORE 729
+#define SRST_H_RGA3_0 730
+#define SRST_A_RGA3_0 731
+#define SRST_RGA3_0_CORE 732
+/********Name=SOFTRST_CON47,Offset=0xABC********/
+#define SRST_H_RKVENC0_BIU 754
+#define SRST_A_RKVENC0_BIU 755
+#define SRST_H_RKVENC0 756
+#define SRST_A_RKVENC0 757
+#define SRST_RKVENC0_CORE 758
+/********Name=SOFTRST_CON48,Offset=0xAC0********/
+#define SRST_H_RKVENC1_BIU 770
+#define SRST_A_RKVENC1_BIU 771
+#define SRST_H_RKVENC1 772
+#define SRST_A_RKVENC1 773
+#define SRST_RKVENC1_CORE 774
+/********Name=SOFTRST_CON49,Offset=0xAC4********/
+#define SRST_A_VI_BIU 787
+#define SRST_H_VI_BIU 788
+#define SRST_P_VI_BIU 789
+#define SRST_D_VICAP 790
+#define SRST_A_VICAP 791
+#define SRST_H_VICAP 792
+#define SRST_ISP0 794
+#define SRST_ISP0_VICAP 795
+/********Name=SOFTRST_CON50,Offset=0xAC8********/
+#define SRST_FISHEYE0 800
+#define SRST_FISHEYE1 803
+#define SRST_P_CSI_HOST_0 804
+#define SRST_P_CSI_HOST_1 805
+#define SRST_P_CSI_HOST_2 806
+#define SRST_P_CSI_HOST_3 807
+#define SRST_P_CSI_HOST_4 808
+#define SRST_P_CSI_HOST_5 809
+/********Name=SOFTRST_CON51,Offset=0xACC********/
+#define SRST_CSIHOST0_VICAP 820
+#define SRST_CSIHOST1_VICAP 821
+#define SRST_CSIHOST2_VICAP 822
+#define SRST_CSIHOST3_VICAP 823
+#define SRST_CSIHOST4_VICAP 824
+#define SRST_CSIHOST5_VICAP 825
+#define SRST_CIFIN 829
+/********Name=SOFTRST_CON52,Offset=0xAD0********/
+#define SRST_A_VOP_BIU 836
+#define SRST_A_VOP_LOW_BIU 837
+#define SRST_H_VOP_BIU 838
+#define SRST_P_VOP_BIU 839
+#define SRST_H_VOP 840
+#define SRST_A_VOP 841
+#define SRST_D_VOP0 845
+#define SRST_D_VOP2HDMI_BRIDGE0 846
+#define SRST_D_VOP2HDMI_BRIDGE1 847
+/********Name=SOFTRST_CON53,Offset=0xAD4********/
+#define SRST_D_VOP1 848
+#define SRST_D_VOP2 849
+#define SRST_D_VOP3 850
+#define SRST_P_VOPGRF 851
+#define SRST_P_DSIHOST0 852
+#define SRST_P_DSIHOST1 853
+#define SRST_DSIHOST0 854
+#define SRST_DSIHOST1 855
+#define SRST_VOP_PMU 856
+#define SRST_P_VOP_CHANNEL_BIU 857
+/********Name=SOFTRST_CON55,Offset=0xADC********/
+#define SRST_H_VO0_BIU 885
+#define SRST_H_VO0_S_BIU 886
+#define SRST_P_VO0_BIU 887
+#define SRST_P_VO0_S_BIU 888
+#define SRST_A_HDCP0_BIU 889
+#define SRST_P_VO0GRF 890
+#define SRST_H_HDCP_KEY0 891
+#define SRST_A_HDCP0 892
+#define SRST_H_HDCP0 893
+#define SRST_HDCP0 895
+/********Name=SOFTRST_CON56,Offset=0xAE0********/
+#define SRST_P_TRNG0 897
+#define SRST_DP0 904
+#define SRST_DP1 905
+#define SRST_H_I2S4_8CH 906
+#define SRST_M_I2S4_8CH_TX 909
+#define SRST_H_I2S8_8CH 910
+/********Name=SOFTRST_CON57,Offset=0xAE4********/
+#define SRST_M_I2S8_8CH_TX 913
+#define SRST_H_SPDIF2_DP0 914
+#define SRST_M_SPDIF2_DP0 918
+#define SRST_H_SPDIF5_DP1 919
+#define SRST_M_SPDIF5_DP1 923
+/********Name=SOFTRST_CON59,Offset=0xAEC********/
+#define SRST_A_HDCP1_BIU 950
+#define SRST_A_VO1_BIU 952
+#define SRST_H_VOP1_BIU 953
+#define SRST_H_VOP1_S_BIU 954
+#define SRST_P_VOP1_BIU 955
+#define SRST_P_VO1GRF 956
+#define SRST_P_VO1_S_BIU 957
+/********Name=SOFTRST_CON60,Offset=0xAF0********/
+#define SRST_H_I2S7_8CH 960
+#define SRST_M_I2S7_8CH_RX 963
+#define SRST_H_HDCP_KEY1 964
+#define SRST_A_HDCP1 965
+#define SRST_H_HDCP1 966
+#define SRST_HDCP1 968
+#define SRST_P_TRNG1 970
+#define SRST_P_HDMITX0 971
+/********Name=SOFTRST_CON61,Offset=0xAF4********/
+#define SRST_HDMITX0_REF 976
+#define SRST_P_HDMITX1 978
+#define SRST_HDMITX1_REF 983
+#define SRST_A_HDMIRX 985
+#define SRST_P_HDMIRX 986
+#define SRST_HDMIRX_REF 987
+/********Name=SOFTRST_CON62,Offset=0xAF8********/
+#define SRST_P_EDP0 992
+#define SRST_EDP0_24M 993
+#define SRST_P_EDP1 995
+#define SRST_EDP1_24M 996
+#define SRST_M_I2S5_8CH_TX 1000
+#define SRST_H_I2S5_8CH 1004
+#define SRST_M_I2S6_8CH_TX 1007
+/********Name=SOFTRST_CON63,Offset=0xAFC********/
+#define SRST_M_I2S6_8CH_RX 1010
+#define SRST_H_I2S6_8CH 1011
+#define SRST_H_SPDIF3 1012
+#define SRST_M_SPDIF3 1015
+#define SRST_H_SPDIF4 1016
+#define SRST_M_SPDIF4 1019
+#define SRST_H_SPDIFRX0 1020
+#define SRST_M_SPDIFRX0 1021
+#define SRST_H_SPDIFRX1 1022
+#define SRST_M_SPDIFRX1 1023
+/********Name=SOFTRST_CON64,Offset=0xB00********/
+#define SRST_H_SPDIFRX2 1024
+#define SRST_M_SPDIFRX2 1025
+#define SRST_LINKSYM_HDMITXPHY0 1036
+#define SRST_LINKSYM_HDMITXPHY1 1037
+#define SRST_VO1_BRIDGE0 1038
+#define SRST_VO1_BRIDGE1 1039
+/********Name=SOFTRST_CON65,Offset=0xB04********/
+#define SRST_H_I2S9_8CH 1040
+#define SRST_M_I2S9_8CH_RX 1043
+#define SRST_H_I2S10_8CH 1044
+#define SRST_M_I2S10_8CH_RX 1047
+#define SRST_P_S_HDMIRX 1048
+/********Name=SOFTRST_CON66,Offset=0xB08********/
+#define SRST_GPU 1060
+#define SRST_SYS_GPU 1061
+#define SRST_A_S_GPU_BIU 1064
+#define SRST_A_M0_GPU_BIU 1065
+#define SRST_A_M1_GPU_BIU 1066
+#define SRST_A_M2_GPU_BIU 1067
+#define SRST_A_M3_GPU_BIU 1068
+#define SRST_P_GPU_BIU 1070
+#define SRST_P_GPU_PVTM 1071
+/********Name=SOFTRST_CON67,Offset=0xB0C********/
+#define SRST_GPU_PVTM 1072
+#define SRST_P_GPU_GRF 1074
+#define SRST_GPU_PVTPLL 1075
+#define SRST_GPU_JTAG 1076
+/********Name=SOFTRST_CON68,Offset=0xB10********/
+#define SRST_A_AV1_BIU 1089
+#define SRST_A_AV1 1090
+#define SRST_P_AV1_BIU 1092
+#define SRST_P_AV1 1093
+/********Name=SOFTRST_CON69,Offset=0xB14********/
+#define SRST_A_DDR_BIU 1108
+#define SRST_A_DMA2DDR 1109
+#define SRST_A_DDR_SHAREMEM 1110
+#define SRST_A_DDR_SHAREMEM_BIU 1111
+#define SRST_A_CENTER_S200_BIU 1114
+#define SRST_A_CENTER_S400_BIU 1115
+#define SRST_H_AHB2APB 1116
+#define SRST_H_CENTER_BIU 1117
+#define SRST_F_DDR_CM0_CORE 1118
+/********Name=SOFTRST_CON70,Offset=0xB18********/
+#define SRST_DDR_TIMER0 1120
+#define SRST_DDR_TIMER1 1121
+#define SRST_T_WDT_DDR 1122
+#define SRST_T_DDR_CM0_JTAG 1123
+#define SRST_P_CENTER_GRF 1125
+#define SRST_P_AHB2APB 1126
+#define SRST_P_WDT 1127
+#define SRST_P_TIMER 1128
+#define SRST_P_DMA2DDR 1129
+#define SRST_P_SHAREMEM 1130
+#define SRST_P_CENTER_BIU 1131
+#define SRST_P_CENTER_CHANNEL_BIU 1132
+/********Name=SOFTRST_CON72,Offset=0xB20********/
+#define SRST_P_USBDPGRF0 1153
+#define SRST_P_USBDPPHY0 1154
+#define SRST_P_USBDPGRF1 1155
+#define SRST_P_USBDPPHY1 1156
+#define SRST_P_HDPTX0 1157
+#define SRST_P_HDPTX1 1158
+#define SRST_P_APB2ASB_SLV_BOT_RIGHT 1159
+#define SRST_P_USB2PHY_U3_0_GRF0 1160
+#define SRST_P_USB2PHY_U3_1_GRF0 1161
+#define SRST_P_USB2PHY_U2_0_GRF0 1162
+#define SRST_P_USB2PHY_U2_1_GRF0 1163
+#define SRST_HDPTX0_ROPLL 1164
+#define SRST_HDPTX0_LCPLL 1165
+#define SRST_HDPTX0 1166
+#define SRST_HDPTX1_ROPLL 1167
+/********Name=SOFTRST_CON73,Offset=0xB24********/
+#define SRST_HDPTX1_LCPLL 1168
+#define SRST_HDPTX1 1169
+#define SRST_HDPTX0_HDMIRXPHY_SET 1170
+#define SRST_USBDP_COMBO_PHY0 1171
+#define SRST_USBDP_COMBO_PHY0_LCPLL 1172
+#define SRST_USBDP_COMBO_PHY0_ROPLL 1173
+#define SRST_USBDP_COMBO_PHY0_PCS_HS 1174
+#define SRST_USBDP_COMBO_PHY1 1175
+#define SRST_USBDP_COMBO_PHY1_LCPLL 1176
+#define SRST_USBDP_COMBO_PHY1_ROPLL 1177
+#define SRST_USBDP_COMBO_PHY1_PCS_HS 1178
+#define SRST_HDMIHDP0 1180
+#define SRST_HDMIHDP1 1181
+/********Name=SOFTRST_CON74,Offset=0xB28********/
+#define SRST_A_VO1USB_TOP_BIU 1185
+#define SRST_H_VO1USB_TOP_BIU 1187
+/********Name=SOFTRST_CON75,Offset=0xB2C********/
+#define SRST_H_SDIO_BIU 1201
+#define SRST_H_SDIO 1202
+#define SRST_SDIO 1203
+/********Name=SOFTRST_CON76,Offset=0xB30********/
+#define SRST_H_RGA3_BIU 1218
+#define SRST_A_RGA3_BIU 1219
+#define SRST_H_RGA3_1 1220
+#define SRST_A_RGA3_1 1221
+#define SRST_RGA3_1_CORE 1222
+/********Name=SOFTRST_CON77,Offset=0xB34********/
+#define SRST_REF_PIPE_PHY0 1238
+#define SRST_REF_PIPE_PHY1 1239
+#define SRST_REF_PIPE_PHY2 1240
+
+/********Name=PHPTOPSOFTRST_CON0,Offset=0x8A00********/
+#define SRST_P_PHPTOP_CRU 131073
+#define SRST_P_PCIE2_GRF0 131074
+#define SRST_P_PCIE2_GRF1 131075
+#define SRST_P_PCIE2_GRF2 131076
+#define SRST_P_PCIE2_PHY0 131077
+#define SRST_P_PCIE2_PHY1 131078
+#define SRST_P_PCIE2_PHY2 131079
+#define SRST_P_PCIE3_PHY 131080
+#define SRST_P_APB2ASB_SLV_CHIP_TOP 131081
+#define SRST_PCIE30_PHY 131082
+
+/********Name=PMU1SOFTRST_CON00,Offset=0x30A00********/
+#define SRST_H_PMU1_BIU 786442
+#define SRST_P_PMU1_BIU 786443
+#define SRST_H_PMU_CM0_BIU 786444
+#define SRST_F_PMU_CM0_CORE 786445
+#define SRST_T_PMU1_CM0_JTAG 786446
+
+/********Name=PMU1SOFTRST_CON01,Offset=0x30A04********/
+#define SRST_DDR_FAIL_SAFE 786449
+#define SRST_P_CRU_PMU1 786450
+#define SRST_P_PMU1_GRF 786452
+#define SRST_P_PMU1_IOC 786453
+#define SRST_P_PMU1WDT 786454
+#define SRST_T_PMU1WDT 786455
+#define SRST_P_PMU1TIMER 786456
+#define SRST_PMU1TIMER0 786458
+#define SRST_PMU1TIMER1 786459
+#define SRST_P_PMU1PWM 786460
+#define SRST_PMU1PWM 786461
+
+/********Name=PMU1SOFTRST_CON02,Offset=0x30A08********/
+#define SRST_P_I2C0 786465
+#define SRST_I2C0 786466
+#define SRST_S_UART0 786469
+#define SRST_P_UART0 786470
+#define SRST_H_I2S1_8CH 786471
+#define SRST_M_I2S1_8CH_TX 786474
+#define SRST_M_I2S1_8CH_RX 786477
+#define SRST_H_PDM0 786478
+#define SRST_PDM0 786479
+
+/********Name=PMU1SOFTRST_CON03,Offset=0x30A0C********/
+#define SRST_H_VAD 786480
+#define SRST_HDPTX0_INIT 786491
+#define SRST_HDPTX0_CMN 786492
+#define SRST_HDPTX0_LANE 786493
+#define SRST_HDPTX1_INIT 786495
+
+/********Name=PMU1SOFTRST_CON04,Offset=0x30A10********/
+#define SRST_HDPTX1_CMN 786496
+#define SRST_HDPTX1_LANE 786497
+#define SRST_M_MIPI_DCPHY0 786499
+#define SRST_S_MIPI_DCPHY0 786500
+#define SRST_M_MIPI_DCPHY1 786501
+#define SRST_S_MIPI_DCPHY1 786502
+#define SRST_OTGPHY_U3_0 786503
+#define SRST_OTGPHY_U3_1 786504
+#define SRST_OTGPHY_U2_0 786505
+#define SRST_OTGPHY_U2_1 786506
+
+/********Name=PMU1SOFTRST_CON05,Offset=0x30A14********/
+#define SRST_P_PMU0GRF 786515
+#define SRST_P_PMU0IOC 786516
+#define SRST_P_GPIO0 786517
+#define SRST_GPIO0 786518
+
+/* scmi-clocks indices */
+
+#define SCMI_CLK_CPUL 0
+#define SCMI_CLK_DSU 1
+#define SCMI_CLK_CPUB01 2
+#define SCMI_CLK_CPUB23 3
+#define SCMI_CLK_DDR 4
+#define SCMI_CLK_GPU 5
+#define SCMI_CLK_NPU 6
+#define SCMI_CLK_SBUS 7
+#define SCMI_PCLK_SBUS 8
+#define SCMI_CCLK_SD 9
+#define SCMI_DCLK_SD 10
+#define SCMI_ACLK_SECURE_NS 11
+#define SCMI_HCLK_SECURE_NS 12
+#define SCMI_TCLK_WDT 13
+#define SCMI_KEYLADDER_CORE 14
+#define SCMI_KEYLADDER_RNG 15
+#define SCMI_ACLK_SECURE_S 16
+#define SCMI_HCLK_SECURE_S 17
+#define SCMI_PCLK_SECURE_S 18
+#define SCMI_CRYPTO_RNG 19
+#define SCMI_CRYPTO_CORE 20
+#define SCMI_CRYPTO_PKA 21
+#define SCMI_SPLL 22
+#define SCMI_HCLK_SD 23
+
+/********Name=SECURE_SOFTRST_CON00,Offset=0xA00********/
+#define SRST_A_SECURE_NS_BIU 10
+#define SRST_H_SECURE_NS_BIU 11
+#define SRST_A_SECURE_S_BIU 12
+#define SRST_H_SECURE_S_BIU 13
+#define SRST_P_SECURE_S_BIU 14
+#define SRST_CRYPTO_CORE 15
+/********Name=SECURE_SOFTRST_CON01,Offset=0xA04********/
+#define SRST_CRYPTO_PKA 16
+#define SRST_CRYPTO_RNG 17
+#define SRST_A_CRYPTO 18
+#define SRST_H_CRYPTO 19
+#define SRST_KEYLADDER_CORE 25
+#define SRST_KEYLADDER_RNG 26
+#define SRST_A_KEYLADDER 27
+#define SRST_H_KEYLADDER 28
+#define SRST_P_OTPC_S 29
+#define SRST_OTPC_S 30
+#define SRST_WDT_S 31
+/********Name=SECURE_SOFTRST_CON02,Offset=0xA08********/
+#define SRST_T_WDT_S 32
+#define SRST_H_BOOTROM 33
+#define SRST_A_DCF 34
+#define SRST_P_DCF 35
+#define SRST_H_BOOTROM_NS 37
+#define SRST_P_KEYLADDER 46
+#define SRST_H_TRNG_S 47
+/********Name=SECURE_SOFTRST_CON03,Offset=0xA0C********/
+#define SRST_H_TRNG_NS 48
+#define SRST_D_SDMMC_BUFFER 49
+#define SRST_H_SDMMC 50
+#define SRST_H_SDMMC_BUFFER 51
+#define SRST_SDMMC 52
+#define SRST_P_TRNG_CHK 53
+#define SRST_TRNG_S 54
+
+#endif
diff --git a/include/dt-bindings/power/rk3588-power.h b/include/dt-bindings/power/rk3588-power.h
new file mode 100644
index 0000000000..69f7e90602
--- /dev/null
+++ b/include/dt-bindings/power/rk3588-power.h
@@ -0,0 +1,69 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __DT_BINDINGS_POWER_RK3588_POWER_H__
+#define __DT_BINDINGS_POWER_RK3588_POWER_H__
+
+/* VD_LITDSU */
+#define RK3588_PD_CPU_0 0
+#define RK3588_PD_CPU_1 1
+#define RK3588_PD_CPU_2 2
+#define RK3588_PD_CPU_3 3
+
+/* VD_BIGCORE0 */
+#define RK3588_PD_CPU_4 4
+#define RK3588_PD_CPU_5 5
+
+/* VD_BIGCORE1 */
+#define RK3588_PD_CPU_6 6
+#define RK3588_PD_CPU_7 7
+
+/* VD_NPU */
+#define RK3588_PD_NPU 8
+#define RK3588_PD_NPUTOP 9
+#define RK3588_PD_NPU1 10
+#define RK3588_PD_NPU2 11
+
+/* VD_GPU */
+#define RK3588_PD_GPU 12
+
+/* VD_VCODEC */
+#define RK3588_PD_VCODEC 13
+#define RK3588_PD_RKVDEC0 14
+#define RK3588_PD_RKVDEC1 15
+#define RK3588_PD_VENC0 16
+#define RK3588_PD_VENC1 17
+
+/* VD_DD01 */
+#define RK3588_PD_DDR01 18
+
+/* VD_DD23 */
+#define RK3588_PD_DDR23 19
+
+/* VD_LOGIC */
+#define RK3588_PD_CENTER 20
+#define RK3588_PD_VDPU 21
+#define RK3588_PD_RGA30 22
+#define RK3588_PD_AV1 23
+#define RK3588_PD_VOP 24
+#define RK3588_PD_VO0 25
+#define RK3588_PD_VO1 26
+#define RK3588_PD_VI 27
+#define RK3588_PD_ISP1 28
+#define RK3588_PD_FEC 29
+#define RK3588_PD_RGA31 30
+#define RK3588_PD_USB 31
+#define RK3588_PD_PHP 32
+#define RK3588_PD_GMAC 33
+#define RK3588_PD_PCIE 34
+#define RK3588_PD_NVM 35
+#define RK3588_PD_NVM0 36
+#define RK3588_PD_SDIO 37
+#define RK3588_PD_AUDIO 38
+#define RK3588_PD_SECURE 39
+#define RK3588_PD_SDMMC 40
+#define RK3588_PD_CRYPTO 41
+#define RK3588_PD_BUS 42
+
+/* VD_PMU */
+#define RK3588_PD_PMU1 43
+
+#endif
--
2.39.1
1
0