fix h88k
This commit is contained in:
@@ -1,726 +0,0 @@
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
|
||||
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=33
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
||||
CONFIG_ARCH_NR_GPIO=0
|
||||
CONFIG_ARCH_PROC_KCORE_TEXT=y
|
||||
CONFIG_ARCH_ROCKCHIP=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_STACKWALK=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARCH_WANTS_NO_INSTR=y
|
||||
CONFIG_ARCH_WANTS_THP_SWAP=y
|
||||
CONFIG_ARC_EMAC_CORE=y
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_ARM64_4K_PAGES=y
|
||||
CONFIG_ARM64_CNP=y
|
||||
CONFIG_ARM64_EPAN=y
|
||||
CONFIG_ARM64_ERRATUM_2051678=y
|
||||
CONFIG_ARM64_ERRATUM_2054223=y
|
||||
CONFIG_ARM64_ERRATUM_2067961=y
|
||||
CONFIG_ARM64_ERRATUM_2077057=y
|
||||
CONFIG_ARM64_ERRATUM_2658417=y
|
||||
CONFIG_ARM64_ERRATUM_819472=y
|
||||
CONFIG_ARM64_ERRATUM_824069=y
|
||||
CONFIG_ARM64_ERRATUM_826319=y
|
||||
CONFIG_ARM64_ERRATUM_827319=y
|
||||
CONFIG_ARM64_ERRATUM_832075=y
|
||||
CONFIG_ARM64_ERRATUM_843419=y
|
||||
CONFIG_ARM64_ERRATUM_858921=y
|
||||
CONFIG_ARM64_HW_AFDBM=y
|
||||
CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
|
||||
CONFIG_ARM64_PAGE_SHIFT=12
|
||||
CONFIG_ARM64_PAN=y
|
||||
CONFIG_ARM64_PA_BITS=48
|
||||
CONFIG_ARM64_PA_BITS_48=y
|
||||
CONFIG_ARM64_PTR_AUTH=y
|
||||
CONFIG_ARM64_PTR_AUTH_KERNEL=y
|
||||
CONFIG_ARM64_RAS_EXTN=y
|
||||
CONFIG_ARM64_SME=y
|
||||
CONFIG_ARM64_SVE=y
|
||||
CONFIG_ARM64_TAGGED_ADDR_ABI=y
|
||||
CONFIG_ARM64_VA_BITS=48
|
||||
# CONFIG_ARM64_VA_BITS_39 is not set
|
||||
CONFIG_ARM64_VA_BITS_48=y
|
||||
CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y
|
||||
CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_GIC_V2M=y
|
||||
CONFIG_ARM_GIC_V3=y
|
||||
CONFIG_ARM_GIC_V3_ITS=y
|
||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
||||
CONFIG_ARM_MHU=y
|
||||
CONFIG_ARM_MHU_V2=y
|
||||
CONFIG_ARM_PSCI_CPUIDLE=y
|
||||
CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
|
||||
CONFIG_ARM_PSCI_FW=y
|
||||
CONFIG_ARM_RK3328_DMC_DEVFREQ=y
|
||||
# CONFIG_ARM_RK3399_DMC_DEVFREQ is not set
|
||||
CONFIG_ARM_ROCKCHIP_CPUFREQ=y
|
||||
CONFIG_ARM_SCMI_CPUFREQ=y
|
||||
CONFIG_ARM_SCMI_HAVE_SHMEM=y
|
||||
CONFIG_ARM_SCMI_HAVE_TRANSPORT=y
|
||||
CONFIG_ARM_SCMI_POWER_CONTROL=y
|
||||
CONFIG_ARM_SCMI_POWER_DOMAIN=y
|
||||
CONFIG_ARM_SCMI_PROTOCOL=y
|
||||
CONFIG_ARM_SCMI_TRANSPORT_MAILBOX=y
|
||||
CONFIG_ARM_SCMI_TRANSPORT_SMC=y
|
||||
CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE=y
|
||||
CONFIG_ARM_SCPI_CPUFREQ=y
|
||||
CONFIG_ARM_SCPI_POWER_DOMAIN=y
|
||||
CONFIG_ARM_SCPI_PROTOCOL=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y
|
||||
# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set
|
||||
CONFIG_ARM_SMMU_V3=y
|
||||
# CONFIG_ARM_SMMU_V3_SVA is not set
|
||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_BACKLIGHT_GPIO=y
|
||||
CONFIG_BACKLIGHT_PWM=y
|
||||
CONFIG_BLK_DEV_BSG=y
|
||||
CONFIG_BLK_DEV_BSGLIB=y
|
||||
CONFIG_BLK_DEV_BSG_COMMON=y
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_BLK_DEV_INTEGRITY=y
|
||||
CONFIG_BLK_DEV_INTEGRITY_T10=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_NVME=y
|
||||
CONFIG_BLK_DEV_PCIESSD_MTIP32XX=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_PM=y
|
||||
CONFIG_BRCMSTB_GISB_ARB=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_CC_HAVE_SHADOW_CALL_STACK=y
|
||||
CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
|
||||
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
|
||||
CONFIG_CC_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_CHARGER_GPIO=y
|
||||
CONFIG_CHARGER_RK817=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLK_PX30=y
|
||||
CONFIG_CLK_RK3308=y
|
||||
CONFIG_CLK_RK3328=y
|
||||
CONFIG_CLK_RK3368=y
|
||||
CONFIG_CLK_RK3399=y
|
||||
CONFIG_CLK_RK3568=y
|
||||
CONFIG_CLK_RK3588=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=7
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
# CONFIG_CMA_DEBUGFS is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=16
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SYSFS is not set
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMMON_CLK_RK808=y
|
||||
CONFIG_COMMON_CLK_ROCKCHIP=y
|
||||
CONFIG_COMMON_CLK_SCMI=y
|
||||
CONFIG_COMMON_CLK_SCPI=y
|
||||
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
CONFIG_CONTEXT_TRACKING=y
|
||||
CONFIG_CONTEXT_TRACKING_IDLE=y
|
||||
CONFIG_CONTIG_ALLOC=y
|
||||
CONFIG_CPUFREQ_DT=y
|
||||
CONFIG_CPUFREQ_DT_PLATDEV=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_IDLE=y
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
|
||||
CONFIG_CPU_ISOLATION=y
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CPU_THERMAL=y
|
||||
CONFIG_CRASH_CORE=y
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_CRC16=y
|
||||
# CONFIG_CRC32_SARWATE is not set
|
||||
CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CRC64=y
|
||||
CONFIG_CRC64_ROCKSOFT=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_CROSS_MEMORY_ATTACH=y
|
||||
CONFIG_CRYPTO_AES_ARM64=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_CRC64_ROCKSOFT=y
|
||||
CONFIG_CRYPTO_CRCT10DIF=y
|
||||
CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=y
|
||||
CONFIG_CRYPTO_CRYPTD=y
|
||||
# CONFIG_CRYPTO_DEV_ROCKCHIP is not set
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y
|
||||
CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_GHASH_ARM64_CE=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_SHA1=y
|
||||
CONFIG_CRYPTO_LIB_UTILS=y
|
||||
CONFIG_CRYPTO_POLYVAL=y
|
||||
CONFIG_CRYPTO_POLYVAL_ARM64_CE=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_CRYPTO_SM3=y
|
||||
CONFIG_CRYPTO_SM3_NEON=y
|
||||
CONFIG_CRYPTO_SM4=y
|
||||
CONFIG_CRYPTO_SM4_ARM64_CE_BLK=y
|
||||
CONFIG_CRYPTO_SM4_ARM64_NEON_BLK=y
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y
|
||||
# CONFIG_DEVFREQ_GOV_PASSIVE is not set
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
# CONFIG_DEVFREQ_THERMAL is not set
|
||||
CONFIG_DEVMEM=y
|
||||
# CONFIG_DEVPORT is not set
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_CMA=y
|
||||
CONFIG_DMA_DIRECT_REMAP=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_OPS=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_DT_IDLE_GENPD=y
|
||||
CONFIG_DT_IDLE_STATES=y
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_DWMAC_DWC_QOS_ETH=y
|
||||
CONFIG_DWMAC_GENERIC=y
|
||||
CONFIG_DWMAC_ROCKCHIP=y
|
||||
CONFIG_DW_WATCHDOG=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_EEPROM_AT24=y
|
||||
CONFIG_EMAC_ROCKCHIP=y
|
||||
CONFIG_ENERGY_MODEL=y
|
||||
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXTCON=y
|
||||
CONFIG_F2FS_FS=y
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_FHANDLE=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
# CONFIG_FORTIFY_SOURCE is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
CONFIG_FWNODE_MDIO=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
||||
CONFIG_GENERIC_CSUM=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IOREMAP=y
|
||||
CONFIG_GENERIC_IRQ_CHIP=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
CONFIG_GPIO_CDEV=y
|
||||
CONFIG_GPIO_DWAPB=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_GPIO_ROCKCHIP=y
|
||||
CONFIG_GPIO_SYSCON=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HID=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
# CONFIG_HOTPLUG_PCI_PCIE is not set
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_HUGETLB_PAGE=y
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_HWSPINLOCK=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_ROCKCHIP=y
|
||||
CONFIG_HZ=250
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_250=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_COMPAT=y
|
||||
CONFIG_I2C_HELPER_AUTO=y
|
||||
CONFIG_I2C_RK3X=y
|
||||
# CONFIG_IIO_SCMI is not set
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
CONFIG_INDIRECT_PIO=y
|
||||
CONFIG_INPUT=y
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_INPUT_FF_MEMLESS=y
|
||||
CONFIG_INPUT_KEYBOARD=y
|
||||
CONFIG_INPUT_LEDS=y
|
||||
CONFIG_INPUT_MATRIXKMAP=y
|
||||
CONFIG_INPUT_RK805_PWRKEY=y
|
||||
CONFIG_IOMMU_API=y
|
||||
# CONFIG_IOMMU_DEBUGFS is not set
|
||||
# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set
|
||||
CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
|
||||
# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
|
||||
CONFIG_IOMMU_DMA=y
|
||||
CONFIG_IOMMU_IOVA=y
|
||||
CONFIG_IOMMU_IO_PGTABLE=y
|
||||
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_DART is not set
|
||||
CONFIG_IOMMU_IO_PGTABLE_LPAE=y
|
||||
# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
|
||||
CONFIG_IOMMU_SUPPORT=y
|
||||
# CONFIG_IO_STRICT_DEVMEM is not set
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_MSI_IOMMU=y
|
||||
CONFIG_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JUMP_LABEL=y
|
||||
CONFIG_JLSEMI_PHY=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KEXEC_CORE=y
|
||||
CONFIG_KEXEC_FILE=y
|
||||
CONFIG_KSM=y
|
||||
# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_PWM=y
|
||||
CONFIG_LEDS_SYSCON=y
|
||||
CONFIG_LEDS_TRIGGER_CPU=y
|
||||
CONFIG_LEDS_TRIGGER_PANIC=y
|
||||
CONFIG_LIBCRC32C=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_LOG_BUF_SHIFT=19
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAGIC_SYSRQ_SERIAL=y
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_BUS_MUX=y
|
||||
CONFIG_MDIO_BUS_MUX_GPIO=y
|
||||
CONFIG_MDIO_BUS_MUX_MMIOREG=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_DEVRES=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MEMORY_ISOLATION=y
|
||||
CONFIG_MFD_CORE=y
|
||||
# CONFIG_MFD_KHADAS_MCU is not set
|
||||
CONFIG_MFD_RK8XX=y
|
||||
CONFIG_MFD_RK8XX_I2C=y
|
||||
CONFIG_MFD_RK8XX_SPI=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_MINORS=32
|
||||
CONFIG_MMC_CQHCI=y
|
||||
CONFIG_MMC_DW=y
|
||||
# CONFIG_MMC_DW_BLUEFIELD is not set
|
||||
# CONFIG_MMC_DW_EXYNOS is not set
|
||||
# CONFIG_MMC_DW_HI3798CV200 is not set
|
||||
# CONFIG_MMC_DW_K3 is not set
|
||||
# CONFIG_MMC_DW_PCI is not set
|
||||
CONFIG_MMC_DW_PLTFM=y
|
||||
CONFIG_MMC_DW_ROCKCHIP=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_OF_ARASAN=y
|
||||
CONFIG_MMC_SDHCI_OF_DWCMSHC=y
|
||||
# CONFIG_MMC_SDHCI_PCI is not set
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
CONFIG_MOTORCOMM_PHY=y
|
||||
CONFIG_MQ_IOSCHED_DEADLINE=y
|
||||
# CONFIG_MTD_CFI is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
|
||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NET_PTP_CLASSIFY=y
|
||||
CONFIG_NET_SELFTESTS=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NOP_USB_XCEIV=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NR_CPUS=256
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_NVMEM_ROCKCHIP_EFUSE=y
|
||||
# CONFIG_NVMEM_ROCKCHIP_OTP is not set
|
||||
CONFIG_NVMEM_SYSFS=y
|
||||
CONFIG_NVME_CORE=y
|
||||
# CONFIG_NVME_HWMON is not set
|
||||
# CONFIG_NVME_MULTIPATH is not set
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_DYNAMIC=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IOMMU=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OF_OVERLAY=y
|
||||
CONFIG_OF_RESOLVE=y
|
||||
# CONFIG_OVERLAY_FS_XINO_AUTO is not set
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_POOL=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
|
||||
# CONFIG_PAGE_TABLE_CHECK is not set
|
||||
CONFIG_PAHOLE_HAS_SPLIT_BTF=y
|
||||
# CONFIG_PANIC_ON_OOPS is not set
|
||||
CONFIG_PANIC_ON_OOPS_VALUE=0
|
||||
CONFIG_PANIC_TIMEOUT=0
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_PARTITION_PERCPU=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEASPM=y
|
||||
CONFIG_PCIEASPM_DEFAULT=y
|
||||
# CONFIG_PCIEASPM_PERFORMANCE is not set
|
||||
# CONFIG_PCIEASPM_POWERSAVE is not set
|
||||
# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCIE_DW=y
|
||||
CONFIG_PCIE_DW_HOST=y
|
||||
CONFIG_PCIE_PME=y
|
||||
CONFIG_PCIE_ROCKCHIP=y
|
||||
CONFIG_PCIE_ROCKCHIP_DW_HOST=y
|
||||
CONFIG_PCIE_ROCKCHIP_HOST=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PCI_STUB=y
|
||||
CONFIG_PCS_XPCS=y
|
||||
CONFIG_PGTABLE_LEVELS=4
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLINK=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_PHY_ROCKCHIP_DP=y
|
||||
# CONFIG_PHY_ROCKCHIP_DPHY_RX0 is not set
|
||||
CONFIG_PHY_ROCKCHIP_EMMC=y
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY is not set
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY is not set
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_HDMI is not set
|
||||
CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
||||
CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y
|
||||
CONFIG_PHY_ROCKCHIP_PCIE=y
|
||||
CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y
|
||||
CONFIG_PHY_ROCKCHIP_TYPEC=y
|
||||
CONFIG_PHY_ROCKCHIP_USB=y
|
||||
CONFIG_PHY_ROCKCHIP_USBDP=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_RK805=y
|
||||
CONFIG_PINCTRL_ROCKCHIP=y
|
||||
# CONFIG_PINCTRL_SINGLE is not set
|
||||
CONFIG_PL330_DMA=y
|
||||
CONFIG_PLATFORM_MHU=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_CLK=y
|
||||
CONFIG_PM_DEVFREQ=y
|
||||
CONFIG_PM_DEVFREQ_EVENT=y
|
||||
CONFIG_PM_GENERIC_DOMAINS=y
|
||||
CONFIG_PM_GENERIC_DOMAINS_OF=y
|
||||
CONFIG_PM_OPP=y
|
||||
CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_POWER_SUPPLY_HWMON=y
|
||||
CONFIG_PPS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_PREEMPTION=y
|
||||
CONFIG_PREEMPT_BUILD=y
|
||||
CONFIG_PREEMPT_COUNT=y
|
||||
# CONFIG_PREEMPT_DYNAMIC is not set
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_PROC_VMCORE=y
|
||||
CONFIG_PTP_1588_CLOCK=y
|
||||
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_ROCKCHIP=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
# CONFIG_QFMT_V2 is not set
|
||||
CONFIG_QUEUED_RWLOCKS=y
|
||||
CONFIG_QUEUED_SPINLOCKS=y
|
||||
CONFIG_QUOTA=y
|
||||
CONFIG_QUOTACTL=y
|
||||
CONFIG_RAID_ATTRS=y
|
||||
CONFIG_RANDOMIZE_BASE=y
|
||||
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
|
||||
CONFIG_RANDOMIZE_MODULE_REGION_FULL=y
|
||||
CONFIG_RANDSTRUCT_NONE=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RATIONAL=y
|
||||
# CONFIG_RAVE_SP_CORE is not set
|
||||
CONFIG_RCU_TRACE=y
|
||||
CONFIG_REALTEK_PHY=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_I2C=y
|
||||
CONFIG_REGMAP_IRQ=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_SPI=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_ARM_SCMI=y
|
||||
CONFIG_REGULATOR_FAN53555=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_GPIO=y
|
||||
CONFIG_REGULATOR_PWM=y
|
||||
CONFIG_REGULATOR_RK808=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RESET_SCMI=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_ROCKCHIP_ERRATUM_3588001=y
|
||||
CONFIG_ROCKCHIP_GRF=y
|
||||
CONFIG_ROCKCHIP_IODOMAIN=y
|
||||
CONFIG_ROCKCHIP_IOMMU=y
|
||||
CONFIG_ROCKCHIP_MBOX=y
|
||||
CONFIG_ROCKCHIP_PHY=y
|
||||
CONFIG_ROCKCHIP_PM_DOMAINS=y
|
||||
CONFIG_ROCKCHIP_THERMAL=y
|
||||
CONFIG_ROCKCHIP_TIMER=y
|
||||
CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RSEQ=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_RK808=y
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
CONFIG_RTC_NVMEM=y
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_SCHED_CLUSTER=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_COMMON=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
CONFIG_SCSI_SAS_ATTRS=y
|
||||
CONFIG_SCSI_SAS_HOST_SMP=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=y
|
||||
# CONFIG_SECURITY_DMESG_RESTRICT is not set
|
||||
CONFIG_SENSORS_ARM_SCMI=y
|
||||
CONFIG_SENSORS_ARM_SCPI=y
|
||||
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
|
||||
CONFIG_SERIAL_8250_DW=y
|
||||
CONFIG_SERIAL_8250_DWLIB=y
|
||||
CONFIG_SERIAL_8250_EXAR=y
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_PCI=y
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_SERIAL_DEV_BUS=y
|
||||
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_AMBAKMI=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SHADOW_CALL_STACK=y
|
||||
CONFIG_SMP=y
|
||||
# CONFIG_SND_SOC_RK817 is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP is not set
|
||||
CONFIG_SOCK_RX_QUEUE_MAPPING=y
|
||||
CONFIG_SOFTIRQ_ON_OWN_STACK=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_SPARSEMEM_EXTREME=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_BITBANG=y
|
||||
CONFIG_SPI_DYNAMIC=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SPI_MEM=y
|
||||
CONFIG_SPI_ROCKCHIP=y
|
||||
CONFIG_SPI_ROCKCHIP_SFC=y
|
||||
CONFIG_SPI_SPIDEV=y
|
||||
# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set
|
||||
CONFIG_SQUASHFS_DECOMP_SINGLE=y
|
||||
# CONFIG_SQUASHFS_EMBEDDED is not set
|
||||
CONFIG_SQUASHFS_FILE_CACHE=y
|
||||
# CONFIG_SQUASHFS_FILE_DIRECT is not set
|
||||
CONFIG_SRAM=y
|
||||
CONFIG_SRCU=y
|
||||
CONFIG_STACKPROTECTOR=y
|
||||
CONFIG_STACKPROTECTOR_PER_TASK=y
|
||||
CONFIG_STACKPROTECTOR_STRONG=y
|
||||
CONFIG_STACKTRACE=y
|
||||
CONFIG_STMMAC_ETH=y
|
||||
CONFIG_STMMAC_PLATFORM=y
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SYNC_FILE=y
|
||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
||||
CONFIG_SYSFS_SYSCALL=y
|
||||
# CONFIG_TEXTSEARCH is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_EMULATION=y
|
||||
CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_HWMON=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TRACE_CLOCK=y
|
||||
CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
|
||||
# CONFIG_TRACE_MMIO_ACCESS is not set
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
|
||||
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
|
||||
CONFIG_TRANS_TABLE=y
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
CONFIG_TYPEC=y
|
||||
# CONFIG_TYPEC_ANX7411 is not set
|
||||
# CONFIG_TYPEC_DP_ALTMODE is not set
|
||||
CONFIG_TYPEC_FUSB302=y
|
||||
# CONFIG_TYPEC_HD3SS3220 is not set
|
||||
# CONFIG_TYPEC_MUX_FSA4480 is not set
|
||||
# CONFIG_TYPEC_MUX_PI3USB30532 is not set
|
||||
# CONFIG_TYPEC_RT1719 is not set
|
||||
# CONFIG_TYPEC_STUSB160X is not set
|
||||
# CONFIG_TYPEC_TCPCI is not set
|
||||
CONFIG_TYPEC_TCPM=y
|
||||
# CONFIG_TYPEC_TPS6598X is not set
|
||||
# CONFIG_TYPEC_WUSB3801 is not set
|
||||
# CONFIG_UACCE is not set
|
||||
# CONFIG_UCLAMP_TASK is not set
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_UNINLINE_SPIN_UNLOCK=y
|
||||
CONFIG_UNMAP_KERNEL_AT_EL0=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
CONFIG_USB_DWC3=y
|
||||
CONFIG_USB_DWC3_HOST=y
|
||||
CONFIG_USB_DWC3_OF_SIMPLE=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
|
||||
CONFIG_USB_HID=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_PHY=y
|
||||
CONFIG_USB_ROLE_SWITCH=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_ULPI=y
|
||||
CONFIG_USB_ULPI_BUS=y
|
||||
CONFIG_USB_ULPI_VIEWPORT=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_PLATFORM=y
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
CONFIG_VMAP_STACK=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_XARRAY_MULTI=y
|
||||
CONFIG_XPS=y
|
||||
CONFIG_XXHASH=y
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
CONFIG_XZ_DEC_ARMTHUMB=y
|
||||
CONFIG_XZ_DEC_BCJ=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZONE_DMA32=y
|
||||
@@ -1,7 +1,4 @@
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_AF_UNIX_OOB=y
|
||||
CONFIG_AHCI_DWC=y
|
||||
CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y
|
||||
CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
|
||||
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
|
||||
CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y
|
||||
@@ -10,6 +7,7 @@ CONFIG_ARCH_FORCE_MAX_ORDER=10
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=33
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
||||
@@ -23,11 +21,21 @@ CONFIG_ARCH_WANTS_NO_INSTR=y
|
||||
CONFIG_ARCH_WANTS_THP_SWAP=y
|
||||
CONFIG_ARC_EMAC_CORE=y
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_ARM64_CNP=y
|
||||
CONFIG_ARM64_4K_PAGES=y
|
||||
CONFIG_ARM64_ERRATUM_1024718=y
|
||||
CONFIG_ARM64_ERRATUM_1165522=y
|
||||
CONFIG_ARM64_ERRATUM_1286807=y
|
||||
CONFIG_ARM64_ERRATUM_1319367=y
|
||||
CONFIG_ARM64_ERRATUM_1463225=y
|
||||
CONFIG_ARM64_ERRATUM_1530923=y
|
||||
CONFIG_ARM64_ERRATUM_2051678=y
|
||||
CONFIG_ARM64_ERRATUM_2054223=y
|
||||
CONFIG_ARM64_ERRATUM_2067961=y
|
||||
CONFIG_ARM64_ERRATUM_2077057=y
|
||||
CONFIG_ARM64_ERRATUM_2441007=y
|
||||
CONFIG_ARM64_ERRATUM_2441009=y
|
||||
CONFIG_ARM64_ERRATUM_2658417=y
|
||||
CONFIG_ARM64_ERRATUM_3117295=y
|
||||
CONFIG_ARM64_ERRATUM_819472=y
|
||||
CONFIG_ARM64_ERRATUM_824069=y
|
||||
CONFIG_ARM64_ERRATUM_826319=y
|
||||
@@ -38,63 +46,60 @@ CONFIG_ARM64_ERRATUM_858921=y
|
||||
CONFIG_ARM64_HW_AFDBM=y
|
||||
CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
|
||||
CONFIG_ARM64_PAGE_SHIFT=12
|
||||
CONFIG_ARM64_PAN=y
|
||||
CONFIG_ARM64_PA_BITS=48
|
||||
CONFIG_ARM64_PA_BITS_48=y
|
||||
CONFIG_ARM64_PTR_AUTH=y
|
||||
CONFIG_ARM64_PTR_AUTH_KERNEL=y
|
||||
CONFIG_ARM64_RAS_EXTN=y
|
||||
CONFIG_ARM64_SME=y
|
||||
CONFIG_ARM64_SVE=y
|
||||
# CONFIG_ARM64_SW_TTBR0_PAN is not set
|
||||
CONFIG_ARM64_TAGGED_ADDR_ABI=y
|
||||
CONFIG_ARM64_VA_BITS=48
|
||||
# CONFIG_ARM64_VA_BITS_39 is not set
|
||||
CONFIG_ARM64_VA_BITS_48=y
|
||||
CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y
|
||||
CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y
|
||||
CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y
|
||||
CONFIG_ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD=y
|
||||
CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y
|
||||
CONFIG_ARM_FFA_SMCCC=y
|
||||
CONFIG_ARM_FFA_TRANSPORT=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_GIC_V2M=y
|
||||
CONFIG_ARM_GIC_V3=y
|
||||
CONFIG_ARM_GIC_V3_ITS=y
|
||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
||||
CONFIG_ARM_MHU=y
|
||||
CONFIG_ARM_MHU_V2=y
|
||||
CONFIG_ARM_PSCI_CPUIDLE=y
|
||||
CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
|
||||
CONFIG_ARM_PSCI_FW=y
|
||||
# CONFIG_ARM_RK3328_DMC_DEVFREQ is not set
|
||||
CONFIG_ARM_RK3328_DMC_DEVFREQ=y
|
||||
# CONFIG_ARM_RK3399_DMC_DEVFREQ is not set
|
||||
CONFIG_ARM_ROCKCHIP_CPUFREQ=y
|
||||
CONFIG_ARM_SCMI_CPUFREQ=y
|
||||
CONFIG_ARM_SCMI_HAVE_SHMEM=y
|
||||
CONFIG_ARM_SCMI_HAVE_TRANSPORT=y
|
||||
CONFIG_ARM_SCMI_POWER_CONTROL=y
|
||||
CONFIG_ARM_SCMI_POWER_DOMAIN=y
|
||||
CONFIG_ARM_SCMI_PROTOCOL=y
|
||||
# CONFIG_ARM_SCMI_RAW_MODE_SUPPORT is not set
|
||||
CONFIG_ARM_SCMI_TRANSPORT_MAILBOX=y
|
||||
CONFIG_ARM_SCMI_TRANSPORT_SMC=y
|
||||
CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE=y
|
||||
CONFIG_ARM_SCPI_CPUFREQ=y
|
||||
CONFIG_ARM_SCPI_POWER_DOMAIN=y
|
||||
CONFIG_ARM_SCPI_PROTOCOL=y
|
||||
CONFIG_ARM_SMCCC_SOC_ID=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y
|
||||
# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set
|
||||
CONFIG_ARM_SMMU_V3=y
|
||||
# CONFIG_ARM_SMMU_V3_SVA is not set
|
||||
CONFIG_ATA=y
|
||||
CONFIG_ATA_GENERIC=y
|
||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_BACKLIGHT_GPIO=y
|
||||
CONFIG_BACKLIGHT_PWM=y
|
||||
CONFIG_BINARY_PRINTF=y
|
||||
CONFIG_BLK_DEV_BSG=y
|
||||
CONFIG_BLK_DEV_BSGLIB=y
|
||||
CONFIG_BLK_DEV_BSG_COMMON=y
|
||||
@@ -102,25 +107,20 @@ CONFIG_BLK_DEV_BSG_COMMON=y
|
||||
CONFIG_BLK_DEV_INTEGRITY=y
|
||||
CONFIG_BLK_DEV_INTEGRITY_T10=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_NVME=y
|
||||
CONFIG_BLK_DEV_PCIESSD_MTIP32XX=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_PM=y
|
||||
CONFIG_BLOCK_LEGACY_AUTOLOAD=y
|
||||
CONFIG_BRCMSTB_GISB_ARB=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_BUFFER_HEAD=y
|
||||
CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y
|
||||
CONFIG_CC_HAVE_SHADOW_CALL_STACK=y
|
||||
CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
|
||||
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
|
||||
CONFIG_CC_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_CHARGER_GPIO=y
|
||||
CONFIG_CHARGER_RK817=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLK_PX30=y
|
||||
CONFIG_CLK_RK3308=y
|
||||
@@ -135,18 +135,17 @@ CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=7
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
# CONFIG_CMA_DEBUGFS is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=5
|
||||
CONFIG_CMA_SIZE_MBYTES=16
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SYSFS is not set
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMMON_CLK_RK808=y
|
||||
CONFIG_COMMON_CLK_ROCKCHIP=y
|
||||
# CONFIG_COMMON_CLK_RS9_PCIE is not set
|
||||
CONFIG_COMMON_CLK_SCMI=y
|
||||
CONFIG_COMMON_CLK_SCPI=y
|
||||
# CONFIG_COMMON_CLK_VC3 is not set
|
||||
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
@@ -160,8 +159,9 @@ CONFIG_CPU_FREQ=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
||||
@@ -171,62 +171,56 @@ CONFIG_CPU_IDLE=y
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
|
||||
CONFIG_CPU_ISOLATION=y
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_CPU_MITIGATIONS=y
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CPU_THERMAL=y
|
||||
CONFIG_CRASH_CORE=y
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_CRC16=y
|
||||
# CONFIG_CRC32_SARWATE is not set
|
||||
CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CRC64=y
|
||||
CONFIG_CRC64_ROCKSOFT=y
|
||||
CONFIG_CRC7=y
|
||||
CONFIG_CRC_ITU_T=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_CROSS_MEMORY_ATTACH=y
|
||||
CONFIG_CRYPTO_AES_ARM64=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_CRC64_ROCKSOFT=y
|
||||
CONFIG_CRYPTO_CRCT10DIF=y
|
||||
CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=y
|
||||
CONFIG_CRYPTO_CRYPTD=y
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_DEV_ROCKCHIP is not set
|
||||
# CONFIG_CRYPTO_DEV_ROCKCHIP2 is not set
|
||||
CONFIG_CRYPTO_ECB=y
|
||||
# CONFIG_CRYPTO_GENIV is not set
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y
|
||||
CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_GHASH_ARM64_CE=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_LIB_DES=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_GF128MUL=y
|
||||
CONFIG_CRYPTO_LIB_SHA1=y
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_LIB_UTILS=y
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
CONFIG_CRYPTO_POLYVAL=y
|
||||
CONFIG_CRYPTO_POLYVAL_ARM64_CE=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_SHA1=y
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA3=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_CRYPTO_SIG2=y
|
||||
CONFIG_CRYPTO_SM3=y
|
||||
CONFIG_CRYPTO_SM3_ARM64_CE=y
|
||||
CONFIG_CRYPTO_SM3_GENERIC=y
|
||||
CONFIG_CRYPTO_SM3_NEON=y
|
||||
CONFIG_CRYPTO_SM4=y
|
||||
CONFIG_CRYPTO_SM4_ARM64_CE=y
|
||||
CONFIG_CRYPTO_SM4_ARM64_CE_BLK=y
|
||||
CONFIG_CRYPTO_SM4_ARM64_CE_CCM=y
|
||||
CONFIG_CRYPTO_SM4_ARM64_CE_GCM=y
|
||||
# CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set
|
||||
CONFIG_CRYPTO_USER_API=y
|
||||
CONFIG_CRYPTO_USER_API_AEAD=y
|
||||
CONFIG_CRYPTO_USER_API_RNG=y
|
||||
CONFIG_CRYPTO_SM4_ARM64_NEON_BLK=y
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
@@ -239,7 +233,6 @@ CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
# CONFIG_DEVFREQ_THERMAL is not set
|
||||
CONFIG_DEVMEM=y
|
||||
# CONFIG_DEVPORT is not set
|
||||
# CONFIG_DM9051 is not set
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y
|
||||
CONFIG_DMA_CMA=y
|
||||
@@ -249,23 +242,6 @@ CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_OPS=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_BRIDGE=y
|
||||
CONFIG_DRM_DEBUG_MODESET_LOCK=y
|
||||
CONFIG_DRM_DISPLAY_HDMI_HELPER=y
|
||||
CONFIG_DRM_DISPLAY_HELPER=y
|
||||
CONFIG_DRM_DW_HDMI=y
|
||||
CONFIG_DRM_DW_MIPI_DSI=y
|
||||
CONFIG_DRM_GEM_DMA_HELPER=y
|
||||
CONFIG_DRM_KMS_HELPER=y
|
||||
# CONFIG_DRM_LOONGSON is not set
|
||||
CONFIG_DRM_MALI_DISPLAY=y
|
||||
CONFIG_DRM_MIPI_DSI=y
|
||||
CONFIG_DRM_PANEL=y
|
||||
CONFIG_DRM_PANEL_BRIDGE=y
|
||||
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
|
||||
# CONFIG_DRM_PANEL_VISIONOX_R66451 is not set
|
||||
CONFIG_DRM_ROCKCHIP=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_DT_IDLE_GENPD=y
|
||||
CONFIG_DT_IDLE_STATES=y
|
||||
@@ -280,25 +256,21 @@ CONFIG_EMAC_ROCKCHIP=y
|
||||
CONFIG_ENERGY_MODEL=y
|
||||
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXTCON=y
|
||||
CONFIG_F2FS_FS=y
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_FHANDLE=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
# CONFIG_FORTIFY_SOURCE is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
CONFIG_FUNCTION_ALIGNMENT=4
|
||||
CONFIG_FUNCTION_ALIGNMENT_4B=y
|
||||
# CONFIG_FUN_ETH is not set
|
||||
CONFIG_FWNODE_MDIO=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
|
||||
CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
@@ -322,43 +294,31 @@ CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GENERIC_PHY_MIPI_DPHY=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
||||
CONFIG_GLOB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
# CONFIG_GPIO_CASCADE is not set
|
||||
CONFIG_GPIO_CDEV=y
|
||||
# CONFIG_GPIO_DS4520 is not set
|
||||
CONFIG_GPIO_DWAPB=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_GPIO_ROCKCHIP=y
|
||||
# CONFIG_GPIO_SIM is not set
|
||||
CONFIG_GPIO_SYSCON=y
|
||||
CONFIG_GRO_CELLS=y
|
||||
# CONFIG_HARDENED_USERCOPY is not set
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HDMI=y
|
||||
CONFIG_HOTPLUG_CORE_SYNC=y
|
||||
CONFIG_HOTPLUG_CORE_SYNC_DEAD=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
CONFIG_HOTPLUG_PCI_PCIE=y
|
||||
CONFIG_HOTPLUG_PCI_SHPC=y
|
||||
# CONFIG_HP_WATCHDOG is not set
|
||||
# CONFIG_HOTPLUG_PCI_PCIE is not set
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_HUGETLB_PAGE=y
|
||||
CONFIG_HWMON=y
|
||||
@@ -366,20 +326,16 @@ CONFIG_HWSPINLOCK=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_ROCKCHIP=y
|
||||
CONFIG_HZ=300
|
||||
CONFIG_HZ=250
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_300=y
|
||||
CONFIG_HZ_250=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_COMPAT=y
|
||||
CONFIG_I2C_HELPER_AUTO=y
|
||||
# CONFIG_I2C_PCI1XXXX is not set
|
||||
CONFIG_I2C_RK3X=y
|
||||
CONFIG_IGB=y
|
||||
CONFIG_IGB_HWMON=y
|
||||
CONFIG_IGC=y
|
||||
# CONFIG_IIO_SCMI is not set
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
CONFIG_INDIRECT_PIO=y
|
||||
CONFIG_INPUT=y
|
||||
@@ -388,21 +344,18 @@ CONFIG_INPUT_FF_MEMLESS=y
|
||||
CONFIG_INPUT_KEYBOARD=y
|
||||
CONFIG_INPUT_LEDS=y
|
||||
CONFIG_INPUT_MATRIXKMAP=y
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
CONFIG_INPUT_RK805_PWRKEY=y
|
||||
CONFIG_INPUT_SPARSEKMAP=y
|
||||
# CONFIG_IOMMUFD is not set
|
||||
CONFIG_IOMMU_API=y
|
||||
# CONFIG_IOMMU_DEBUGFS is not set
|
||||
# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set
|
||||
CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
|
||||
# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
|
||||
CONFIG_IOMMU_DMA=y
|
||||
CONFIG_IOMMU_IOVA=y
|
||||
CONFIG_IOMMU_IO_PGTABLE=y
|
||||
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_DART is not set
|
||||
CONFIG_IOMMU_IO_PGTABLE_LPAE=y
|
||||
# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
|
||||
CONFIG_IOMMU_SUPPORT=y
|
||||
@@ -416,38 +369,27 @@ CONFIG_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JLSEMI_PHY=y
|
||||
CONFIG_JUMP_LABEL=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
CONFIG_KCMP=y
|
||||
CONFIG_KEXEC_CORE=y
|
||||
CONFIG_KEXEC_FILE=y
|
||||
# CONFIG_KEXEC_SIG is not set
|
||||
CONFIG_KSM=y
|
||||
# CONFIG_LAN966X_SWITCH is not set
|
||||
# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_PWM=y
|
||||
# CONFIG_LEDS_PWM_MULTICOLOR is not set
|
||||
CONFIG_LEDS_SYSCON=y
|
||||
CONFIG_LEDS_TRIGGER_CPU=y
|
||||
CONFIG_LEDS_TRIGGER_PANIC=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
CONFIG_LIBCRC32C=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_MM_AND_FIND_VMA=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_LOG_BUF_SHIFT=19
|
||||
CONFIG_LTO_NONE=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAGIC_SYSRQ_SERIAL=y
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
# CONFIG_MARVELL_88Q2XXX_PHY is not set
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_BUS_MUX=y
|
||||
CONFIG_MDIO_BUS_MUX_GPIO=y
|
||||
@@ -455,23 +397,14 @@ CONFIG_MDIO_BUS_MUX_MMIOREG=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_DEVRES=y
|
||||
CONFIG_MEDIATEK_GE_PHY=y
|
||||
# CONFIG_MEDIATEK_GE_SOC_PHY is not set
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MEMORY_ISOLATION=y
|
||||
CONFIG_MFD_CORE=y
|
||||
# CONFIG_MFD_KHADAS_MCU is not set
|
||||
# CONFIG_MFD_MAX5970 is not set
|
||||
# CONFIG_MFD_MAX77541 is not set
|
||||
# CONFIG_MFD_MAX77714 is not set
|
||||
# CONFIG_MFD_MT6370 is not set
|
||||
CONFIG_MFD_RK8XX=y
|
||||
CONFIG_MFD_RK8XX_I2C=y
|
||||
CONFIG_MFD_RK8XX_SPI=y
|
||||
# CONFIG_MFD_RT5120 is not set
|
||||
# CONFIG_MFD_SY7636A is not set
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_MINORS=32
|
||||
@@ -481,39 +414,17 @@ CONFIG_MMC_DW=y
|
||||
# CONFIG_MMC_DW_EXYNOS is not set
|
||||
# CONFIG_MMC_DW_HI3798CV200 is not set
|
||||
# CONFIG_MMC_DW_K3 is not set
|
||||
CONFIG_MMC_DW_PCI=y
|
||||
# CONFIG_MMC_DW_PCI is not set
|
||||
CONFIG_MMC_DW_PLTFM=y
|
||||
CONFIG_MMC_DW_ROCKCHIP=y
|
||||
CONFIG_MMC_HSQ=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_CADENCE=y
|
||||
CONFIG_MMC_SDHCI_F_SDH30=y
|
||||
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
|
||||
CONFIG_MMC_SDHCI_OF_ARASAN=y
|
||||
CONFIG_MMC_SDHCI_OF_DWCMSHC=y
|
||||
# CONFIG_MMC_SDHCI_PCI is not set
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SPI=y
|
||||
CONFIG_MMC_USDHI6ROL0=y
|
||||
CONFIG_MMC_USHC=y
|
||||
CONFIG_MMU_LAZY_TLB_REFCOUNT=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
CONFIG_MOTORCOMM_PHY=y
|
||||
# CONFIG_MOUSE_BCM5974 is not set
|
||||
# CONFIG_MOUSE_CYAPA is not set
|
||||
CONFIG_MOUSE_PS2=y
|
||||
CONFIG_MOUSE_PS2_ALPS=y
|
||||
CONFIG_MOUSE_PS2_BYD=y
|
||||
CONFIG_MOUSE_PS2_CYPRESS=y
|
||||
# CONFIG_MOUSE_PS2_ELANTECH is not set
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
CONFIG_MOUSE_PS2_SMBUS=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_VSXXXAA is not set
|
||||
CONFIG_MQ_IOSCHED_DEADLINE=y
|
||||
# CONFIG_MTD_CFI is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
@@ -530,14 +441,19 @@ CONFIG_NET_DSA=y
|
||||
CONFIG_NET_DSA_MT7530=y
|
||||
CONFIG_NET_DSA_MT7530_MDIO=y
|
||||
CONFIG_NET_DSA_MT7530_MMIO=y
|
||||
# CONFIG_NET_DSA_REALTEK is not set
|
||||
CONFIG_NET_DSA_REALTEK=y
|
||||
CONFIG_NET_DSA_REALTEK_MDIO=y
|
||||
CONFIG_NET_DSA_REALTEK_RTL8365MB=y
|
||||
CONFIG_NET_DSA_REALTEK_RTL8366RB=y
|
||||
CONFIG_NET_DSA_REALTEK_SMI=y
|
||||
CONFIG_NET_DSA_TAG_MTK=y
|
||||
CONFIG_NET_DSA_TAG_RTL4_A=y
|
||||
CONFIG_NET_DSA_TAG_RTL8_4=y
|
||||
CONFIG_NET_EGRESS=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NET_INGRESS=y
|
||||
CONFIG_NET_PTP_CLASSIFY=y
|
||||
CONFIG_NET_SELFTESTS=y
|
||||
CONFIG_NET_SOCK_MSG=y
|
||||
CONFIG_NET_SWITCHDEV=y
|
||||
CONFIG_NET_XGRESS=y
|
||||
CONFIG_NLS=y
|
||||
@@ -545,17 +461,15 @@ CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NOP_USB_XCEIV=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NTFS_FS=y
|
||||
CONFIG_NTFS_RW=y
|
||||
CONFIG_NR_CPUS=256
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_NVMEM_LAYOUTS=y
|
||||
CONFIG_NVMEM_ROCKCHIP_EFUSE=y
|
||||
CONFIG_NVMEM_ROCKCHIP_OTP=y
|
||||
CONFIG_NVMEM_SYSFS=y
|
||||
# CONFIG_NVMEM_U_BOOT_ENV is not set
|
||||
CONFIG_NVME_CORE=y
|
||||
# CONFIG_NVME_HWMON is not set
|
||||
CONFIG_NVME_MULTIPATH=y
|
||||
# CONFIG_OCTEON_EP is not set
|
||||
# CONFIG_NVME_MULTIPATH is not set
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_DYNAMIC=y
|
||||
@@ -573,17 +487,17 @@ CONFIG_PADATA=y
|
||||
CONFIG_PAGE_POOL=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
|
||||
CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
|
||||
# CONFIG_PANIC_ON_OOPS is not set
|
||||
CONFIG_PANIC_ON_OOPS_VALUE=0
|
||||
CONFIG_PANIC_TIMEOUT=0
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_PARTITION_PERCPU=y
|
||||
CONFIG_PATA_SIS=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEASPM=y
|
||||
# CONFIG_PCIEASPM_DEFAULT is not set
|
||||
CONFIG_PCIEASPM_PERFORMANCE=y
|
||||
CONFIG_PCIEASPM_DEFAULT=y
|
||||
# CONFIG_PCIEASPM_PERFORMANCE is not set
|
||||
# CONFIG_PCIEASPM_POWERSAVE is not set
|
||||
# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
@@ -595,9 +509,6 @@ CONFIG_PCIE_ROCKCHIP_DW_HOST=y
|
||||
CONFIG_PCIE_ROCKCHIP_HOST=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_ECAM=y
|
||||
CONFIG_PCI_HOST_COMMON=y
|
||||
CONFIG_PCI_HOST_GENERIC=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_STUB=y
|
||||
CONFIG_PCS_MTK_LYNXI=y
|
||||
@@ -609,11 +520,11 @@ CONFIG_PHYLIB_LEDS=y
|
||||
CONFIG_PHYLINK=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_PHY_ROCKCHIP_DP=y
|
||||
CONFIG_PHY_ROCKCHIP_DPHY_RX0=y
|
||||
# CONFIG_PHY_ROCKCHIP_DPHY_RX0 is not set
|
||||
CONFIG_PHY_ROCKCHIP_EMMC=y
|
||||
CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y
|
||||
CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y
|
||||
CONFIG_PHY_ROCKCHIP_INNO_HDMI=y
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY is not set
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY is not set
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_HDMI is not set
|
||||
CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
||||
CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y
|
||||
CONFIG_PHY_ROCKCHIP_PCIE=y
|
||||
@@ -628,7 +539,6 @@ CONFIG_PINCTRL_ROCKCHIP=y
|
||||
CONFIG_PL330_DMA=y
|
||||
CONFIG_PLATFORM_MHU=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_PMBUS=y
|
||||
CONFIG_PM_CLK=y
|
||||
CONFIG_PM_DEVFREQ=y
|
||||
CONFIG_PM_DEVFREQ_EVENT=y
|
||||
@@ -639,13 +549,6 @@ CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_POWER_SUPPLY_HWMON=y
|
||||
CONFIG_PPP=y
|
||||
CONFIG_PPPOE=y
|
||||
CONFIG_PPPOE_HASH_BITS=4
|
||||
# CONFIG_PPPOE_HASH_BITS_1 is not set
|
||||
# CONFIG_PPPOE_HASH_BITS_2 is not set
|
||||
CONFIG_PPPOE_HASH_BITS_4=y
|
||||
# CONFIG_PPPOE_HASH_BITS_8 is not set
|
||||
CONFIG_PPS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_PREEMPTION=y
|
||||
@@ -655,24 +558,20 @@ CONFIG_PREEMPT_COUNT=y
|
||||
CONFIG_PREEMPT_RCU=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_PROC_VMCORE=y
|
||||
CONFIG_PTP_1588_CLOCK=y
|
||||
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_ROCKCHIP=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
# CONFIG_PWM_XILINX is not set
|
||||
# CONFIG_QFMT_V1 is not set
|
||||
# CONFIG_QFMT_V2 is not set
|
||||
CONFIG_QUEUED_RWLOCKS=y
|
||||
CONFIG_QUEUED_SPINLOCKS=y
|
||||
CONFIG_QUOTA=y
|
||||
CONFIG_QUOTACTL=y
|
||||
# CONFIG_QUOTA_NETLINK_INTERFACE is not set
|
||||
CONFIG_RAID_ATTRS=y
|
||||
CONFIG_RANDOMIZE_BASE=y
|
||||
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
|
||||
CONFIG_RANDOMIZE_MODULE_REGION_FULL=y
|
||||
# CONFIG_RANDOM_KMALLOC_CACHES is not set
|
||||
CONFIG_RANDSTRUCT_NONE=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RATIONAL=y
|
||||
@@ -685,40 +584,28 @@ CONFIG_REGMAP_IRQ=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_SPI=y
|
||||
CONFIG_REGULATOR=y
|
||||
# CONFIG_REGULATOR_ARM_SCMI is not set
|
||||
CONFIG_REGULATOR_ARM_SCMI=y
|
||||
CONFIG_REGULATOR_FAN53555=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_GPIO=y
|
||||
# CONFIG_REGULATOR_MAX77857 is not set
|
||||
CONFIG_REGULATOR_PWM=y
|
||||
# CONFIG_REGULATOR_RAA215300 is not set
|
||||
CONFIG_REGULATOR_RK808=y
|
||||
# CONFIG_REGULATOR_RT5190A is not set
|
||||
# CONFIG_REGULATOR_RT5759 is not set
|
||||
# CONFIG_REGULATOR_TPS6286X is not set
|
||||
CONFIG_RELOCATABLE=y
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RESET_SCMI=y
|
||||
CONFIG_RFKILL_FULL=y
|
||||
CONFIG_RFKILL_GPIO=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
# CONFIG_ROCKCHIP_ANALOGIX_DP is not set
|
||||
# CONFIG_ROCKCHIP_CDN_DP is not set
|
||||
CONFIG_ROCKCHIP_DW_HDMI=y
|
||||
CONFIG_ROCKCHIP_DW_MIPI_DSI=y
|
||||
CONFIG_ROCKCHIP_CPUINFO=y
|
||||
CONFIG_ROCKCHIP_ERRATUM_3588001=y
|
||||
CONFIG_ROCKCHIP_GRF=y
|
||||
CONFIG_ROCKCHIP_INNO_HDMI=y
|
||||
CONFIG_ROCKCHIP_IODOMAIN=y
|
||||
CONFIG_ROCKCHIP_IOMMU=y
|
||||
# CONFIG_ROCKCHIP_LVDS is not set
|
||||
CONFIG_ROCKCHIP_MBOX=y
|
||||
CONFIG_ROCKCHIP_PHY=y
|
||||
CONFIG_ROCKCHIP_PM_DOMAINS=y
|
||||
# CONFIG_ROCKCHIP_RGB is not set
|
||||
CONFIG_ROCKCHIP_RK3066_HDMI=y
|
||||
CONFIG_ROCKCHIP_THERMAL=y
|
||||
CONFIG_ROCKCHIP_TIMER=y
|
||||
CONFIG_ROCKCHIP_VOP=y
|
||||
CONFIG_ROCKCHIP_VOP2=y
|
||||
CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RSEQ=y
|
||||
@@ -729,37 +616,23 @@ CONFIG_RTC_I2C_AND_SPI=y
|
||||
CONFIG_RTC_NVMEM=y
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_SATA_AHCI=y
|
||||
CONFIG_SATA_AHCI_PLATFORM=y
|
||||
CONFIG_SATA_HOST=y
|
||||
CONFIG_SATA_PMP=y
|
||||
CONFIG_SATA_SIS=y
|
||||
CONFIG_SATA_VIA=y
|
||||
CONFIG_SCHED_CLUSTER=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_COMMON=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
# CONFIG_SCSI_SAS_ATA is not set
|
||||
CONFIG_SCSI_SAS_ATTRS=y
|
||||
CONFIG_SCSI_SAS_HOST_SMP=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=y
|
||||
CONFIG_SDIO_UART=y
|
||||
# CONFIG_SECURITY_DMESG_RESTRICT is not set
|
||||
# CONFIG_SENSORS_ACBEL_FSG032 is not set
|
||||
CONFIG_SENSORS_ARM_SCMI=y
|
||||
CONFIG_SENSORS_ARM_SCPI=y
|
||||
CONFIG_SENSORS_GPIO_FAN=y
|
||||
# CONFIG_SENSORS_HS3001 is not set
|
||||
# CONFIG_SENSORS_NCT6775_I2C is not set
|
||||
CONFIG_SENSORS_PWM_FAN=y
|
||||
# CONFIG_SENSORS_TMP464 is not set
|
||||
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
|
||||
CONFIG_SERIAL_8250_DW=y
|
||||
CONFIG_SERIAL_8250_DWLIB=y
|
||||
CONFIG_SERIAL_8250_EXAR=y
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_FINTEK=y
|
||||
CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_PCI=y
|
||||
@@ -775,18 +648,9 @@ CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_AMBAKMI=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
CONFIG_SERIO_PCIPS2=y
|
||||
CONFIG_SERIO_RAW=y
|
||||
# CONFIG_SFC_SIENA is not set
|
||||
CONFIG_SGL_ALLOC=y
|
||||
CONFIG_SG_POOL=y
|
||||
# CONFIG_SHORTCUT_FE is not set
|
||||
CONFIG_SLHC=y
|
||||
CONFIG_SLUB=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SOCK_RX_QUEUE_MAPPING=y
|
||||
CONFIG_SOC_BUS=y
|
||||
CONFIG_SOFTIRQ_ON_OWN_STACK=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_SPARSEMEM_EXTREME=y
|
||||
@@ -798,22 +662,20 @@ CONFIG_SPI_BITBANG=y
|
||||
CONFIG_SPI_DYNAMIC=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SPI_MEM=y
|
||||
# CONFIG_SPI_MICROCHIP_CORE_QSPI is not set
|
||||
CONFIG_SPI_ROCKCHIP=y
|
||||
CONFIG_SPI_ROCKCHIP_SFC=y
|
||||
CONFIG_SPI_SPIDEV=y
|
||||
CONFIG_SQUASHFS_DECOMP_SINGLE=y
|
||||
CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
|
||||
# CONFIG_SQUASHFS_EMBEDDED is not set
|
||||
CONFIG_SQUASHFS_FILE_CACHE=y
|
||||
# CONFIG_SQUASHFS_FILE_DIRECT is not set
|
||||
CONFIG_SRAM=y
|
||||
CONFIG_STACKDEPOT=y
|
||||
CONFIG_STACKPROTECTOR=y
|
||||
CONFIG_STACKPROTECTOR_PER_TASK=y
|
||||
CONFIG_STACKPROTECTOR_STRONG=y
|
||||
CONFIG_STACKTRACE=y
|
||||
CONFIG_STMMAC_ETH=y
|
||||
CONFIG_STMMAC_PLATFORM=y
|
||||
# CONFIG_STMMAC_SELFTESTS is not set
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
# CONFIG_SWAP is not set
|
||||
@@ -835,7 +697,6 @@ CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
# CONFIG_TMPFS_QUOTA is not set
|
||||
CONFIG_TRACE_CLOCK=y
|
||||
CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
@@ -846,10 +707,10 @@ CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
CONFIG_TYPEC=y
|
||||
# CONFIG_TYPEC_ANX7411 is not set
|
||||
# CONFIG_TYPEC_DP_ALTMODE is not set
|
||||
CONFIG_TYPEC_FUSB302=y
|
||||
# CONFIG_TYPEC_HD3SS3220 is not set
|
||||
# CONFIG_TYPEC_MUX_FSA4480 is not set
|
||||
# CONFIG_TYPEC_MUX_GPIO_SBU is not set
|
||||
# CONFIG_TYPEC_MUX_NB7VPQ904M is not set
|
||||
# CONFIG_TYPEC_MUX_PI3USB30532 is not set
|
||||
# CONFIG_TYPEC_RT1719 is not set
|
||||
@@ -858,7 +719,6 @@ CONFIG_TYPEC_FUSB302=y
|
||||
CONFIG_TYPEC_TCPM=y
|
||||
# CONFIG_TYPEC_TPS6598X is not set
|
||||
# CONFIG_TYPEC_WUSB3801 is not set
|
||||
# CONFIG_UACCE is not set
|
||||
# CONFIG_UCLAMP_TASK is not set
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_UNINLINE_SPIN_UNLOCK=y
|
||||
@@ -882,22 +742,14 @@ CONFIG_USB_ULPI_BUS=y
|
||||
CONFIG_USB_ULPI_VIEWPORT=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_PLATFORM=y
|
||||
CONFIG_USERIO=y
|
||||
CONFIG_VIDEOMODE_HELPERS=y
|
||||
CONFIG_VIDEO_CMDLINE=y
|
||||
CONFIG_VIDEO_NOMODESET=y
|
||||
# CONFIG_VIRTIO is not set
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_VIRTIO_PCI_LIB is not set
|
||||
CONFIG_VMAP_STACK=y
|
||||
# CONFIG_VMWARE_VMCI is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_XARRAY_MULTI=y
|
||||
# CONFIG_XILINX_WINDOW_WATCHDOG is not set
|
||||
CONFIG_XPS=y
|
||||
CONFIG_XXHASH=y
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
Rockchip cpuinfo device tree bindings
|
||||
----------------------------------
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be one of the following.
|
||||
- "rockchip,cpuinfo"
|
||||
- nvmem-cells: A phandle to the ID data provided by a nvmem device.
|
||||
- nvmem-cell-names: Should be "id"
|
||||
|
||||
Example:
|
||||
|
||||
cpuinfo {
|
||||
compatible = "rockchip,cpuinfo";
|
||||
nvmem-cells = <&efuse_id>;
|
||||
nvmem-cell-names = "id";
|
||||
};
|
||||
@@ -1,668 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "rk3399.dtsi"
|
||||
#include "rk3399-opp.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Huake-Cloud GuangMiao G4C";
|
||||
compatible = "huake,guangmiao-g4c", "rockchip,rk3399";
|
||||
|
||||
/delete-node/ display-subsystem;
|
||||
|
||||
aliases {
|
||||
led-boot = &status_led;
|
||||
led-failsafe = &status_led;
|
||||
led-running = &status_led;
|
||||
led-upgrade = &status_led;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial2:1500000n8";
|
||||
};
|
||||
|
||||
clkin_gmac: external-gmac-clock {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <125000000>;
|
||||
clock-output-names = "clkin_gmac";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
vcc_sys: vcc-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-name = "vcc_sys";
|
||||
};
|
||||
|
||||
vcc3v3_sys: vcc3v3-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcc3v3_sys";
|
||||
vin-supply = <&vcc_sys>;
|
||||
};
|
||||
|
||||
vcc_0v9: vcc-0v9-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
regulator-name = "vcc_0v9";
|
||||
vin-supply = <&vcc3v3_sys>;
|
||||
};
|
||||
|
||||
vcc5v0_host0: vcc5v0-host0-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc5v0_host0";
|
||||
vin-supply = <&vcc_sys>;
|
||||
};
|
||||
|
||||
vdd_log: vdd-log-regulator {
|
||||
compatible = "pwm-regulator";
|
||||
pwms = <&pwm2 0 25000 1>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-name = "vdd_log";
|
||||
vin-supply = <&vcc_sys>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&reset_button_pin>;
|
||||
|
||||
button-reset {
|
||||
label = "reset";
|
||||
debounce-interval = <100>;
|
||||
gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&lan_led_pin>, <&status_led_pin>, <&wan_led_pin>;
|
||||
|
||||
lan_led: led-lan {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
status_led: led-status {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
wan_led: led-wan {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&cpu_b0 {
|
||||
cpu-supply = <&vdd_cpu_b>;
|
||||
};
|
||||
|
||||
&cpu_b1 {
|
||||
cpu-supply = <&vdd_cpu_b>;
|
||||
};
|
||||
|
||||
&cpu_l0 {
|
||||
cpu-supply = <&vdd_cpu_l>;
|
||||
};
|
||||
|
||||
&cpu_l1 {
|
||||
cpu-supply = <&vdd_cpu_l>;
|
||||
};
|
||||
|
||||
&cpu_l2 {
|
||||
cpu-supply = <&vdd_cpu_l>;
|
||||
};
|
||||
|
||||
&cpu_l3 {
|
||||
cpu-supply = <&vdd_cpu_l>;
|
||||
};
|
||||
|
||||
&emmc_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac {
|
||||
assigned-clock-parents = <&clkin_gmac>;
|
||||
assigned-clocks = <&cru SCLK_RMII_SRC>;
|
||||
clock_in_out = "input";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&rgmii_pins>, <&phy_intb>, <&phy_pmeb>, <&phy_rstb>;
|
||||
phy-handle = <&rtl8211e>;
|
||||
phy-mode = "rgmii";
|
||||
phy-supply = <&vcc3v3_s3>;
|
||||
tx_delay = <0x28>;
|
||||
rx_delay = <0x11>;
|
||||
status = "okay";
|
||||
|
||||
mdio {
|
||||
compatible = "snps,dwmac-mdio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
rtl8211e: ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
|
||||
reset-assert-us = <10000>;
|
||||
reset-deassert-us = <30000>;
|
||||
reset-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&gpu {
|
||||
mali-supply = <&vdd_gpu>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
clock-frequency = <400000>;
|
||||
i2c-scl-rising-time-ns = <160>;
|
||||
i2c-scl-falling-time-ns = <30>;
|
||||
status = "okay";
|
||||
|
||||
vdd_cpu_b: regulator@40 {
|
||||
compatible = "silergy,syr827";
|
||||
reg = <0x40>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&cpu_b_sleep>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <712500>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-name = "vdd_cpu_b";
|
||||
regulator-ramp-delay = <1000>;
|
||||
vin-supply = <&vcc_sys>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_gpu: regulator@41 {
|
||||
compatible = "silergy,syr828";
|
||||
reg = <0x41>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gpu_sleep>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <712500>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-ramp-delay = <1000>;
|
||||
vin-supply = <&vcc_sys>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
rk808: pmic@1b {
|
||||
compatible = "rockchip,rk808";
|
||||
reg = <0x1b>;
|
||||
clock-output-names = "rtc_clko_soc", "rtc_clko_wifi";
|
||||
#clock-cells = <1>;
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pmic_int_l>;
|
||||
rockchip,system-power-controller;
|
||||
wakeup-source;
|
||||
|
||||
vcc1-supply = <&vcc_sys>;
|
||||
vcc2-supply = <&vcc_sys>;
|
||||
vcc3-supply = <&vcc_sys>;
|
||||
vcc4-supply = <&vcc_sys>;
|
||||
vcc6-supply = <&vcc_sys>;
|
||||
vcc7-supply = <&vcc_sys>;
|
||||
vcc8-supply = <&vcc_3v0>;
|
||||
vcc9-supply = <&vcc_sys>;
|
||||
vcc10-supply = <&vcc_sys>;
|
||||
vcc11-supply = <&vcc_sys>;
|
||||
vcc12-supply = <&vcc_sys>;
|
||||
vddio-supply = <&vcc_3v0>;
|
||||
|
||||
regulators {
|
||||
vdd_center: DCDC_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-name = "vdd_center";
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_cpu_l: DCDC_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-name = "vdd_cpu_l";
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_ddr: DCDC_REG3 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc_ddr";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_1v8: DCDC_REG4 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc_1v8";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_vldo1: LDO_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc_vldo1";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_vldo2: LDO_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc_vldo2";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcca_1v8: LDO_REG3 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcca_1v8";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_sdio: LDO_REG4 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcc_sdio";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v0_sd: LDO_REG5 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-name = "vcc3v0_sd";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_1v5: LDO_REG6 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1500000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-name = "vcc_1v5";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1500000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca1v8_codec: LDO_REG7 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcca1v8_codec";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_3v0: LDO_REG8 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-name = "vcc_3v0";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v3_s3: SWITCH_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc3v3_s3";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v3_s0: SWITCH_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc3v3_s0";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
i2c-scl-rising-time-ns = <450>;
|
||||
i2c-scl-falling-time-ns = <15>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&io_domains {
|
||||
bt656-supply = <&vcc_1v8>;
|
||||
audio-supply = <&vcca1v8_codec>;
|
||||
sdmmc-supply = <&vcc_sdio>;
|
||||
gpio1830-supply = <&vcc_3v0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_phy {
|
||||
assigned-clock-parents = <&cru SCLK_PCIEPHY_REF100M>;
|
||||
assigned-clock-rates = <100000000>;
|
||||
assigned-clocks = <&cru SCLK_PCIEPHY_REF>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
ep-gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
|
||||
max-link-speed = <1>;
|
||||
num-lanes = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pcie_clkreqnb_cpm>;
|
||||
vpcie0v9-supply = <&vcc_0v9>;
|
||||
vpcie1v8-supply = <&vcca_1v8>;
|
||||
vpcie3v3-supply = <&vcc3v3_sys>;
|
||||
status = "okay";
|
||||
|
||||
pcie@0 {
|
||||
reg = <0x00000000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
pcie-eth@0,0 {
|
||||
compatible = "realtek,r8168";
|
||||
reg = <0x000000 0 0 0 0>;
|
||||
|
||||
realtek,led-data = <0x87>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
gpio-leds {
|
||||
lan_led_pin: lan-led-pin {
|
||||
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
status_led_pin: status-led-pin {
|
||||
rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
wan_led_pin: wan-led-pin {
|
||||
rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
gmac {
|
||||
phy_intb: phy-intb {
|
||||
rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
|
||||
phy_pmeb: phy-pmeb {
|
||||
rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
|
||||
phy_rstb: phy-rstb {
|
||||
rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
pmic {
|
||||
cpu_b_sleep: cpu-b-sleep {
|
||||
rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
};
|
||||
|
||||
gpu_sleep: gpu-sleep {
|
||||
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
};
|
||||
|
||||
pmic_int_l: pmic-int-l {
|
||||
rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
rockchip-key {
|
||||
reset_button_pin: reset-button-pin {
|
||||
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
sdio {
|
||||
bt_reg_on_h: bt-reg-on-h {
|
||||
/* external pullup to VCC1V8_PMUPLL */
|
||||
rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
sdmmc {
|
||||
sdmmc0_det_l: sdmmc0-det-l {
|
||||
rockchip,pins = <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pmu_io_domains {
|
||||
pmu1830-supply = <&vcc_3v0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm2 {
|
||||
pinctrl-names = "active";
|
||||
pinctrl-0 = <&pwm2_pin_pull_down>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&saradc {
|
||||
vref-supply = <&vcc_1v8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
bus-width = <8>;
|
||||
mmc-hs200-1_8v;
|
||||
non-removable;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
bus-width = <4>;
|
||||
cap-mmc-highspeed;
|
||||
cap-sd-highspeed;
|
||||
cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
|
||||
disable-wp;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc0_det_l>;
|
||||
vqmmc-supply = <&vcc_sdio>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tcphy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tcphy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tsadc {
|
||||
rockchip,hw-tshut-mode = <1>;
|
||||
rockchip,hw-tshut-polarity = <1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&u2phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&u2phy0_host {
|
||||
phy-supply = <&vcc5v0_host0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&u2phy0_otg {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&u2phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&u2phy1_host {
|
||||
phy-supply = <&vcc5v0_host0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&u2phy1_otg {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdrd3_0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdrd3_1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdrd_dwc3_0 {
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdrd_dwc3_1 {
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopb {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopb_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopl {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopl_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -1,578 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
/*
|
||||
* Copyright (c) 2022 FriendlyElec Computer Tech. Co., Ltd.
|
||||
* (http://www.friendlyelec.com)
|
||||
*
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include <dt-bindings/pinctrl/rockchip.h>
|
||||
#include "rk3566.dtsi"
|
||||
|
||||
/ {
|
||||
model = "FriendlyElec NanoPi R3S";
|
||||
compatible = "friendlyelec,nanopi-r3s", "rockchip,rk3568";
|
||||
|
||||
aliases {
|
||||
mmc0 = &sdmmc0;
|
||||
mmc1 = &sdhci;
|
||||
led-boot = &sys_led;
|
||||
led-failsafe = &sys_led;
|
||||
led-running = &sys_led;
|
||||
led-upgrade = &sys_led;
|
||||
};
|
||||
|
||||
chosen: chosen {
|
||||
stdout-path = "serial2:1500000n8";
|
||||
};
|
||||
|
||||
gmac1_clkin: external-gmac1-clock {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <125000000>;
|
||||
clock-output-names = "gmac1_clkin";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&lan_led_pin>, <&wan_led_pin>, <&sys_led_pin>;
|
||||
|
||||
led-wan {
|
||||
label = "green:wan";
|
||||
gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-lan {
|
||||
label = "green:lan";
|
||||
gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
sys_led: sys-led {
|
||||
label = "red:sys";
|
||||
gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
dc_5v: dc-5v {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "dc_5v";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
};
|
||||
|
||||
vcc3v3_sys: vcc3v3-sys {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
vcc5v0_sys: vcc5v0-sys {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&dc_5v>;
|
||||
};
|
||||
|
||||
vcc5v0_usb: vcc5v0-usb-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_usb";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_host: vcc5v0-usb-host-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc5v0_usb_host_en>;
|
||||
regulator-name = "vcc5v0_usb_host";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&vcc5v0_usb>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_otg: vcc5v0-usb-otg-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc5v0_usb_otg_en>;
|
||||
regulator-name = "vcc5v0_usb_otg";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&vcc5v0_usb>;
|
||||
};
|
||||
};
|
||||
|
||||
&combphy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu1 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu2 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu3 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
vdd_cpu: regulator@1c {
|
||||
compatible = "tcs,tcs4525";
|
||||
reg = <0x1c>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
regulator-name = "vdd_cpu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1150000>;
|
||||
regulator-ramp-delay = <2300>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
rk809: pmic@20 {
|
||||
compatible = "rockchip,rk809";
|
||||
reg = <0x20>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
|
||||
#clock-cells = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pmic_int>;
|
||||
rockchip,system-power-controller;
|
||||
vcc1-supply = <&vcc3v3_sys>;
|
||||
vcc2-supply = <&vcc3v3_sys>;
|
||||
vcc3-supply = <&vcc3v3_sys>;
|
||||
vcc4-supply = <&vcc3v3_sys>;
|
||||
vcc5-supply = <&vcc3v3_sys>;
|
||||
vcc6-supply = <&vcc3v3_sys>;
|
||||
vcc7-supply = <&vcc3v3_sys>;
|
||||
vcc8-supply = <&vcc3v3_sys>;
|
||||
vcc9-supply = <&vcc3v3_sys>;
|
||||
wakeup-source;
|
||||
|
||||
regulators {
|
||||
vdd_logic: DCDC_REG1 {
|
||||
regulator-name = "vdd_logic";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_gpu: DCDC_REG2 {
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-always-on;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_ddr: DCDC_REG3 {
|
||||
regulator-name = "vcc_ddr";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-initial-mode = <0x2>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_npu: DCDC_REG4 {
|
||||
regulator-name = "vdd_npu";
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_1v8: DCDC_REG5 {
|
||||
regulator-name = "vcc_1v8";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda0v9_image: LDO_REG1 {
|
||||
regulator-name = "vdda0v9_image";
|
||||
regulator-min-microvolt = <950000>;
|
||||
regulator-max-microvolt = <950000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda_0v9: LDO_REG2 {
|
||||
regulator-name = "vdda_0v9";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda0v9_pmu: LDO_REG3 {
|
||||
regulator-name = "vdda0v9_pmu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <900000>;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_acodec: LDO_REG4 {
|
||||
regulator-name = "vccio_acodec";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_sd: LDO_REG5 {
|
||||
regulator-name = "vccio_sd";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v3_pmu: LDO_REG6 {
|
||||
regulator-name = "vcc3v3_pmu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca_1v8: LDO_REG7 {
|
||||
regulator-name = "vcca_1v8";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcca1v8_pmu: LDO_REG8 {
|
||||
regulator-name = "vcca1v8_pmu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca1v8_image: LDO_REG9 {
|
||||
regulator-name = "vcca1v8_image";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_3v3: SWITCH_REG1 {
|
||||
regulator-name = "vcc_3v3";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v3_sd: SWITCH_REG2 {
|
||||
regulator-name = "vcc3v3_sd";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
&pmu_io_domains {
|
||||
status = "okay";
|
||||
pmuio2-supply = <&vcc3v3_pmu>;
|
||||
vccio2-supply = <&vcc_1v8>;
|
||||
vccio3-supply = <&vccio_sd>;
|
||||
vccio4-supply = <&vcc_3v3>;
|
||||
vccio5-supply = <&vcc_1v8>;
|
||||
vccio6-supply = <&vcc_3v3>;
|
||||
vccio7-supply = <&vcc_3v3>;
|
||||
};
|
||||
|
||||
&pwm0 {
|
||||
status = "disabled";
|
||||
/* connected with sys_led */
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
phy-mode = "rgmii";
|
||||
clock_in_out = "output";
|
||||
|
||||
snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;
|
||||
snps,reset-active-low;
|
||||
/* Reset time is 15ms, 50ms for rtl8211f */
|
||||
snps,reset-delays-us = <0 15000 50000>;
|
||||
|
||||
assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
|
||||
assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru CLK_MAC1_2TOP>;
|
||||
assigned-clock-rates = <0>, <125000000>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac1m0_miim
|
||||
&gmac1m0_tx_bus2_level3
|
||||
&gmac1m0_rx_bus2
|
||||
&gmac1m0_rgmii_clk_level2
|
||||
&gmac1m0_rgmii_bus_level3>;
|
||||
|
||||
tx_delay = <0x3c>;
|
||||
rx_delay = <0x2f>;
|
||||
|
||||
phy-handle = <&rgmii_phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mdio1 {
|
||||
rgmii_phy1: phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0x1>;
|
||||
interrupt-parent = <&gpio4>;
|
||||
interrupts = <RK_PC3 IRQ_TYPE_LEVEL_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac_int>;
|
||||
realtek,ledsel = <0xae00>;
|
||||
};
|
||||
};
|
||||
|
||||
&saradc {
|
||||
vref-supply = <&vcca_1v8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
|
||||
hym8563: hym8563@51 {
|
||||
compatible = "haoyu,hym8563";
|
||||
reg = <0x51>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&rtc_int>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
|
||||
wakeup-source;
|
||||
};
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
bus-width = <8>;
|
||||
max-frequency = <200000000>;
|
||||
non-removable;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc0 {
|
||||
max-frequency = <150000000>;
|
||||
no-sdio;
|
||||
no-mmc;
|
||||
bus-width = <4>;
|
||||
cap-mmc-highspeed;
|
||||
cap-sd-highspeed;
|
||||
disable-wp;
|
||||
vmmc-supply = <&vcc3v3_sd>;
|
||||
vqmmc-supply = <&vccio_sd>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie2x1 {
|
||||
num-viewport = <4>;
|
||||
reset-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
hym8563 {
|
||||
hym8563_int: hym8563-int {
|
||||
rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
pmic {
|
||||
pmic_int: pmic-int {
|
||||
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
usb {
|
||||
vcc5v0_usb_host_en: vcc5v0-usb-host-en {
|
||||
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_otg_en: vcc5v0-usb-otg-en {
|
||||
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-key {
|
||||
key1_pin: key1-pin {
|
||||
rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
sys_led_pin: sys-led-pin {
|
||||
rockchip,pins =
|
||||
<0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
wan_led_pin: wan-led-pin {
|
||||
rockchip,pins =
|
||||
<3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
lan_led_pin: lan-led-pin {
|
||||
rockchip,pins =
|
||||
<3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
gmac {
|
||||
gmac_int: gmac-int {
|
||||
rockchip,pins =
|
||||
<4 RK_PC3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
rtc {
|
||||
rtc_int: rtc-int {
|
||||
rockchip,pins =
|
||||
<0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&usb2phy0_host {
|
||||
phy-supply = <&vcc5v0_usb_host>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0_otg {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1_host {
|
||||
phy-supply = <&vcc5v0_usb_otg>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1_otg {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tsadc {
|
||||
rockchip,hw-tshut-mode = <1>;
|
||||
rockchip,hw-tshut-polarity = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
@@ -1,161 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
/*
|
||||
* Copyright (c) 2022 AmadeusGhost <amadeus@jmu.edu.cn>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "rk3568-mrkaio-m68s.dtsi"
|
||||
|
||||
/ {
|
||||
model = "EZPRO Mrkaio M68S";
|
||||
compatible = "ezpro,mrkaio-m68s", "rockchip,rk3568";
|
||||
|
||||
aliases {
|
||||
ethernet0 = &gmac0;
|
||||
ethernet1 = &gmac1;
|
||||
|
||||
led-boot = &power_led;
|
||||
led-failsafe = &power_led;
|
||||
led-running = &power_led;
|
||||
led-upgrade = &power_led;
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&disk_led_pin>, <&power_led_pin>;
|
||||
|
||||
led-disk {
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
function = LED_FUNCTION_DISK;
|
||||
gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "disk-activity";
|
||||
};
|
||||
|
||||
power_led: led-power {
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
switch_otg: switch-otg-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb_otg_switch_en>;
|
||||
regulator-name = "switch_otg";
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vcc5v0_ahci: vcc5v0-ahci-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sata_pwr_en>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-name = "vcc5v0_ahci";
|
||||
};
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
|
||||
assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
|
||||
assigned-clock-rates = <0>, <125000000>;
|
||||
clock_in_out = "output";
|
||||
phy-mode = "rgmii-id";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac0_miim
|
||||
&gmac0_tx_bus2
|
||||
&gmac0_rx_bus2
|
||||
&gmac0_rgmii_clk
|
||||
&gmac0_rgmii_bus>;
|
||||
snps,reset-gpio = <&gpio3 RK_PA6 GPIO_ACTIVE_LOW>;
|
||||
snps,reset-active-low;
|
||||
/* Reset time is 20ms, 100ms for rtl8211f */
|
||||
snps,reset-delays-us = <0 20000 100000>;
|
||||
tx_delay = <0x3c>;
|
||||
rx_delay = <0x2f>;
|
||||
phy-handle = <&rgmii_phy0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
|
||||
assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
|
||||
assigned-clock-rates = <0>, <125000000>;
|
||||
clock_in_out = "output";
|
||||
phy-mode = "rgmii-id";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac1m1_miim
|
||||
&gmac1m1_tx_bus2
|
||||
&gmac1m1_rx_bus2
|
||||
&gmac1m1_rgmii_clk
|
||||
&gmac1m1_rgmii_bus>;
|
||||
snps,reset-gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>;
|
||||
snps,reset-active-low;
|
||||
/* Reset time is 20ms, 100ms for rtl8211f */
|
||||
snps,reset-delays-us = <0 20000 100000>;
|
||||
tx_delay = <0x42>;
|
||||
rx_delay = <0x28>;
|
||||
phy-handle = <&rgmii_phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
rgmii_phy0: ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
realtek,led-data = <0x6d60>;
|
||||
};
|
||||
};
|
||||
|
||||
&mdio1 {
|
||||
rgmii_phy1: ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
realtek,led-data = <0x6d60>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
leds {
|
||||
disk_led_pin: disk-led-pin {
|
||||
rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
power_led_pin: power-led-pin {
|
||||
rockchip,pins = <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
sata {
|
||||
sata_pwr_en: sata-pwr-en {
|
||||
rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
usb {
|
||||
vcc5v0_usb_host_en: vcc5v0-usb-host-en {
|
||||
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_otg_en: vcc5v0-usb-otg-en {
|
||||
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
usb_otg_switch_en: usb-otg-switch-en {
|
||||
rockchip,pins = <0 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&sata2 {
|
||||
target-supply = <&vcc5v0_ahci>;
|
||||
status = "okay";
|
||||
};
|
||||
@@ -1,511 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/pinctrl/rockchip.h>
|
||||
#include <dt-bindings/soc/rockchip,vop2.h>
|
||||
#include "rk3568.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
mmc0 = &sdmmc0;
|
||||
mmc1 = &sdhci;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial2:1500000n8";
|
||||
};
|
||||
|
||||
hdmi-con {
|
||||
compatible = "hdmi-connector";
|
||||
type = "a";
|
||||
|
||||
port {
|
||||
hdmi_con_in: endpoint {
|
||||
remote-endpoint = <&hdmi_out_con>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dc_12v: dc-12v-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <12000000>;
|
||||
regulator-max-microvolt = <12000000>;
|
||||
regulator-name = "dc_12v";
|
||||
};
|
||||
|
||||
vcc3v3_sys: vcc3v3-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcc3v3_sys";
|
||||
vin-supply = <&dc_12v>;
|
||||
};
|
||||
|
||||
vcc5v0_sys: vcc5v0-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-name = "vcc5v0_sys";
|
||||
vin-supply = <&dc_12v>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_host: vcc5v0-usb-host-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc5v0_usb_host_en>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc5v0_usb_host";
|
||||
};
|
||||
|
||||
vcc5v0_usb_otg: vcc5v0-usb-otg-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc5v0_usb_otg_en>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc5v0_usb_otg";
|
||||
};
|
||||
};
|
||||
|
||||
&combphy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu1 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu2 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu3 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&gpu {
|
||||
mali-supply = <&vdd_gpu>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
avdd-0v9-supply = <&vdda0v9_image>;
|
||||
avdd-1v8-supply = <&vcca1v8_image>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi_in {
|
||||
hdmi_in_vp0: endpoint {
|
||||
remote-endpoint = <&vp0_out_hdmi>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi_out {
|
||||
hdmi_out_con: endpoint {
|
||||
remote-endpoint = <&hdmi_con_in>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi_sound {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
vdd_cpu: regulator@1c {
|
||||
compatible = "tcs,tcs4525";
|
||||
reg = <0x1c>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <712500>;
|
||||
regulator-max-microvolt = <1390000>;
|
||||
regulator-name = "vdd_cpu";
|
||||
regulator-ramp-delay = <2300>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
rk809: pmic@20 {
|
||||
compatible = "rockchip,rk809";
|
||||
reg = <0x20>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
|
||||
#clock-cells = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pmic_int>;
|
||||
rockchip,system-power-controller;
|
||||
wakeup-source;
|
||||
|
||||
vcc1-supply = <&vcc3v3_sys>;
|
||||
vcc2-supply = <&vcc3v3_sys>;
|
||||
vcc3-supply = <&vcc3v3_sys>;
|
||||
vcc4-supply = <&vcc3v3_sys>;
|
||||
vcc5-supply = <&vcc3v3_sys>;
|
||||
vcc6-supply = <&vcc3v3_sys>;
|
||||
vcc7-supply = <&vcc3v3_sys>;
|
||||
vcc8-supply = <&vcc3v3_sys>;
|
||||
vcc9-supply = <&vcc3v3_sys>;
|
||||
|
||||
regulators {
|
||||
vdd_logic: DCDC_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-name = "vdd_logic";
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_gpu: DCDC_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_ddr: DCDC_REG3 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-initial-mode = <0x2>;
|
||||
regulator-name = "vcc_ddr";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_npu: DCDC_REG4 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-name = "vdd_npu";
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_1v8: DCDC_REG5 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc_1v8";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda0v9_image: LDO_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
regulator-name = "vdda0v9_image";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda_0v9: LDO_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
regulator-name = "vdda_0v9";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda0v9_pmu: LDO_REG3 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
regulator-name = "vdda0v9_pmu";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <900000>;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_acodec: LDO_REG4 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vccio_acodec";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_sd: LDO_REG5 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vccio_sd";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v3_pmu: LDO_REG6 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcc3v3_pmu";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca_1v8: LDO_REG7 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcca_1v8";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcca1v8_pmu: LDO_REG8 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcca1v8_pmu";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca1v8_image: LDO_REG9 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcca1v8_image";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_3v3: SWITCH_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc_3v3";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v3_sd: SWITCH_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc3v3_sd";
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2s0_8ch {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
pmic {
|
||||
pmic_int: pmic_int {
|
||||
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pmu_io_domains {
|
||||
pmuio1-supply = <&vcc3v3_pmu>;
|
||||
pmuio2-supply = <&vcc3v3_pmu>;
|
||||
vccio1-supply = <&vccio_acodec>;
|
||||
vccio2-supply = <&vcc_1v8>;
|
||||
vccio3-supply = <&vccio_sd>;
|
||||
vccio4-supply = <&vcc_1v8>;
|
||||
vccio5-supply = <&vcc_3v3>;
|
||||
vccio6-supply = <&vcc_1v8>;
|
||||
vccio7-supply = <&vcc_3v3>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&saradc {
|
||||
vref-supply = <&vcca_1v8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
bus-width = <8>;
|
||||
max-frequency = <200000000>;
|
||||
non-removable;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc0 {
|
||||
bus-width = <4>;
|
||||
cap-sd-highspeed;
|
||||
cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
|
||||
disable-wp;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
|
||||
sd-uhs-sdr104;
|
||||
vmmc-supply = <&vcc3v3_sd>;
|
||||
vqmmc-supply = <&vccio_sd>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tsadc {
|
||||
rockchip,hw-tshut-mode = <1>;
|
||||
rockchip,hw-tshut-polarity = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_xhci {
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_xhci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0_host {
|
||||
phy-supply = <&vcc5v0_usb_host>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0_otg {
|
||||
phy-supply = <&vcc5v0_usb_otg>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1_host {
|
||||
phy-supply = <&vcc5v0_usb_host>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1_otg {
|
||||
phy-supply = <&vcc5v0_usb_host>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vop {
|
||||
assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
|
||||
assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vop_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vp0 {
|
||||
vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
|
||||
reg = <ROCKCHIP_VOP2_EP_HDMI0>;
|
||||
remote-endpoint = <&hdmi_in_vp0>;
|
||||
};
|
||||
};
|
||||
@@ -1,115 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
/*
|
||||
* Copyright (c) 2022 FriendlyElec Computer Tech. Co., Ltd.
|
||||
* (http://www.friendlyelec.com)
|
||||
*
|
||||
* Copyright (c) 2023 Tianling Shen <cnsztl@gmail.com>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "rk3568-nanopi-r5s.dtsi"
|
||||
|
||||
/ {
|
||||
model = "FriendlyElec NanoPi R5C";
|
||||
compatible = "friendlyarm,nanopi-r5c", "rockchip,rk3568";
|
||||
|
||||
aliases {
|
||||
led-boot = &power_led;
|
||||
led-failsafe = &power_led;
|
||||
led-running = &power_led;
|
||||
led-upgrade = &power_led;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&reset_button_pin>;
|
||||
|
||||
button-reset {
|
||||
debounce-interval = <50>;
|
||||
gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_LOW>;
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&lan_led_pin>, <&power_led_pin>,
|
||||
<&wan_led_pin>, <&wlan_led_pin>;
|
||||
|
||||
led-lan {
|
||||
label = "green:lan";
|
||||
gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
power_led: led-power {
|
||||
label = "red:power";
|
||||
gpios = <&gpio3 RK_PA2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-wan {
|
||||
label = "green:wan";
|
||||
gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-wlan {
|
||||
label = "green:wlan";
|
||||
gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie2x1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pcie20_reset_pin>;
|
||||
reset-gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie3x1 {
|
||||
num-lanes = <1>;
|
||||
reset-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_pcie>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie3x2 {
|
||||
num-lanes = <1>;
|
||||
reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_pcie>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
gpio-leds {
|
||||
lan_led_pin: lan-led-pin {
|
||||
rockchip,pins = <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
power_led_pin: power-led-pin {
|
||||
rockchip,pins = <3 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
wan_led_pin: wan-led-pin {
|
||||
rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
wlan_led_pin: wlan-led-pin {
|
||||
rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
pcie {
|
||||
pcie20_reset_pin: pcie20-reset-pin {
|
||||
rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
rockchip-key {
|
||||
reset_button_pin: reset-button-pin {
|
||||
rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -1,136 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
/*
|
||||
* Copyright (c) 2022 FriendlyElec Computer Tech. Co., Ltd.
|
||||
* (http://www.friendlyelec.com)
|
||||
*
|
||||
* Copyright (c) 2023 Tianling Shen <cnsztl@gmail.com>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "rk3568-nanopi-r5s.dtsi"
|
||||
|
||||
/ {
|
||||
model = "FriendlyElec NanoPi R5S";
|
||||
compatible = "friendlyarm,nanopi-r5s", "rockchip,rk3568";
|
||||
|
||||
aliases {
|
||||
ethernet0 = &gmac0;
|
||||
|
||||
led-boot = &power_led;
|
||||
led-failsafe = &power_led;
|
||||
led-running = &power_led;
|
||||
led-upgrade = &power_led;
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&lan1_led_pin>, <&lan2_led_pin>,
|
||||
<&power_led_pin>, <&wan_led_pin>;
|
||||
|
||||
led-lan1 {
|
||||
label = "green:lan1";
|
||||
gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-lan2 {
|
||||
label = "green:lan2";
|
||||
gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
power_led: led-power {
|
||||
label = "red:power";
|
||||
gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-wan {
|
||||
label = "green:wan";
|
||||
gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
|
||||
assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>, <&cru CLK_MAC0_2TOP>;
|
||||
assigned-clock-rates = <0>, <125000000>;
|
||||
clock_in_out = "output";
|
||||
phy-handle = <&rgmii_phy0>;
|
||||
phy-mode = "rgmii";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac0_miim
|
||||
&gmac0_tx_bus2
|
||||
&gmac0_rx_bus2
|
||||
&gmac0_rgmii_clk
|
||||
&gmac0_rgmii_bus>;
|
||||
snps,reset-gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_LOW>;
|
||||
snps,reset-active-low;
|
||||
/* Reset time is 15ms, 50ms for rtl8211f */
|
||||
snps,reset-delays-us = <0 15000 50000>;
|
||||
tx_delay = <0x3c>;
|
||||
rx_delay = <0x2f>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
rgmii_phy0: ethernet-phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <1>;
|
||||
pinctrl-0 = <ð_phy0_reset_pin>;
|
||||
pinctrl-names = "default";
|
||||
realtek,led-data = <0x6d60>;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie2x1 {
|
||||
num-lanes = <1>;
|
||||
reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie30phy {
|
||||
data-lanes = <1 2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie3x1 {
|
||||
num-lanes = <1>;
|
||||
reset-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_pcie>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie3x2 {
|
||||
num-lanes = <1>;
|
||||
num-ib-windows = <8>;
|
||||
num-ob-windows = <8>;
|
||||
reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_pcie>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
gmac0 {
|
||||
eth_phy0_reset_pin: eth-phy0-reset-pin {
|
||||
rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
lan1_led_pin: lan1-led-pin {
|
||||
rockchip,pins = <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
lan2_led_pin: lan2-led-pin {
|
||||
rockchip,pins = <3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
power_led_pin: power-led-pin {
|
||||
rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
wan_led_pin: wan-led-pin {
|
||||
rockchip,pins = <2 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -1,595 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
/*
|
||||
* Copyright (c) 2022 FriendlyElec Computer Tech. Co., Ltd.
|
||||
* (http://www.friendlyelec.com)
|
||||
*
|
||||
* Copyright (c) 2023 Tianling Shen <cnsztl@gmail.com>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include <dt-bindings/pinctrl/rockchip.h>
|
||||
#include <dt-bindings/soc/rockchip,vop2.h>
|
||||
#include "rk3568-lubancat.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
mmc0 = &sdmmc0;
|
||||
mmc1 = &sdhci;
|
||||
|
||||
led-boot = &power_led;
|
||||
led-failsafe = &power_led;
|
||||
led-running = &power_led;
|
||||
led-upgrade = &power_led;
|
||||
};
|
||||
|
||||
chosen: chosen {
|
||||
stdout-path = "serial2:1500000n8";
|
||||
};
|
||||
|
||||
hdmi-con {
|
||||
compatible = "hdmi-connector";
|
||||
type = "a";
|
||||
|
||||
port {
|
||||
hdmi_con_in: endpoint {
|
||||
remote-endpoint = <&hdmi_out_con>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vdd_usbc: vdd-usbc-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vdd_usbc";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
};
|
||||
|
||||
vcc3v3_sys: vcc3v3-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vdd_usbc>;
|
||||
};
|
||||
|
||||
vcc5v0_sys: vcc5v0-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&vdd_usbc>;
|
||||
};
|
||||
|
||||
vcc3v3_pcie: vcc3v3-pcie-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_pcie";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
enable-active-high;
|
||||
gpios = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>;
|
||||
startup-delay-us = <200000>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
vcc5v0_usb: vcc5v0-usb-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_usb";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&vdd_usbc>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_host: vcc5v0-usb-host-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc5v0_usb_host_en>;
|
||||
regulator-name = "vcc5v0_usb_host";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&vcc5v0_usb>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_otg: vcc5v0-usb-otg-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc5v0_usb_otg_en>;
|
||||
regulator-name = "vcc5v0_usb_otg";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&vcc5v0_usb>;
|
||||
};
|
||||
|
||||
pcie30_avdd0v9: pcie30-avdd0v9-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "pcie30_avdd0v9";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
vin-supply = <&vcc3v3_sys>;
|
||||
};
|
||||
|
||||
pcie30_avdd1v8: pcie30-avdd1v8-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "pcie30_avdd1v8";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&vcc3v3_sys>;
|
||||
};
|
||||
};
|
||||
|
||||
&combphy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu1 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu2 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu3 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&gpu {
|
||||
mali-supply = <&vdd_gpu>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
avdd-0v9-supply = <&vdda0v9_image>;
|
||||
avdd-1v8-supply = <&vcca1v8_image>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi_in {
|
||||
hdmi_in_vp0: endpoint {
|
||||
remote-endpoint = <&vp0_out_hdmi>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi_out {
|
||||
hdmi_out_con: endpoint {
|
||||
remote-endpoint = <&hdmi_con_in>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi_sound {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
vdd_cpu: regulator@1c {
|
||||
compatible = "tcs,tcs4525";
|
||||
reg = <0x1c>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
regulator-name = "vdd_cpu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1150000>;
|
||||
regulator-ramp-delay = <2300>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
rk809: pmic@20 {
|
||||
compatible = "rockchip,rk809";
|
||||
reg = <0x20>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
|
||||
#clock-cells = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pmic_int>;
|
||||
rockchip,system-power-controller;
|
||||
vcc1-supply = <&vcc3v3_sys>;
|
||||
vcc2-supply = <&vcc3v3_sys>;
|
||||
vcc3-supply = <&vcc3v3_sys>;
|
||||
vcc4-supply = <&vcc3v3_sys>;
|
||||
vcc5-supply = <&vcc3v3_sys>;
|
||||
vcc6-supply = <&vcc3v3_sys>;
|
||||
vcc7-supply = <&vcc3v3_sys>;
|
||||
vcc8-supply = <&vcc3v3_sys>;
|
||||
vcc9-supply = <&vcc3v3_sys>;
|
||||
wakeup-source;
|
||||
|
||||
regulators {
|
||||
vdd_logic: DCDC_REG1 {
|
||||
regulator-name = "vdd_logic";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_gpu: DCDC_REG2 {
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-always-on;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_ddr: DCDC_REG3 {
|
||||
regulator-name = "vcc_ddr";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-initial-mode = <0x2>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_npu: DCDC_REG4 {
|
||||
regulator-name = "vdd_npu";
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_1v8: DCDC_REG5 {
|
||||
regulator-name = "vcc_1v8";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda0v9_image: LDO_REG1 {
|
||||
regulator-name = "vdda0v9_image";
|
||||
regulator-min-microvolt = <950000>;
|
||||
regulator-max-microvolt = <950000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda_0v9: LDO_REG2 {
|
||||
regulator-name = "vdda_0v9";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda0v9_pmu: LDO_REG3 {
|
||||
regulator-name = "vdda0v9_pmu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <900000>;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_acodec: LDO_REG4 {
|
||||
regulator-name = "vccio_acodec";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_sd: LDO_REG5 {
|
||||
regulator-name = "vccio_sd";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v3_pmu: LDO_REG6 {
|
||||
regulator-name = "vcc3v3_pmu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca_1v8: LDO_REG7 {
|
||||
regulator-name = "vcca_1v8";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcca1v8_pmu: LDO_REG8 {
|
||||
regulator-name = "vcca1v8_pmu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca1v8_image: LDO_REG9 {
|
||||
regulator-name = "vcca1v8_image";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_3v3: SWITCH_REG1 {
|
||||
regulator-name = "vcc_3v3";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v3_sd: SWITCH_REG2 {
|
||||
regulator-name = "vcc3v3_sd";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
&i2c5 {
|
||||
status = "okay";
|
||||
|
||||
hym8563: rtc@51 {
|
||||
compatible = "haoyu,hym8563";
|
||||
reg = <0x51>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
|
||||
#clock-cells = <0>;
|
||||
clock-output-names = "rtcic_32kout";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hym8563_int>;
|
||||
wakeup-source;
|
||||
};
|
||||
};
|
||||
|
||||
&i2s0_8ch {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie30phy {
|
||||
data-lanes = <1 2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
hym8563 {
|
||||
hym8563_int: hym8563-int {
|
||||
rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
pmic {
|
||||
pmic_int: pmic-int {
|
||||
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
usb {
|
||||
vcc5v0_usb_host_en: vcc5v0-usb-host-en {
|
||||
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_otg_en: vcc5v0-usb-otg-en {
|
||||
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pmu_io_domains {
|
||||
pmuio1-supply = <&vcc3v3_pmu>;
|
||||
pmuio2-supply = <&vcc3v3_pmu>;
|
||||
vccio1-supply = <&vccio_acodec>;
|
||||
vccio3-supply = <&vccio_sd>;
|
||||
vccio4-supply = <&vcc_1v8>;
|
||||
vccio5-supply = <&vcc_3v3>;
|
||||
vccio6-supply = <&vcc_1v8>;
|
||||
vccio7-supply = <&vcc_3v3>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&saradc {
|
||||
vref-supply = <&vcca_1v8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
bus-width = <8>;
|
||||
max-frequency = <200000000>;
|
||||
non-removable;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc0 {
|
||||
max-frequency = <150000000>;
|
||||
no-sdio;
|
||||
no-mmc;
|
||||
bus-width = <4>;
|
||||
cap-mmc-highspeed;
|
||||
cap-sd-highspeed;
|
||||
disable-wp;
|
||||
vmmc-supply = <&vcc3v3_sd>;
|
||||
vqmmc-supply = <&vccio_sd>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tsadc {
|
||||
rockchip,hw-tshut-mode = <1>;
|
||||
rockchip,hw-tshut-polarity = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_xhci {
|
||||
extcon = <&usb2phy0>;
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_xhci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0_host {
|
||||
phy-supply = <&vcc5v0_usb_host>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0_otg {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1_host {
|
||||
phy-supply = <&vcc5v0_usb_otg>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1_otg {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vop {
|
||||
assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
|
||||
assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vop_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vp0 {
|
||||
vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
|
||||
reg = <ROCKCHIP_VOP2_EP_HDMI0>;
|
||||
remote-endpoint = <&hdmi_in_vp0>;
|
||||
};
|
||||
};
|
||||
@@ -1,600 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include <dt-bindings/pinctrl/rockchip.h>
|
||||
#include <dt-bindings/soc/rockchip,vop2.h>
|
||||
#include "rk3568.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Ariaboard Photonicat";
|
||||
compatible = "ariaboard,photonicat", "rockchip,rk3568";
|
||||
|
||||
aliases {
|
||||
ethernet0 = &gmac0;
|
||||
ethernet1 = &gmac1;
|
||||
mmc0 = &sdhci;
|
||||
mmc1 = &sdmmc0;
|
||||
mmc2 = &sdmmc1;
|
||||
};
|
||||
|
||||
chosen: chosen {
|
||||
stdout-path = "serial2:1500000n8";
|
||||
};
|
||||
|
||||
gpio-poweroff {
|
||||
compatible = "gpio-poweroff";
|
||||
gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_LOW>;
|
||||
timeout-ms = <3000>;
|
||||
};
|
||||
|
||||
hdmi-con {
|
||||
compatible = "hdmi-connector";
|
||||
type = "a";
|
||||
|
||||
port {
|
||||
hdmi_con_in: endpoint {
|
||||
remote-endpoint = <&hdmi_out_con>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
modem-rfkill {
|
||||
compatible = "rfkill-gpio";
|
||||
label = "modem-rfkill";
|
||||
radio-type = "wwan";
|
||||
reset-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>;
|
||||
shutdown-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
sdio_pwrseq: sdio-pwrseq {
|
||||
compatible = "mmc-pwrseq-simple";
|
||||
clocks = <&pmucru CLK_RTC_32K>;
|
||||
clock-names = "ext_clock";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&wifi_enable_h &clk32k_out1>;
|
||||
reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
vcc_sysin: vcc-sysin-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_sysin";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
};
|
||||
|
||||
vcc_syson: vcc-syson-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_syson";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&vcc_sysin>;
|
||||
};
|
||||
|
||||
vcc3v3_sys: vcc3v3-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vcc_syson>;
|
||||
};
|
||||
|
||||
vcc_1v8: vcc-1v8-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_1v8";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&vcc3v3_sys>;
|
||||
};
|
||||
|
||||
vcc_3v3: vcc-3v3-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_3v3";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vcc3v3_sys>;
|
||||
};
|
||||
|
||||
vcc3v3_ngff: vcc3v3-ngff-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;
|
||||
regulator-name = "vcc3v3_ngff";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
/* pi6c pcie clock generator */
|
||||
vcc3v3_pi6c: vcc3v3-pi6c-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pcie_enable_h>;
|
||||
regulator-name = "vcc3v3_pi6c";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vcc_syson>;
|
||||
};
|
||||
|
||||
/* actually fed by vcc_syson, dependent on pi6c clock generator */
|
||||
vcc3v3_pcie: vcc3v3-pcie-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_pcie";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vcc3v3_pi6c>;
|
||||
};
|
||||
|
||||
vcc3v3_sd: vcc3v3-sd-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc_sd_h>;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc3v3_sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vcc_3v3>;
|
||||
};
|
||||
|
||||
vcc5v0_boost: vcc5v0-boost-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc5v0_boost_en>;
|
||||
regulator-name = "vcc5v0_boost";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_otg: vcc5v0-usb-otg-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc5v0_usb_otg_en>;
|
||||
regulator-name = "vcc5v0_usb_otg";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&vcc_sysin>;
|
||||
};
|
||||
|
||||
vcca_1v8: vcca-1v8-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcca_1v8";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&vcc3v3_sys>;
|
||||
};
|
||||
|
||||
vdda_0v9: vdda-0v9-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vdda_0v9";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
vin-supply = <&vcc3v3_sys>;
|
||||
};
|
||||
|
||||
vdd_gpu: vdd-gpu-regulator {
|
||||
compatible = "pwm-regulator";
|
||||
pwms = <&pwm2 0 5000 1>;
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
regulator-settling-time-up-us = <250>;
|
||||
pwm-supply = <&vcc_syson>;
|
||||
};
|
||||
|
||||
vdd_logic: vdd-logic-regulator {
|
||||
compatible = "pwm-regulator";
|
||||
pwms = <&pwm1 0 5000 1>;
|
||||
regulator-name = "vdd_logic";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
regulator-settling-time-up-us = <250>;
|
||||
pwm-supply = <&vcc_syson>;
|
||||
};
|
||||
};
|
||||
|
||||
&combphy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu1 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu2 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu3 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
assigned-clocks = <&cru SCLK_GMAC0_RX_TX>;
|
||||
assigned-clock-parents = <&gmac0_xpcsclk>;
|
||||
power-domains = <&power RK3568_PD_PIPE>;
|
||||
phys = <&combphy2 PHY_TYPE_SGMII>;
|
||||
phy-handle = <&sgmii_phy>;
|
||||
phy-mode = "sgmii";
|
||||
phy-supply = <&vcc_3v3>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac0_miim>;
|
||||
rockchip,xpcs = <&xpcs>;
|
||||
snps,reset-gpio = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
snps,reset-active-low;
|
||||
snps,reset-delays-us = <0 15000 50000>;
|
||||
tx_delay = <0xff>;
|
||||
rx_delay = <0xff>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
|
||||
assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
|
||||
assigned-clock-rates = <0>, <125000000>;
|
||||
clock_in_out = "output";
|
||||
phy-handle = <&rgmii_phy>;
|
||||
phy-mode = "rgmii";
|
||||
phy-supply = <&vcc_3v3>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac1m1_miim
|
||||
&gmac1m1_tx_bus2
|
||||
&gmac1m1_rx_bus2
|
||||
&gmac1m1_rgmii_clk
|
||||
&gmac1m1_rgmii_bus>;
|
||||
snps,reset-gpio = <&gpio4 RK_PC0 GPIO_ACTIVE_LOW>;
|
||||
snps,reset-active-low;
|
||||
snps,reset-delays-us = <0 15000 50000>;
|
||||
tx_delay = <0x30>;
|
||||
rx_delay = <0x10>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpu {
|
||||
mali-supply = <&vdd_gpu>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
avdd-0v9-supply = <&vdda_0v9>;
|
||||
avdd-1v8-supply = <&vcca_1v8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi_in {
|
||||
hdmi_in_vp0: endpoint {
|
||||
remote-endpoint = <&vp0_out_hdmi>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi_out {
|
||||
hdmi_out_con: endpoint {
|
||||
remote-endpoint = <&hdmi_con_in>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi_sound {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
vdd_cpu: regulator@1c {
|
||||
compatible = "tcs,tcs4525";
|
||||
reg = <0x1c>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
regulator-name = "vdd_cpu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-min-microvolt = <712500>;
|
||||
regulator-max-microvolt = <1390000>;
|
||||
regulator-ramp-delay = <2300>;
|
||||
vin-supply = <&vcc_syson>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c2m1_xfer>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2s0_8ch {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
sgmii_phy: ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
motorcomm,led-data = <0xe004 0x0000 0x2600 0x0070 0x000a>;
|
||||
};
|
||||
};
|
||||
|
||||
&mdio1 {
|
||||
rgmii_phy: ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
motorcomm,led-data = <0xe004 0x0000 0x2600 0x0070 0x000a>;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie30phy {
|
||||
phy-supply = <&vcc3v3_pi6c>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie3x2 {
|
||||
reset-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_pcie>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
bt {
|
||||
bt_enable_h: bt-enable-h {
|
||||
rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
pcie {
|
||||
pcie_enable_h: pcie-enable-h {
|
||||
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
sdio-pwrseq {
|
||||
wifi_enable_h: wifi-enable-h {
|
||||
rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
usb {
|
||||
vcc5v0_boost_en: vcc5v0-boost-en {
|
||||
rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_otg_en: vcc5v0-usb-otg-en {
|
||||
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc-sd {
|
||||
vcc_sd_h: vcc-sd-h {
|
||||
rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pmu_io_domains {
|
||||
pmuio1-supply = <&vcc_3v3>;
|
||||
pmuio2-supply = <&vcc_3v3>;
|
||||
vccio1-supply = <&vcc_3v3>;
|
||||
vccio3-supply = <&vcc_3v3>;
|
||||
vccio4-supply = <&vcc_1v8>;
|
||||
vccio5-supply = <&vcc_3v3>;
|
||||
vccio6-supply = <&vcc_3v3>;
|
||||
vccio7-supply = <&vcc_3v3>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&saradc {
|
||||
vref-supply = <&vcca_1v8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
bus-width = <8>;
|
||||
max-frequency = <200000000>;
|
||||
non-removable;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>;
|
||||
vmmc-supply = <&vcc_3v3>;
|
||||
vqmmc-supply = <&vcc_1v8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc0 {
|
||||
bus-width = <4>;
|
||||
cap-sd-highspeed;
|
||||
cd-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_LOW>;
|
||||
disable-wp;
|
||||
no-1-8-v;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd>;
|
||||
vmmc-supply = <&vcc3v3_sd>;
|
||||
vqmmc-supply = <&vcc_3v3>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc1 {
|
||||
bus-width = <4>;
|
||||
cap-sd-highspeed;
|
||||
cap-sdio-irq;
|
||||
keep-power-in-suspend;
|
||||
mmc-pwrseq = <&sdio_pwrseq>;
|
||||
non-removable;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_clk &sdmmc1_cmd>;
|
||||
sd-uhs-sdr25;
|
||||
sd-uhs-sdr50;
|
||||
sd-uhs-sdr104;
|
||||
vmmc-supply = <&vcc3v3_sys>;
|
||||
vqmmc-supply = <&vcc_1v8>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
wifi@1 {
|
||||
reg = <1>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <RK_PB2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "host-wake";
|
||||
};
|
||||
};
|
||||
|
||||
&tsadc {
|
||||
rockchip,hw-tshut-mode = <1>;
|
||||
rockchip,hw-tshut-polarity = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>;
|
||||
status = "okay";
|
||||
uart-has-rtscts;
|
||||
|
||||
bluetooth {
|
||||
compatible = "qcom,qca9377-bt";
|
||||
enable-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
|
||||
clocks = <&pmucru CLK_RTC_32K>;
|
||||
clock-names = "lpo";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&bt_enable_h>;
|
||||
vddio-supply = <&vcc_1v8>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_xhci {
|
||||
dr_mode = "host";
|
||||
extcon = <&usb2phy0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_xhci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0_host {
|
||||
phy-supply = <&vcc3v3_ngff>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0_otg {
|
||||
phy-supply = <&vcc5v0_usb_otg>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1_otg {
|
||||
phy-supply = <&vcc5v0_usb_otg>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vop {
|
||||
assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
|
||||
assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vop_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vp0 {
|
||||
vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
|
||||
reg = <ROCKCHIP_VOP2_EP_HDMI0>;
|
||||
remote-endpoint = <&hdmi_in_vp0>;
|
||||
};
|
||||
};
|
||||
|
||||
&xin32k {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&clk32k_out1>;
|
||||
};
|
||||
|
||||
&xpcs {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -31,28 +31,30 @@
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&led_net_en>, <&led_sata_en>,
|
||||
<&led_user_en>, <&led_work_en>;
|
||||
pinctrl-0 = <&led_red_ai_pin>,
|
||||
<&led_green_work_pin>,
|
||||
<&led_blue_sata_pin>,
|
||||
<&led_amber_net_pin>;
|
||||
|
||||
net {
|
||||
label = "blue:net";
|
||||
gpios = <&gpio2 RK_PC3 GPIO_ACTIVE_HIGH>;
|
||||
led_red_ai: led-red-ai {
|
||||
label = "red:ai";
|
||||
gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
|
||||
sata {
|
||||
label = "amber:sata";
|
||||
gpios = <&gpio2 RK_PC5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
user {
|
||||
label = "green:user";
|
||||
led_green_work: led-green-work {
|
||||
label = "green:work";
|
||||
gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
work {
|
||||
label = "red:work";
|
||||
gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "default-on";
|
||||
led_blue_sata: led-blue-sata {
|
||||
label = "blue:sata";
|
||||
gpios = <&gpio2 RK_PC3 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led_amber_net: led-amber-net {
|
||||
label = "amber:net";
|
||||
gpios = <&gpio2 RK_PC5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -75,6 +77,28 @@
|
||||
vin-supply = <&vcc12v_dcin>;
|
||||
};
|
||||
|
||||
vcc4v0_sys: vcc4v0-sys {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc4v0_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <4000000>;
|
||||
regulator-max-microvolt = <4000000>;
|
||||
startup-delay-us = <100000>;
|
||||
vin-supply = <&vcc12v_dcin>;
|
||||
};
|
||||
|
||||
vcc3v3_sys: vcc3v3-sys {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
startup-delay-us = <100000>;
|
||||
vin-supply = <&vcc12v_dcin>;
|
||||
};
|
||||
|
||||
vcc5v0_usb_host: vcc5v0-usb-host {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_usb_host";
|
||||
@@ -180,6 +204,16 @@
|
||||
vin-supply = <&avcc_1v8_s0>;
|
||||
};
|
||||
|
||||
vcc3v3_pcie20: vcc3v3-pcie20 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_pcie20";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
vin-supply = <&vcc4v0_sys>;
|
||||
};
|
||||
|
||||
vcc3v3_pcie30: vcc3v3-pcie30 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_pcie30";
|
||||
@@ -188,7 +222,7 @@
|
||||
enable-active-high;
|
||||
gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
|
||||
startup-delay-us = <5000>;
|
||||
vin-supply = <&vcc12v_dcin>;
|
||||
vin-supply = <&vcc3v3_sys>;
|
||||
};
|
||||
|
||||
vcc_1v1_nldo_s3: vcc-1v1-nldo-s3 {
|
||||
@@ -212,6 +246,16 @@
|
||||
gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_HIGH>;
|
||||
vin-supply = <&vcc12v_dcin>;
|
||||
};
|
||||
|
||||
vcc3v0_lcd: vcc3v0-lcd {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v0_lcd";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
vin-supply = <&vcc4v0_sys>;
|
||||
};
|
||||
};
|
||||
|
||||
&combphy0_ps {
|
||||
@@ -228,42 +272,39 @@
|
||||
|
||||
&cpu_b0 {
|
||||
cpu-supply = <&vdd_cpu_big0_s0>;
|
||||
mem-supply = <&vdd_cpu_big0_s0>;
|
||||
};
|
||||
|
||||
&cpu_b1 {
|
||||
cpu-supply = <&vdd_cpu_big0_s0>;
|
||||
mem-supply = <&vdd_cpu_big0_s0>;
|
||||
};
|
||||
|
||||
&cpu_b2 {
|
||||
cpu-supply = <&vdd_cpu_big1_s0>;
|
||||
mem-supply = <&vdd_cpu_big1_s0>;
|
||||
};
|
||||
|
||||
&cpu_b3 {
|
||||
cpu-supply = <&vdd_cpu_big1_s0>;
|
||||
mem-supply = <&vdd_cpu_big1_s0>;
|
||||
};
|
||||
|
||||
&cpu_l0 {
|
||||
cpu-supply = <&vdd_cpu_lit_s0>;
|
||||
mem-supply = <&vdd_cpu_lit_mem_s0>;
|
||||
};
|
||||
|
||||
&cpu_l1 {
|
||||
cpu-supply = <&vdd_cpu_lit_s0>;
|
||||
mem-supply = <&vdd_cpu_lit_mem_s0>;
|
||||
};
|
||||
|
||||
&cpu_l2 {
|
||||
cpu-supply = <&vdd_cpu_lit_s0>;
|
||||
mem-supply = <&vdd_cpu_lit_mem_s0>;
|
||||
};
|
||||
|
||||
&cpu_l3 {
|
||||
cpu-supply = <&vdd_cpu_lit_s0>;
|
||||
mem-supply = <&vdd_cpu_lit_mem_s0>;
|
||||
};
|
||||
|
||||
&gpu {
|
||||
mali-supply = <&vdd_gpu_s0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
@@ -759,19 +800,23 @@
|
||||
&i2s0_sdo0>;
|
||||
};
|
||||
|
||||
/* rtl8125b 2.5g ethernet */
|
||||
/* rtl8125b: eth1 */
|
||||
&pcie2x1l1 {
|
||||
reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
|
||||
vpcie3v3-supply = <&vcc3v3_pcie20>;
|
||||
|
||||
pcie@0,0 {
|
||||
reg = <0x00400000 0 0 0 0>;
|
||||
reg = <0x00200000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
rtl8125_1: pcie@40,0 {
|
||||
rtl8125_1: pcie@20,0 {
|
||||
compatible = "pci10ec,8125";
|
||||
reg = <0x000000 0 0 0 0>;
|
||||
label = "eth0";
|
||||
|
||||
realtek,led-data = <0x0 0x0 0x2b 0x200>;
|
||||
label = "eth1";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -789,16 +834,30 @@
|
||||
&pcie2x1l0 {
|
||||
reset-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
vpcie3v3-supply = <&vcc3v3_sys>;
|
||||
};
|
||||
|
||||
pcie@0,0 {
|
||||
reg = <0x00300000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
&spi4 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
assigned-clocks = <&cru CLK_SPI4>;
|
||||
assigned-clock-rates = <200000000>;
|
||||
num-cs = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi4_custom_pins &spi4m2_cs0>;
|
||||
status = "okay";
|
||||
|
||||
rtl8125_2: pcie@30,0 {
|
||||
reg = <0x000000 0 0 0 0>;
|
||||
label = "eth1";
|
||||
};
|
||||
panel@0 {
|
||||
compatible = "sitronix,st7789v";
|
||||
reg = <0>;
|
||||
power-supply = <&vcc3v0_lcd>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&lcd_dc_pin>;
|
||||
dc-gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
|
||||
spi-max-frequency = <2000000>;
|
||||
buswidth = <8>;
|
||||
rotate = <90>;
|
||||
debug = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -811,10 +870,25 @@
|
||||
};
|
||||
|
||||
/* pcie2x1l2 | sata0 => combphy0_ps */
|
||||
/* rtl8125b 2.5g ethernet */
|
||||
/* rtl8125b eth0 */
|
||||
&pcie2x1l2 {
|
||||
reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
vpcie3v3-supply = <&vcc3v3_pcie20>;
|
||||
|
||||
pcie@0,0 {
|
||||
reg = <0x00400000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
rtl8125_2: pcie@40,0 {
|
||||
compatible = "pci10ec,8125";
|
||||
reg = <0x000000 0 0 0 0>;
|
||||
|
||||
realtek,led-data = <0x0 0x0 0x2b 0x200>;
|
||||
label = "eth0";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&sata0 {
|
||||
@@ -836,23 +910,22 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
&pinctrl {
|
||||
leds {
|
||||
led_net_en: led_net_en {
|
||||
rockchip,pins = <2 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
led_red_ai_pin: led-red-ai-pin {
|
||||
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
led_sata_en: led_sata_en {
|
||||
rockchip,pins = <2 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
led_user_en: led_user_en {
|
||||
led_green_work_pin: led-green-work-pin {
|
||||
rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
led_work_en: led_work_en {
|
||||
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
led_blue_sata_pin: led-blue-sata-pin {
|
||||
rockchip,pins = <2 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
led_amber_net_pin: led-amber-net-pin {
|
||||
rockchip,pins = <2 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -903,6 +976,22 @@
|
||||
rockchip,pins = <4 RK_PA0 RK_FUNC_GPIO &pcfg_output_high>;
|
||||
};
|
||||
};
|
||||
|
||||
lcd {
|
||||
lcd_dc_pin: lcd-dc-pin {
|
||||
rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up_drv_level_6>;
|
||||
};
|
||||
|
||||
spi4_custom_pins: spi4-custom-pins {
|
||||
rockchip,pins =
|
||||
/* spi4_clk_m2 */
|
||||
<1 RK_PA2 8 &pcfg_pull_up_drv_level_6>,
|
||||
/* spi4_mosi_m2 */
|
||||
<1 RK_PA1 8 &pcfg_pull_up_drv_level_6>,
|
||||
/* spi4_miso_m0 */
|
||||
<1 RK_PC0 8 &pcfg_pull_up_drv_level_6>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&rng {
|
||||
@@ -1003,11 +1092,11 @@
|
||||
};
|
||||
};
|
||||
|
||||
&usbdp_phy0_dp {
|
||||
&usbdp_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdp_phy0_u3 {
|
||||
&usbdp_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -1015,7 +1104,7 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdp_phy1_u3 {
|
||||
&usbdp_phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -1053,3 +1142,119 @@
|
||||
&usb_host1_xhci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio0 {
|
||||
gpio-line-names =
|
||||
/* GPIO0_A0-A3 */
|
||||
"", "", "", "",
|
||||
/* GPIO0_A4-A7 */
|
||||
"", "", "", "",
|
||||
|
||||
/* GPIO0_B0-B3 */
|
||||
"", "", "", "",
|
||||
/* GPIO0_B4-B7 */
|
||||
"", "PIN_8", "PIN_10", "",
|
||||
|
||||
/* GPIO0_C0-C3 */
|
||||
"", "", "", "",
|
||||
/* GPIO0_C4-C7 */
|
||||
"", "", "", "",
|
||||
|
||||
/* GPIO0_D0-D3 */
|
||||
"", "", "", "",
|
||||
/* GPIO0_D4-D7 */
|
||||
"", "", "", "";
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
gpio-line-names =
|
||||
/* GPIO1_A0-A3 */
|
||||
"", "", "", "",
|
||||
/* GPIO1_A4-A7 */
|
||||
"", "", "", "",
|
||||
|
||||
/* GPIO1_B0-B3 */
|
||||
"", "PIN_21", "PIN_19", "PIN_23",
|
||||
/* GPIO1_B4-B7 */
|
||||
"PIN_24", "PIN_26", "", "PIN_31",
|
||||
|
||||
/* GPIO1_C0-C3 */
|
||||
"", "", "", "",
|
||||
/* GPIO1_C4-C7 */
|
||||
"", "", "", "",
|
||||
|
||||
/* GPIO1_D0-D3 */
|
||||
"", "", "", "",
|
||||
/* GPIO1_D4-D7 */
|
||||
"", "", "", "PIN_29";
|
||||
};
|
||||
|
||||
&gpio2 {
|
||||
gpio-line-names =
|
||||
/* GPIO2_A0-A3 */
|
||||
"", "", "", "",
|
||||
/* GPIO2_A4-A7 */
|
||||
"", "", "", "",
|
||||
|
||||
/* GPIO2_B0-B3 */
|
||||
"", "", "", "",
|
||||
/* GPIO2_B4-B7 */
|
||||
"", "", "", "",
|
||||
|
||||
/* GPIO2_C0-C3 */
|
||||
"", "", "", "",
|
||||
/* GPIO2_C4-C7 */
|
||||
"", "", "", "",
|
||||
|
||||
/* GPIO2_D0-D3 */
|
||||
"", "", "", "",
|
||||
/* GPIO2_D4-D7 */
|
||||
"", "", "", "";
|
||||
};
|
||||
|
||||
&gpio3 {
|
||||
gpio-line-names =
|
||||
/* GPIO3_A0-A3 */
|
||||
"", "", "", "",
|
||||
/* GPIO3_A4-A7 */
|
||||
"PIN_16", "", "", "PIN_33",
|
||||
|
||||
/* GPIO3_B0-B3 */
|
||||
"", "PIN_36", "PIN_38", "PIN_40",
|
||||
/* GPIO3_B4-B7 */
|
||||
"", "PIN_12", "PIN_35", "PIN_13",
|
||||
|
||||
/* GPIO3_C0-C3 */
|
||||
"PIN_15", "PIN_11", "PIN_32", "PIN_7",
|
||||
/* GPIO3_C4-C7 */
|
||||
"", "", "", "",
|
||||
|
||||
/* GPIO3_D0-D3 */
|
||||
"", "", "", "",
|
||||
/* GPIO3_D4-D7 */
|
||||
"", "", "", "";
|
||||
};
|
||||
|
||||
&gpio4 {
|
||||
gpio-line-names =
|
||||
/* GPIO4_A0-A3 */
|
||||
"", "", "", "",
|
||||
/* GPIO4_A4-A7 */
|
||||
"", "", "", "",
|
||||
|
||||
/* GPIO4_B0-B3 */
|
||||
"", "", "PIN_5", "PIN_3",
|
||||
/* GPIO4_B4-B7 */
|
||||
"", "", "", "",
|
||||
|
||||
/* GPIO4_C0-C3 */
|
||||
"", "", "", "",
|
||||
/* GPIO4_C4-C7 */
|
||||
"PIN_18", "PIN_28", "PIN_27", "",
|
||||
|
||||
/* GPIO4_D0-D3 */
|
||||
"", "", "", "",
|
||||
/* GPIO4_D4-D7 */
|
||||
"", "", "", "";
|
||||
};
|
||||
|
||||
|
||||
@@ -896,10 +896,6 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdp_phy1_u3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host2_xhci {
|
||||
status = "okay";
|
||||
dr_mode = "host";
|
||||
@@ -928,11 +924,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
&usbdp_phy0_u3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdp_phy0_dp {
|
||||
&usbdp_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -804,11 +804,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
&usbdp_phy0_u3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdp_phy0_dp {
|
||||
&usbdp_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
@@ -6,12 +6,23 @@
|
||||
/ {
|
||||
model = "FriendlyElec NanoPi R6C";
|
||||
compatible = "friendlyarm,nanopi-r6c", "rockchip,rk3588";
|
||||
};
|
||||
|
||||
&pcie2x1l1 {
|
||||
/delete-node/ pcie@0,0;
|
||||
gpio-leds {
|
||||
led-lan1 {
|
||||
/delete-property/ function-enumerator;
|
||||
};
|
||||
|
||||
led-lan2 {
|
||||
/delete-property/ function-enumerator;
|
||||
function = LED_FUNCTION_PROGRAMMING;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie2x1l2 {
|
||||
/delete-node/ pcie@0,0;
|
||||
};
|
||||
|
||||
&rtl8125_1 {
|
||||
/delete-property/ label;
|
||||
};
|
||||
|
||||
@@ -54,22 +54,28 @@
|
||||
pinctrl-0 = <&lan1_led_pin>, <&lan2_led_pin>, <&power_led_pin>, <&wan_led_pin>;
|
||||
|
||||
led-lan1 {
|
||||
label = "green:lan1";
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&gpio1 RK_PC3 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-lan2 {
|
||||
label = "green:lan2";
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&gpio1 RK_PC4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
power_led: led-power {
|
||||
label = "red:power";
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&gpio1 RK_PC1 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-wan {
|
||||
label = "green:wan";
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
@@ -162,22 +168,19 @@
|
||||
|
||||
&cpu_l0 {
|
||||
cpu-supply = <&vdd_cpu_lit_s0>;
|
||||
mem-supply = <&vdd_cpu_lit_mem_s0>;
|
||||
};
|
||||
|
||||
&cpu_b0 {
|
||||
cpu-supply = <&vdd_cpu_big0_s0>;
|
||||
mem-supply = <&vdd_cpu_big0_mem_s0>;
|
||||
};
|
||||
|
||||
&cpu_b2 {
|
||||
cpu-supply = <&vdd_cpu_big1_s0>;
|
||||
mem-supply = <&vdd_cpu_big1_mem_s0>;
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
clock_in_out = "output";
|
||||
label = "eth2";
|
||||
label = "eth0";
|
||||
phy-handle = <&rgmii_phy1>;
|
||||
phy-mode = "rgmii-rxid";
|
||||
pinctrl-names = "default";
|
||||
@@ -195,12 +198,17 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpu {
|
||||
mali-supply = <&vdd_gpu_s0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0m2_xfer>;
|
||||
status = "okay";
|
||||
|
||||
vdd_cpu_big0_s0: vdd_cpu_big0_mem_s0: regulator@42 {
|
||||
vdd_cpu_big0_s0: regulator@42 {
|
||||
compatible = "rockchip,rk8602";
|
||||
reg = <0x42>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
@@ -217,7 +225,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
vdd_cpu_big1_s0: vdd_cpu_big1_mem_s0: regulator@43 {
|
||||
vdd_cpu_big1_s0: regulator@43 {
|
||||
compatible = "rockchip,rk8603", "rockchip,rk8602";
|
||||
reg = <0x43>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
@@ -256,6 +264,7 @@
|
||||
rgmii_phy1: ethernet-phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <1>;
|
||||
realtek,led-data = <0x6d60>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -269,9 +278,12 @@
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
rtl8125_2: pcie@30,0 {
|
||||
rtl8125_1: pcie@30,0 {
|
||||
compatible = "pci10ec,8125";
|
||||
reg = <0x000000 0 0 0 0>;
|
||||
label = "eth0";
|
||||
|
||||
realtek,led-data = <0x0 0x0 0x2b 0x200>;
|
||||
label = "eth2";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -286,8 +298,11 @@
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
rtl8125_1: pcie@40,0 {
|
||||
rtl8125_2: pcie@40,0 {
|
||||
compatible = "pci10ec,8125";
|
||||
reg = <0x000000 0 0 0 0>;
|
||||
|
||||
realtek,led-data = <0x0 0x0 0x2b 0x200>;
|
||||
label = "eth1";
|
||||
};
|
||||
};
|
||||
@@ -367,6 +382,7 @@
|
||||
no-mmc;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc_det>;
|
||||
sd-uhs-sdr50;
|
||||
vmmc-supply = <&vcc_3v3_sd_s0>;
|
||||
vqmmc-supply = <&vccio_sd_s0>;
|
||||
status = "okay";
|
||||
@@ -794,10 +810,6 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdp_phy0_u3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef __ASM_ARM_SYSTEM_INFO_H
|
||||
#define __ASM_ARM_SYSTEM_INFO_H
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/* information about the system we're running on */
|
||||
extern unsigned int system_rev;
|
||||
extern unsigned int system_serial_low;
|
||||
extern unsigned int system_serial_high;
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
#endif /* __ASM_ARM_SYSTEM_INFO_H */
|
||||
@@ -87,6 +87,27 @@
|
||||
#define TRNG_v1_VERSION_CODE 0x46bc
|
||||
/* end of TRNG_V1 register define */
|
||||
|
||||
/* start of RKRNG register define */
|
||||
#define RKRNG_CTRL 0x0010
|
||||
#define RKRNG_CTRL_INST_REQ BIT(0)
|
||||
#define RKRNG_CTRL_RESEED_REQ BIT(1)
|
||||
#define RKRNG_CTRL_TEST_REQ BIT(2)
|
||||
#define RKRNG_CTRL_SW_DRNG_REQ BIT(3)
|
||||
#define RKRNG_CTRL_SW_TRNG_REQ BIT(4)
|
||||
|
||||
#define RKRNG_STATE 0x0014
|
||||
#define RKRNG_STATE_INST_ACK BIT(0)
|
||||
#define RKRNG_STATE_RESEED_ACK BIT(1)
|
||||
#define RKRNG_STATE_TEST_ACK BIT(2)
|
||||
#define RKRNG_STATE_SW_DRNG_ACK BIT(3)
|
||||
#define RKRNG_STATE_SW_TRNG_ACK BIT(4)
|
||||
|
||||
/* DRNG_DATA_0 ~ DNG_DATA_7 */
|
||||
#define RKRNG_DRNG_DATA_0 0x0070
|
||||
#define RKRNG_DRNG_DATA_7 0x008C
|
||||
|
||||
/* end of RKRNG register define */
|
||||
|
||||
struct rk_rng_soc_data {
|
||||
u32 default_offset;
|
||||
|
||||
@@ -178,7 +199,7 @@ static void rk_rng_read_regs(struct rk_rng *rng, u32 offset, void *buf,
|
||||
*(u32 *)(buf + i) = be32_to_cpu(rk_rng_readl(rng, offset + i));
|
||||
}
|
||||
|
||||
static int rk_crypto_v1_read(struct hwrng *rng, void *buf, size_t max, bool wait)
|
||||
static int crypto_v1_read(struct hwrng *rng, void *buf, size_t max, bool wait)
|
||||
{
|
||||
int ret = 0;
|
||||
u32 reg_ctrl = 0;
|
||||
@@ -192,10 +213,12 @@ static int rk_crypto_v1_read(struct hwrng *rng, void *buf, size_t max, bool wait
|
||||
|
||||
rk_rng_writel(rk_rng, reg_ctrl, CRYPTO_V1_CTRL);
|
||||
|
||||
ret = readl_poll_timeout(rk_rng->mem + CRYPTO_V1_CTRL, reg_ctrl,
|
||||
!(reg_ctrl & CRYPTO_V1_RNG_START),
|
||||
ROCKCHIP_POLL_PERIOD_US,
|
||||
ROCKCHIP_POLL_TIMEOUT_US);
|
||||
ret = read_poll_timeout(rk_rng_readl, reg_ctrl,
|
||||
!(reg_ctrl & CRYPTO_V1_RNG_START),
|
||||
ROCKCHIP_POLL_PERIOD_US,
|
||||
ROCKCHIP_POLL_TIMEOUT_US, false,
|
||||
rk_rng, CRYPTO_V1_CTRL);
|
||||
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
@@ -211,7 +234,7 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rk_crypto_v2_read(struct hwrng *rng, void *buf, size_t max, bool wait)
|
||||
static int crypto_v2_read(struct hwrng *rng, void *buf, size_t max, bool wait)
|
||||
{
|
||||
int ret = 0;
|
||||
u32 reg_ctrl = 0;
|
||||
@@ -228,10 +251,11 @@ static int rk_crypto_v2_read(struct hwrng *rng, void *buf, size_t max, bool wait
|
||||
rk_rng_writel(rk_rng, HIWORD_UPDATE(reg_ctrl, 0xffff, 0),
|
||||
CRYPTO_V2_RNG_CTL);
|
||||
|
||||
ret = readl_poll_timeout(rk_rng->mem + CRYPTO_V2_RNG_CTL, reg_ctrl,
|
||||
!(reg_ctrl & CRYPTO_V2_RNG_START),
|
||||
ROCKCHIP_POLL_PERIOD_US,
|
||||
ROCKCHIP_POLL_TIMEOUT_US);
|
||||
ret = read_poll_timeout(rk_rng_readl, reg_ctrl,
|
||||
!(reg_ctrl & CRYPTO_V2_RNG_START),
|
||||
ROCKCHIP_POLL_PERIOD_US,
|
||||
ROCKCHIP_POLL_TIMEOUT_US, false,
|
||||
rk_rng, CRYPTO_V2_RNG_CTL);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
@@ -246,19 +270,13 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rk_trng_v1_init(struct hwrng *rng)
|
||||
static int trng_v1_init(struct hwrng *rng)
|
||||
{
|
||||
int ret;
|
||||
uint32_t auto_reseed_cnt = 1000;
|
||||
uint32_t reg_ctrl, status, version;
|
||||
struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng);
|
||||
|
||||
ret = pm_runtime_get_sync(rk_rng->dev);
|
||||
if (ret < 0) {
|
||||
pm_runtime_put_noidle(rk_rng->dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
version = rk_rng_readl(rk_rng, TRNG_V1_VERSION);
|
||||
if (version != TRNG_v1_VERSION_CODE) {
|
||||
dev_err(rk_rng->dev,
|
||||
@@ -281,10 +299,11 @@ static int rk_trng_v1_init(struct hwrng *rng)
|
||||
udelay(10);
|
||||
|
||||
/* wait for GENERATING and RESEEDING flag to clear */
|
||||
readl_poll_timeout(rk_rng->mem + TRNG_V1_STAT, reg_ctrl,
|
||||
(reg_ctrl & mask) == TRNG_V1_STAT_SEEDED,
|
||||
ROCKCHIP_POLL_PERIOD_US,
|
||||
ROCKCHIP_POLL_TIMEOUT_US);
|
||||
read_poll_timeout(rk_rng_readl, reg_ctrl,
|
||||
(reg_ctrl & mask) == TRNG_V1_STAT_SEEDED,
|
||||
ROCKCHIP_POLL_PERIOD_US,
|
||||
ROCKCHIP_POLL_TIMEOUT_US, false,
|
||||
rk_rng, TRNG_V1_STAT);
|
||||
}
|
||||
|
||||
/* clear ISTAT flag because trng may auto reseeding when power on */
|
||||
@@ -296,13 +315,11 @@ static int rk_trng_v1_init(struct hwrng *rng)
|
||||
|
||||
ret = 0;
|
||||
exit:
|
||||
pm_runtime_mark_last_busy(rk_rng->dev);
|
||||
pm_runtime_put_sync_autosuspend(rk_rng->dev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rk_trng_v1_read(struct hwrng *rng, void *buf, size_t max, bool wait)
|
||||
static int trng_v1_read(struct hwrng *rng, void *buf, size_t max, bool wait)
|
||||
{
|
||||
int ret = 0;
|
||||
u32 reg_ctrl = 0;
|
||||
@@ -324,10 +341,11 @@ static int rk_trng_v1_read(struct hwrng *rng, void *buf, size_t max, bool wait)
|
||||
reg_ctrl = rk_rng_readl(rk_rng, TRNG_V1_ISTAT);
|
||||
if (!(reg_ctrl & TRNG_V1_ISTAT_RAND_RDY)) {
|
||||
/* wait RAND_RDY triggered */
|
||||
ret = readl_poll_timeout(rk_rng->mem + TRNG_V1_ISTAT, reg_ctrl,
|
||||
(reg_ctrl & TRNG_V1_ISTAT_RAND_RDY),
|
||||
ROCKCHIP_POLL_PERIOD_US,
|
||||
ROCKCHIP_POLL_TIMEOUT_US);
|
||||
ret = read_poll_timeout(rk_rng_readl, reg_ctrl,
|
||||
(reg_ctrl & TRNG_V1_ISTAT_RAND_RDY),
|
||||
ROCKCHIP_POLL_PERIOD_US,
|
||||
ROCKCHIP_POLL_TIMEOUT_US, false,
|
||||
rk_rng, TRNG_V1_ISTAT);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
}
|
||||
@@ -345,37 +363,92 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct rk_rng_soc_data rk_crypto_v1_soc_data = {
|
||||
static int rkrng_init(struct hwrng *rng)
|
||||
{
|
||||
struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng);
|
||||
u32 reg = 0;
|
||||
|
||||
rk_rng_writel(rk_rng, HIWORD_UPDATE(0, 0xffff, 0), RKRNG_CTRL);
|
||||
|
||||
reg = rk_rng_readl(rk_rng, RKRNG_STATE);
|
||||
rk_rng_writel(rk_rng, reg, RKRNG_STATE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rkrng_read(struct hwrng *rng, void *buf, size_t max, bool wait)
|
||||
{
|
||||
struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng);
|
||||
u32 reg_ctrl = 0;
|
||||
int ret;
|
||||
|
||||
reg_ctrl = RKRNG_CTRL_SW_DRNG_REQ;
|
||||
|
||||
rk_rng_writel(rk_rng, HIWORD_UPDATE(reg_ctrl, 0xffff, 0), RKRNG_CTRL);
|
||||
|
||||
ret = readl_poll_timeout(rk_rng->mem + RKRNG_STATE, reg_ctrl,
|
||||
(reg_ctrl & RKRNG_STATE_SW_DRNG_ACK),
|
||||
ROCKCHIP_POLL_PERIOD_US,
|
||||
ROCKCHIP_POLL_TIMEOUT_US);
|
||||
|
||||
if (ret)
|
||||
goto exit;
|
||||
|
||||
rk_rng_writel(rk_rng, reg_ctrl, RKRNG_STATE);
|
||||
|
||||
ret = min_t(size_t, max, RK_MAX_RNG_BYTE);
|
||||
|
||||
rk_rng_read_regs(rk_rng, RKRNG_DRNG_DATA_0, buf, ret);
|
||||
|
||||
exit:
|
||||
/* close TRNG */
|
||||
rk_rng_writel(rk_rng, HIWORD_UPDATE(0, 0xffff, 0), RKRNG_CTRL);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct rk_rng_soc_data crypto_v1_soc_data = {
|
||||
.default_offset = 0,
|
||||
|
||||
.rk_rng_read = rk_crypto_v1_read,
|
||||
.rk_rng_read = crypto_v1_read,
|
||||
};
|
||||
|
||||
static const struct rk_rng_soc_data rk_crypto_v2_soc_data = {
|
||||
static const struct rk_rng_soc_data crypto_v2_soc_data = {
|
||||
.default_offset = CRYPTO_V2_RNG_DEFAULT_OFFSET,
|
||||
|
||||
.rk_rng_read = rk_crypto_v2_read,
|
||||
.rk_rng_read = crypto_v2_read,
|
||||
};
|
||||
|
||||
static const struct rk_rng_soc_data rk_trng_v1_soc_data = {
|
||||
static const struct rk_rng_soc_data trng_v1_soc_data = {
|
||||
.default_offset = 0,
|
||||
|
||||
.rk_rng_init = rk_trng_v1_init,
|
||||
.rk_rng_read = rk_trng_v1_read,
|
||||
.rk_rng_init = trng_v1_init,
|
||||
.rk_rng_read = trng_v1_read,
|
||||
};
|
||||
|
||||
static const struct rk_rng_soc_data rkrng_soc_data = {
|
||||
.default_offset = 0,
|
||||
|
||||
.rk_rng_init = rkrng_init,
|
||||
.rk_rng_read = rkrng_read,
|
||||
};
|
||||
|
||||
static const struct of_device_id rk_rng_dt_match[] = {
|
||||
{
|
||||
.compatible = "rockchip,cryptov1-rng",
|
||||
.data = (void *)&rk_crypto_v1_soc_data,
|
||||
.data = (void *)&crypto_v1_soc_data,
|
||||
},
|
||||
{
|
||||
.compatible = "rockchip,cryptov2-rng",
|
||||
.data = (void *)&rk_crypto_v2_soc_data,
|
||||
.data = (void *)&crypto_v2_soc_data,
|
||||
},
|
||||
{
|
||||
.compatible = "rockchip,trngv1",
|
||||
.data = (void *)&rk_trng_v1_soc_data,
|
||||
.data = (void *)&trng_v1_soc_data,
|
||||
},
|
||||
{
|
||||
.compatible = "rockchip,rkrng",
|
||||
.data = (void *)&rkrng_soc_data,
|
||||
},
|
||||
{ },
|
||||
};
|
||||
@@ -445,9 +518,15 @@ static int rk_rng_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
/* for some platform need hardware operation when probe */
|
||||
if (rk_rng->soc_data->rk_rng_init)
|
||||
if (rk_rng->soc_data->rk_rng_init) {
|
||||
pm_runtime_get_sync(rk_rng->dev);
|
||||
|
||||
ret = rk_rng->soc_data->rk_rng_init(&rk_rng->rng);
|
||||
|
||||
pm_runtime_mark_last_busy(rk_rng->dev);
|
||||
pm_runtime_put_sync_autosuspend(rk_rng->dev);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
307
target/linux/rockchip/files/drivers/soc/rockchip/cpuinfo.c
Normal file
307
target/linux/rockchip/files/drivers/soc/rockchip/cpuinfo.c
Normal file
@@ -0,0 +1,307 @@
|
||||
/*
|
||||
* Copyright (C) 2017 Rockchip Electronics Co. Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*/
|
||||
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/nvmem-consumer.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/slab.h>
|
||||
#include <asm/system_info.h>
|
||||
#include <linux/rockchip/cpu.h>
|
||||
|
||||
unsigned long rockchip_soc_id;
|
||||
EXPORT_SYMBOL(rockchip_soc_id);
|
||||
|
||||
static int rockchip_cpuinfo_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct nvmem_cell *cell;
|
||||
unsigned char *efuse_buf, buf[16];
|
||||
size_t len = 0;
|
||||
int i;
|
||||
|
||||
cell = nvmem_cell_get(dev, "cpu-code");
|
||||
if (!IS_ERR(cell)) {
|
||||
efuse_buf = nvmem_cell_read(cell, &len);
|
||||
nvmem_cell_put(cell);
|
||||
if (IS_ERR(efuse_buf))
|
||||
return PTR_ERR(efuse_buf);
|
||||
|
||||
if (len == 2)
|
||||
rockchip_set_cpu((efuse_buf[0] << 8 | efuse_buf[1]));
|
||||
kfree(efuse_buf);
|
||||
}
|
||||
|
||||
cell = nvmem_cell_get(dev, "cpu-version");
|
||||
if (!IS_ERR(cell)) {
|
||||
efuse_buf = nvmem_cell_read(cell, &len);
|
||||
nvmem_cell_put(cell);
|
||||
if (IS_ERR(efuse_buf))
|
||||
return PTR_ERR(efuse_buf);
|
||||
|
||||
if ((len == 1) && (efuse_buf[0] > rockchip_get_cpu_version()))
|
||||
rockchip_set_cpu_version(efuse_buf[0]);
|
||||
kfree(efuse_buf);
|
||||
}
|
||||
|
||||
cell = nvmem_cell_get(dev, "id");
|
||||
if (IS_ERR(cell))
|
||||
return dev_err_probe(dev, PTR_ERR(cell), "failed to get id cell\n");
|
||||
|
||||
efuse_buf = nvmem_cell_read(cell, &len);
|
||||
nvmem_cell_put(cell);
|
||||
if (IS_ERR(efuse_buf))
|
||||
return PTR_ERR(efuse_buf);
|
||||
|
||||
if (len != 16) {
|
||||
kfree(efuse_buf);
|
||||
dev_err(dev, "invalid id len: %zu\n", len);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
buf[i] = efuse_buf[1 + (i << 1)];
|
||||
buf[i + 8] = efuse_buf[i << 1];
|
||||
}
|
||||
|
||||
kfree(efuse_buf);
|
||||
|
||||
dev_info(dev, "SoC\t\t: %lx\n", rockchip_soc_id);
|
||||
|
||||
system_serial_low = crc32(0, buf, 8);
|
||||
system_serial_high = crc32(system_serial_low, buf + 8, 8);
|
||||
|
||||
dev_info(dev, "Serial\t\t: %08x%08x\n",
|
||||
system_serial_high, system_serial_low);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id rockchip_cpuinfo_of_match[] = {
|
||||
{ .compatible = "rockchip,cpuinfo", },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, rockchip_cpuinfo_of_match);
|
||||
|
||||
static struct platform_driver rockchip_cpuinfo_driver = {
|
||||
.probe = rockchip_cpuinfo_probe,
|
||||
.driver = {
|
||||
.name = "rockchip-cpuinfo",
|
||||
.of_match_table = rockchip_cpuinfo_of_match,
|
||||
},
|
||||
};
|
||||
|
||||
static void rockchip_set_cpu_version_from_os_reg(u32 reg)
|
||||
{
|
||||
void __iomem *r = ioremap(reg, 0x4);
|
||||
|
||||
if (r) {
|
||||
rockchip_set_cpu_version(readl_relaxed(r) & GENMASK(2, 0));
|
||||
iounmap(r);
|
||||
}
|
||||
}
|
||||
|
||||
static void px30_init(void)
|
||||
{
|
||||
void __iomem *base;
|
||||
|
||||
rockchip_soc_id = ROCKCHIP_SOC_PX30;
|
||||
#define PX30_DDR_GRF_BASE 0xFF630000
|
||||
#define PX30_DDR_GRF_CON1 0x04
|
||||
base = ioremap(PX30_DDR_GRF_BASE, SZ_4K);
|
||||
if (base) {
|
||||
unsigned int val = readl_relaxed(base + PX30_DDR_GRF_CON1);
|
||||
|
||||
if (((val >> 14) & 0x03) == 0x03)
|
||||
rockchip_soc_id = ROCKCHIP_SOC_PX30S;
|
||||
iounmap(base);
|
||||
}
|
||||
}
|
||||
|
||||
#define RV1106_OS_REG1 0xff020204
|
||||
static void rv1103_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RV1103;
|
||||
rockchip_set_cpu_version_from_os_reg(RV1106_OS_REG1);
|
||||
}
|
||||
|
||||
static void rv1106_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RV1106;
|
||||
rockchip_set_cpu_version_from_os_reg(RV1106_OS_REG1);
|
||||
}
|
||||
|
||||
static void rv1109_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RV1109;
|
||||
}
|
||||
|
||||
static void rv1126_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RV1126;
|
||||
}
|
||||
|
||||
static void rk3288_init(void)
|
||||
{
|
||||
void __iomem *base;
|
||||
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3288;
|
||||
#define RK3288_HDMI_PHYS 0xFF980000
|
||||
base = ioremap(RK3288_HDMI_PHYS, SZ_4K);
|
||||
if (base) {
|
||||
/* RK3288W HDMI Revision ID is 0x1A */
|
||||
if (readl_relaxed(base + 4) == 0x1A)
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3288W;
|
||||
iounmap(base);
|
||||
}
|
||||
}
|
||||
|
||||
static void rk3126_init(void)
|
||||
{
|
||||
void __iomem *base;
|
||||
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3126;
|
||||
#define RK312X_GRF_PHYS 0x20008000
|
||||
#define RK312X_GRF_SOC_CON1 0x00000144
|
||||
#define RK312X_GRF_CHIP_TAG 0x00000300
|
||||
base = ioremap(RK312X_GRF_PHYS, SZ_4K);
|
||||
if (base) {
|
||||
if (readl_relaxed(base + RK312X_GRF_CHIP_TAG) == 0x3136) {
|
||||
if (readl_relaxed(base + RK312X_GRF_SOC_CON1) & 0x1)
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3126C;
|
||||
else
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3126B;
|
||||
}
|
||||
iounmap(base);
|
||||
}
|
||||
}
|
||||
|
||||
static void rk3308_init(void)
|
||||
{
|
||||
void __iomem *base;
|
||||
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3308;
|
||||
#define RK3308_GRF_PHYS 0xFF000000
|
||||
#define RK3308_GRF_CHIP_ID 0x800
|
||||
base = ioremap(RK3308_GRF_PHYS, SZ_4K);
|
||||
if (base) {
|
||||
u32 v = readl_relaxed(base + RK3308_GRF_CHIP_ID);
|
||||
|
||||
if (v == 0x3308)
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3308B;
|
||||
if (v == 0x3308c)
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3308BS;
|
||||
iounmap(base);
|
||||
}
|
||||
}
|
||||
|
||||
static void rk3528_init(void)
|
||||
{
|
||||
if (of_machine_is_compatible("rockchip,rk3528"))
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3528;
|
||||
else if (of_machine_is_compatible("rockchip,rk3528a"))
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3528A;
|
||||
}
|
||||
|
||||
#define RK356X_PMU_GRF_PHYS 0xfdc20000
|
||||
#define RK356X_PMU_GRF_SOC_CON0 0x00000100
|
||||
#define RK356X_CHIP_VERSION_MASK 0x00008000
|
||||
static void rk356x_set_cpu_version(void)
|
||||
{
|
||||
void __iomem *base;
|
||||
|
||||
base = ioremap(RK356X_PMU_GRF_PHYS, SZ_4K);
|
||||
if (base) {
|
||||
if (readl_relaxed(base + RK356X_PMU_GRF_SOC_CON0) & RK356X_CHIP_VERSION_MASK)
|
||||
rockchip_set_cpu_version(1);
|
||||
iounmap(base);
|
||||
}
|
||||
}
|
||||
|
||||
static void rk3566_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3566;
|
||||
rk356x_set_cpu_version();
|
||||
}
|
||||
|
||||
static void rk3567_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3567;
|
||||
rk356x_set_cpu_version();
|
||||
}
|
||||
|
||||
static void rk3568_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3568;
|
||||
rk356x_set_cpu_version();
|
||||
}
|
||||
|
||||
int rockchip_soc_id_init(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return 0;
|
||||
|
||||
if (cpu_is_rk3288()) {
|
||||
rk3288_init();
|
||||
} else if (cpu_is_rk312x()) {
|
||||
if (of_machine_is_compatible("rockchip,rk3128"))
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RK3128;
|
||||
else
|
||||
rk3126_init();
|
||||
} else if (cpu_is_rk3308()) {
|
||||
rk3308_init();
|
||||
} else if (cpu_is_rv1103()) {
|
||||
rv1103_init();
|
||||
} else if (cpu_is_rv1106()) {
|
||||
rv1106_init();
|
||||
} else if (cpu_is_rv1109()) {
|
||||
rv1109_init();
|
||||
} else if (cpu_is_rv1126()) {
|
||||
rv1126_init();
|
||||
} else if (cpu_is_rk3528()) {
|
||||
rk3528_init();
|
||||
} else if (cpu_is_rk3566()) {
|
||||
rk3566_init();
|
||||
} else if (cpu_is_rk3567()) {
|
||||
rk3567_init();
|
||||
} else if (cpu_is_rk3568()) {
|
||||
rk3568_init();
|
||||
} else if (cpu_is_px30()) {
|
||||
px30_init();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(rockchip_soc_id_init);
|
||||
#ifndef MODULE
|
||||
pure_initcall(rockchip_soc_id_init);
|
||||
#endif
|
||||
|
||||
static int __init rockchip_cpuinfo_init(void)
|
||||
{
|
||||
#ifdef MODULE
|
||||
rockchip_soc_id_init();
|
||||
#endif
|
||||
return platform_driver_register(&rockchip_cpuinfo_driver);
|
||||
}
|
||||
subsys_initcall_sync(rockchip_cpuinfo_init);
|
||||
|
||||
static void __exit rockchip_cpuinfo_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&rockchip_cpuinfo_driver);
|
||||
}
|
||||
module_exit(rockchip_cpuinfo_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
234
target/linux/rockchip/files/include/linux/rockchip/cpu.h
Normal file
234
target/linux/rockchip/files/include/linux/rockchip/cpu.h
Normal file
@@ -0,0 +1,234 @@
|
||||
/*
|
||||
* Copyright (C) 2017 Rockchip Electronics Co. Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_ROCKCHIP_CPU_H
|
||||
#define __LINUX_ROCKCHIP_CPU_H
|
||||
|
||||
#include <linux/of.h>
|
||||
|
||||
#define ROCKCHIP_CPU_MASK 0xffff0000
|
||||
#define ROCKCHIP_CPU_SHIFT 16
|
||||
#define ROCKCHIP_CPU_PX30 0x33260000
|
||||
#define ROCKCHIP_CPU_RV1103 0x11030000
|
||||
#define ROCKCHIP_CPU_RV1106 0x11060000
|
||||
#define ROCKCHIP_CPU_RV1109 0x11090000
|
||||
#define ROCKCHIP_CPU_RV1126 0x11260000
|
||||
#define ROCKCHIP_CPU_RK312X 0x31260000
|
||||
#define ROCKCHIP_CPU_RK3288 0x32880000
|
||||
#define ROCKCHIP_CPU_RK3308 0x33080000
|
||||
#define ROCKCHIP_CPU_RK3528 0x35280000
|
||||
#define ROCKCHIP_CPU_RK3566 0x35660000
|
||||
#define ROCKCHIP_CPU_RK3567 0x35670000
|
||||
#define ROCKCHIP_CPU_RK3568 0x35680000
|
||||
|
||||
#if IS_REACHABLE(CONFIG_ROCKCHIP_CPUINFO)
|
||||
|
||||
extern unsigned long rockchip_soc_id;
|
||||
|
||||
#define ROCKCHIP_CPU_VERION_MASK 0x0000f000
|
||||
#define ROCKCHIP_CPU_VERION_SHIFT 12
|
||||
|
||||
static inline unsigned long rockchip_get_cpu_version(void)
|
||||
{
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_VERION_MASK)
|
||||
>> ROCKCHIP_CPU_VERION_SHIFT;
|
||||
}
|
||||
|
||||
static inline void rockchip_set_cpu_version(unsigned long ver)
|
||||
{
|
||||
rockchip_soc_id &= ~ROCKCHIP_CPU_VERION_MASK;
|
||||
rockchip_soc_id |=
|
||||
(ver << ROCKCHIP_CPU_VERION_SHIFT) & ROCKCHIP_CPU_VERION_MASK;
|
||||
}
|
||||
|
||||
static inline void rockchip_set_cpu(unsigned long code)
|
||||
{
|
||||
if (!code)
|
||||
return;
|
||||
|
||||
rockchip_soc_id &= ~ROCKCHIP_CPU_MASK;
|
||||
rockchip_soc_id |= (code << ROCKCHIP_CPU_SHIFT) & ROCKCHIP_CPU_MASK;
|
||||
}
|
||||
|
||||
int rockchip_soc_id_init(void);
|
||||
|
||||
#else
|
||||
|
||||
#define rockchip_soc_id 0
|
||||
|
||||
static inline unsigned long rockchip_get_cpu_version(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void rockchip_set_cpu_version(unsigned long ver)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void rockchip_set_cpu(unsigned long code)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int rockchip_soc_id_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static inline bool cpu_is_px30(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_PX30;
|
||||
return of_machine_is_compatible("rockchip,px30") ||
|
||||
of_machine_is_compatible("rockchip,px30s") ||
|
||||
of_machine_is_compatible("rockchip,rk3326") ||
|
||||
of_machine_is_compatible("rockchip,rk3326s");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rv1103(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RV1103;
|
||||
return of_machine_is_compatible("rockchip,rv1103");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rv1106(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RV1106;
|
||||
return of_machine_is_compatible("rockchip,rv1106");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rv1109(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RV1109;
|
||||
return of_machine_is_compatible("rockchip,rv1109");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rv1126(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RV1126;
|
||||
return of_machine_is_compatible("rockchip,rv1126");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rk312x(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RK312X;
|
||||
return of_machine_is_compatible("rockchip,rk3126") ||
|
||||
of_machine_is_compatible("rockchip,rk3126b") ||
|
||||
of_machine_is_compatible("rockchip,rk3126c") ||
|
||||
of_machine_is_compatible("rockchip,rk3128");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rk3288(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RK3288;
|
||||
return of_machine_is_compatible("rockchip,rk3288") ||
|
||||
of_machine_is_compatible("rockchip,rk3288w");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rk3308(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RK3308;
|
||||
|
||||
return of_machine_is_compatible("rockchip,rk3308") ||
|
||||
of_machine_is_compatible("rockchip,rk3308bs");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rk3528(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RK3528;
|
||||
return of_machine_is_compatible("rockchip,rk3528") ||
|
||||
of_machine_is_compatible("rockchip,rk3528a");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rk3566(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RK3566;
|
||||
return of_machine_is_compatible("rockchip,rk3566");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rk3567(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RK3567;
|
||||
return of_machine_is_compatible("rockchip,rk3567");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rk3568(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RK3568;
|
||||
return of_machine_is_compatible("rockchip,rk3568");
|
||||
}
|
||||
|
||||
#define ROCKCHIP_SOC_MASK (ROCKCHIP_CPU_MASK | 0xff)
|
||||
#define ROCKCHIP_SOC_PX30 (ROCKCHIP_CPU_PX30 | 0x00)
|
||||
#define ROCKCHIP_SOC_PX30S (ROCKCHIP_CPU_PX30 | 0x01)
|
||||
#define ROCKCHIP_SOC_RV1103 (ROCKCHIP_CPU_RV1103 | 0x00)
|
||||
#define ROCKCHIP_SOC_RV1106 (ROCKCHIP_CPU_RV1106 | 0x00)
|
||||
#define ROCKCHIP_SOC_RV1109 (ROCKCHIP_CPU_RV1109 | 0x00)
|
||||
#define ROCKCHIP_SOC_RV1126 (ROCKCHIP_CPU_RV1126 | 0x00)
|
||||
#define ROCKCHIP_SOC_RK3126 (ROCKCHIP_CPU_RK312X | 0x00)
|
||||
#define ROCKCHIP_SOC_RK3126B (ROCKCHIP_CPU_RK312X | 0x10)
|
||||
#define ROCKCHIP_SOC_RK3126C (ROCKCHIP_CPU_RK312X | 0x20)
|
||||
#define ROCKCHIP_SOC_RK3128 (ROCKCHIP_CPU_RK312X | 0x01)
|
||||
#define ROCKCHIP_SOC_RK3288 (ROCKCHIP_CPU_RK3288 | 0x00)
|
||||
#define ROCKCHIP_SOC_RK3288W (ROCKCHIP_CPU_RK3288 | 0x01)
|
||||
#define ROCKCHIP_SOC_RK3308 (ROCKCHIP_CPU_RK3308 | 0x00)
|
||||
#define ROCKCHIP_SOC_RK3308B (ROCKCHIP_CPU_RK3308 | 0x01)
|
||||
#define ROCKCHIP_SOC_RK3308BS (ROCKCHIP_CPU_RK3308 | 0x02)
|
||||
#define ROCKCHIP_SOC_RK3528 (ROCKCHIP_CPU_RK3528 | 0x00)
|
||||
#define ROCKCHIP_SOC_RK3528A (ROCKCHIP_CPU_RK3528 | 0x01)
|
||||
#define ROCKCHIP_SOC_RK3566 (ROCKCHIP_CPU_RK3566 | 0x00)
|
||||
#define ROCKCHIP_SOC_RK3567 (ROCKCHIP_CPU_RK3567 | 0x00)
|
||||
#define ROCKCHIP_SOC_RK3568 (ROCKCHIP_CPU_RK3568 | 0x00)
|
||||
|
||||
#define ROCKCHIP_SOC(CPU, id, ID) \
|
||||
static inline bool soc_is_##id(void) \
|
||||
{ \
|
||||
if (rockchip_soc_id) \
|
||||
return ((rockchip_soc_id & ROCKCHIP_SOC_MASK) == ROCKCHIP_SOC_ ##ID); \
|
||||
return of_machine_is_compatible("rockchip,"#id); \
|
||||
}
|
||||
|
||||
ROCKCHIP_SOC(PX30, px30, PX30)
|
||||
ROCKCHIP_SOC(PX30, px30s, PX30S)
|
||||
ROCKCHIP_SOC(RV1106, rv1103, RV1103)
|
||||
ROCKCHIP_SOC(RV1106, rv1106, RV1106)
|
||||
ROCKCHIP_SOC(RV1126, rv1109, RV1109)
|
||||
ROCKCHIP_SOC(RV1126, rv1126, RV1126)
|
||||
ROCKCHIP_SOC(RK312X, rk3126, RK3126)
|
||||
ROCKCHIP_SOC(RK312X, rk3126b, RK3126B)
|
||||
ROCKCHIP_SOC(RK312X, rk3126c, RK3126C)
|
||||
ROCKCHIP_SOC(RK312X, rk3128, RK3128)
|
||||
ROCKCHIP_SOC(RK3288, rk3288, RK3288)
|
||||
ROCKCHIP_SOC(RK3288, rk3288w, RK3288W)
|
||||
ROCKCHIP_SOC(RK3308, rk3308, RK3308)
|
||||
ROCKCHIP_SOC(RK3308, rk3308b, RK3308B)
|
||||
ROCKCHIP_SOC(RK3308, rk3308bs, RK3308BS)
|
||||
ROCKCHIP_SOC(RK3528, rk3528, RK3528)
|
||||
ROCKCHIP_SOC(RK3528, rk3528a, RK3528A)
|
||||
ROCKCHIP_SOC(RK3568, rk3566, RK3566)
|
||||
ROCKCHIP_SOC(RK3567, rk3567, RK3567)
|
||||
ROCKCHIP_SOC(RK3568, rk3568, RK3568)
|
||||
|
||||
#endif
|
||||
@@ -1,407 +0,0 @@
|
||||
From 51712e1d014aaaa4c6e1e7e84932d58b5c0f59ed Mon Sep 17 00:00:00 2001
|
||||
From: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Date: Sat, 3 Dec 2022 15:41:49 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: rk3328: Add Orange Pi R1 Plus
|
||||
|
||||
Orange Pi R1 Plus is a Rockchip RK3328 based SBC by Xunlong.
|
||||
|
||||
This device is similar to the NanoPi R2S, and has a 16MB
|
||||
SPI NOR (mx25l12805d). The reset button is changed to
|
||||
directly reset the power supply, another detail is that
|
||||
both network ports have independent MAC addresses.
|
||||
|
||||
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Link: https://lore.kernel.org/r/20221203074149.11543-3-amadeus@jmu.edu.cn
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||
.../dts/rockchip/rk3328-orangepi-r1-plus.dts | 373 ++++++++++++++++++
|
||||
2 files changed, 374 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3328-orangepi-r1-plus.dts
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -11,6 +11,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-od
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-a1.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2s.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-orangepi-r1-plus.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock64.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock-pi-e.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-roc-cc.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-orangepi-r1-plus.dts
|
||||
@@ -0,0 +1,373 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Based on rk3328-nanopi-r2s.dts, which is:
|
||||
+ * Copyright (c) 2020 David Bauer <mail@david-bauer.net>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+#include "rk3328.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "Xunlong Orange Pi R1 Plus";
|
||||
+ compatible = "xunlong,orangepi-r1-plus", "rockchip,rk3328";
|
||||
+
|
||||
+ aliases {
|
||||
+ ethernet1 = &rtl8153;
|
||||
+ mmc0 = &sdmmc;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = "serial2:1500000n8";
|
||||
+ };
|
||||
+
|
||||
+ gmac_clk: gmac-clock {
|
||||
+ compatible = "fixed-clock";
|
||||
+ clock-frequency = <125000000>;
|
||||
+ clock-output-names = "gmac_clkin";
|
||||
+ #clock-cells = <0>;
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+ pinctrl-0 = <&lan_led_pin>, <&sys_led_pin>, <&wan_led_pin>;
|
||||
+ pinctrl-names = "default";
|
||||
+
|
||||
+ led-0 {
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ led-1 {
|
||||
+ function = LED_FUNCTION_STATUS;
|
||||
+ color = <LED_COLOR_ID_RED>;
|
||||
+ gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
|
||||
+ linux,default-trigger = "heartbeat";
|
||||
+ };
|
||||
+
|
||||
+ led-2 {
|
||||
+ function = LED_FUNCTION_WAN;
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ gpios = <&gpio2 RK_PC2 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_sd: sdmmc-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
||||
+ pinctrl-0 = <&sdmmc0m1_pin>;
|
||||
+ pinctrl-names = "default";
|
||||
+ regulator-name = "vcc_sd";
|
||||
+ regulator-boot-on;
|
||||
+ vin-supply = <&vcc_io>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_sys: vcc-sys-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc_sys";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ };
|
||||
+
|
||||
+ vdd_5v_lan: vdd-5v-lan-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ enable-active-high;
|
||||
+ gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>;
|
||||
+ pinctrl-0 = <&lan_vdd_pin>;
|
||||
+ pinctrl-names = "default";
|
||||
+ regulator-name = "vdd_5v_lan";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ vin-supply = <&vcc_sys>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&cpu0 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
+};
|
||||
+
|
||||
+&cpu1 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
+};
|
||||
+
|
||||
+&cpu2 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
+};
|
||||
+
|
||||
+&cpu3 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
+};
|
||||
+
|
||||
+&display_subsystem {
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
+&gmac2io {
|
||||
+ assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
|
||||
+ assigned-clock-parents = <&gmac_clk>, <&gmac_clk>;
|
||||
+ clock_in_out = "input";
|
||||
+ phy-handle = <&rtl8211e>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ phy-supply = <&vcc_io>;
|
||||
+ pinctrl-0 = <&rgmiim1_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ snps,aal;
|
||||
+ rx_delay = <0x18>;
|
||||
+ tx_delay = <0x24>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ mdio {
|
||||
+ compatible = "snps,dwmac-mdio";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ rtl8211e: ethernet-phy@1 {
|
||||
+ reg = <1>;
|
||||
+ pinctrl-0 = <ð_phy_reset_pin>;
|
||||
+ pinctrl-names = "default";
|
||||
+ reset-assert-us = <10000>;
|
||||
+ reset-deassert-us = <50000>;
|
||||
+ reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ rk805: pmic@18 {
|
||||
+ compatible = "rockchip,rk805";
|
||||
+ reg = <0x18>;
|
||||
+ interrupt-parent = <&gpio1>;
|
||||
+ interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ #clock-cells = <1>;
|
||||
+ clock-output-names = "xin32k", "rk805-clkout2";
|
||||
+ gpio-controller;
|
||||
+ #gpio-cells = <2>;
|
||||
+ pinctrl-0 = <&pmic_int_l>;
|
||||
+ pinctrl-names = "default";
|
||||
+ rockchip,system-power-controller;
|
||||
+ wakeup-source;
|
||||
+
|
||||
+ vcc1-supply = <&vcc_sys>;
|
||||
+ vcc2-supply = <&vcc_sys>;
|
||||
+ vcc3-supply = <&vcc_sys>;
|
||||
+ vcc4-supply = <&vcc_sys>;
|
||||
+ vcc5-supply = <&vcc_io>;
|
||||
+ vcc6-supply = <&vcc_sys>;
|
||||
+
|
||||
+ regulators {
|
||||
+ vdd_log: DCDC_REG1 {
|
||||
+ regulator-name = "vdd_log";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <712500>;
|
||||
+ regulator-max-microvolt = <1450000>;
|
||||
+ regulator-ramp-delay = <12500>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1000000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_arm: DCDC_REG2 {
|
||||
+ regulator-name = "vdd_arm";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <712500>;
|
||||
+ regulator-max-microvolt = <1450000>;
|
||||
+ regulator-ramp-delay = <12500>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <950000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_ddr: DCDC_REG3 {
|
||||
+ regulator-name = "vcc_ddr";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_io: DCDC_REG4 {
|
||||
+ regulator-name = "vcc_io";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_18: LDO_REG1 {
|
||||
+ regulator-name = "vcc_18";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1800000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc18_emmc: LDO_REG2 {
|
||||
+ regulator-name = "vcc18_emmc";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1800000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_10: LDO_REG3 {
|
||||
+ regulator-name = "vdd_10";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1000000>;
|
||||
+ regulator-max-microvolt = <1000000>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1000000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&io_domains {
|
||||
+ pmuio-supply = <&vcc_io>;
|
||||
+ vccio1-supply = <&vcc_io>;
|
||||
+ vccio2-supply = <&vcc18_emmc>;
|
||||
+ vccio3-supply = <&vcc_io>;
|
||||
+ vccio4-supply = <&vcc_io>;
|
||||
+ vccio5-supply = <&vcc_io>;
|
||||
+ vccio6-supply = <&vcc_io>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ gmac2io {
|
||||
+ eth_phy_reset_pin: eth-phy-reset-pin {
|
||||
+ rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ lan_led_pin: lan-led-pin {
|
||||
+ rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ sys_led_pin: sys-led-pin {
|
||||
+ rockchip,pins = <3 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ wan_led_pin: wan-led-pin {
|
||||
+ rockchip,pins = <2 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ lan {
|
||||
+ lan_vdd_pin: lan-vdd-pin {
|
||||
+ rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ pmic {
|
||||
+ pmic_int_l: pmic-int-l {
|
||||
+ rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pwm2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sdmmc {
|
||||
+ bus-width = <4>;
|
||||
+ cap-sd-highspeed;
|
||||
+ disable-wp;
|
||||
+ pinctrl-0 = <&sdmmc0_clk>, <&sdmmc0_cmd>, <&sdmmc0_dectn>, <&sdmmc0_bus4>;
|
||||
+ pinctrl-names = "default";
|
||||
+ vmmc-supply = <&vcc_sd>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spi0 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ flash@0 {
|
||||
+ compatible = "jedec,spi-nor";
|
||||
+ reg = <0>;
|
||||
+ spi-max-frequency = <50000000>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&tsadc {
|
||||
+ rockchip,hw-tshut-mode = <0>;
|
||||
+ rockchip,hw-tshut-polarity = <0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u2phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u2phy_host {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u2phy_otg {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb20_otg {
|
||||
+ dr_mode = "host";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbdrd3 {
|
||||
+ dr_mode = "host";
|
||||
+ status = "okay";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ /* Second port is for USB 3.0 */
|
||||
+ rtl8153: device@2 {
|
||||
+ compatible = "usbbda,8153";
|
||||
+ reg = <2>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&usb_host0_ehci {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_host0_ohci {
|
||||
+ status = "okay";
|
||||
+};
|
||||
@@ -1,71 +0,0 @@
|
||||
From 387b3bbac5ea6a0a105d685237f033ffe0f184f1 Mon Sep 17 00:00:00 2001
|
||||
From: Tianling Shen <cnsztl@gmail.com>
|
||||
Date: Sat, 25 Mar 2023 15:40:22 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add Xunlong OrangePi R1 Plus LTS
|
||||
|
||||
The OrangePi R1 Plus LTS is a minor variant of OrangePi R1 Plus with
|
||||
the on-board NIC chip changed from rtl8211e to yt8531c, and otherwise
|
||||
identical to OrangePi R1 Plus.
|
||||
|
||||
Signed-off-by: Tianling Shen <cnsztl@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20230325074022.9818-5-cnsztl@gmail.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||
.../rockchip/rk3328-orangepi-r1-plus-lts.dts | 40 +++++++++++++++++++
|
||||
2 files changed, 41 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3328-orangepi-r1-plus-lts.dts
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -12,6 +12,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-a1
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-orangepi-r1-plus.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-orangepi-r1-plus-lts.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock64.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock-pi-e.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-roc-cc.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-orangepi-r1-plus-lts.dts
|
||||
@@ -0,0 +1,40 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
+/*
|
||||
+ * Copyright (c) 2016 Xunlong Software. Co., Ltd.
|
||||
+ * (http://www.orangepi.org)
|
||||
+ *
|
||||
+ * Copyright (c) 2021-2023 Tianling Shen <cnsztl@gmail.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+#include "rk3328-orangepi-r1-plus.dts"
|
||||
+
|
||||
+/ {
|
||||
+ model = "Xunlong Orange Pi R1 Plus LTS";
|
||||
+ compatible = "xunlong,orangepi-r1-plus-lts", "rockchip,rk3328";
|
||||
+};
|
||||
+
|
||||
+&gmac2io {
|
||||
+ phy-handle = <&yt8531c>;
|
||||
+ tx_delay = <0x19>;
|
||||
+ rx_delay = <0x05>;
|
||||
+
|
||||
+ mdio {
|
||||
+ /delete-node/ ethernet-phy@1;
|
||||
+
|
||||
+ yt8531c: ethernet-phy@0 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <0>;
|
||||
+
|
||||
+ motorcomm,clk-out-frequency-hz = <125000000>;
|
||||
+ motorcomm,keep-pll-enabled;
|
||||
+ motorcomm,auto-sleep-disabled;
|
||||
+
|
||||
+ pinctrl-0 = <ð_phy_reset_pin>;
|
||||
+ pinctrl-names = "default";
|
||||
+ reset-assert-us = <15000>;
|
||||
+ reset-deassert-us = <50000>;
|
||||
+ reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@@ -1,33 +0,0 @@
|
||||
From fc5a80a432607d05e85bba37971712405f75c546 Mon Sep 17 00:00:00 2001
|
||||
From: Tianling Shen <cnsztl@gmail.com>
|
||||
Date: Sat, 16 Dec 2023 12:07:23 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: configure eth pad driver strength
|
||||
for orangepi r1 plus lts
|
||||
|
||||
The default strength is not enough to provide stable connection
|
||||
under 3.3v LDO voltage.
|
||||
|
||||
Fixes: 387b3bbac5ea ("arm64: dts: rockchip: Add Xunlong OrangePi R1 Plus LTS")
|
||||
Cc: stable@vger.kernel.org # 6.6+
|
||||
Signed-off-by: Tianling Shen <cnsztl@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20231216040723.17864-1-cnsztl@gmail.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3328-orangepi-r1-plus-lts.dts | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-orangepi-r1-plus-lts.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-orangepi-r1-plus-lts.dts
|
||||
@@ -26,9 +26,11 @@
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
|
||||
+ motorcomm,auto-sleep-disabled;
|
||||
motorcomm,clk-out-frequency-hz = <125000000>;
|
||||
motorcomm,keep-pll-enabled;
|
||||
- motorcomm,auto-sleep-disabled;
|
||||
+ motorcomm,rx-clk-drv-microamp = <5020>;
|
||||
+ motorcomm,rx-data-drv-microamp = <5020>;
|
||||
|
||||
pinctrl-0 = <ð_phy_reset_pin>;
|
||||
pinctrl-names = "default";
|
||||
@@ -1,38 +0,0 @@
|
||||
From c6629b9a6738a64507478527da6c7b83c10a6d2c Mon Sep 17 00:00:00 2001
|
||||
From: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Date: Tue, 7 Mar 2023 22:32:40 -0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add FriendlyElec Nanopi R5S
|
||||
|
||||
FriendlyElec Nanopi R5S is an open-sourced mini IoT gateway device.
|
||||
|
||||
Board Specifications
|
||||
- Rockchip RK3568
|
||||
- 2 or 4GB LPDDR4X
|
||||
- 8GB or 16GB eMMC, SD card slot
|
||||
- GbE LAN (Native)
|
||||
- 2x 2.5G LAN (PCIe)
|
||||
- M.2 Connector
|
||||
- HDMI 2.0, MIPI DSI/CSI
|
||||
- 2xUSB 3.0 Host
|
||||
- USB Type C PD, 5V/9V/12V
|
||||
- GPIO: 12-pin 0.5mm FPC connector
|
||||
|
||||
Based on Tianling Shen's <cnsztl@gmail.com> work.
|
||||
|
||||
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20230308063240.107178-2-anarsoul@gmail.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||
.../boot/dts/rockchip/rk3568-nanopi-r5s.dts | 713 ++++++++++++++++++
|
||||
2 files changed, 714 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dts
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -73,4 +73,5 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-ro
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-soquartz-cm4.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bpi-r2-pro.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb
|
||||
@@ -1,37 +0,0 @@
|
||||
From 05620031408ac6cfc6d5c048431827e49aa0ade1 Mon Sep 17 00:00:00 2001
|
||||
From: Tianling Shen <cnsztl@gmail.com>
|
||||
Date: Sat, 18 Mar 2023 16:37:43 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add FriendlyARM NanoPi R5C
|
||||
|
||||
FriendlyARM NanoPi R5C is an open-sourced mini IoT gateway device.
|
||||
|
||||
Specification:
|
||||
- Rockchip RK3568
|
||||
- 1/4GB LPDDR4X RAM
|
||||
- 8/32GB eMMC
|
||||
- SD card slot
|
||||
- M.2 Connector
|
||||
- 2x USB 3.0 Port
|
||||
- 2x 2500 Base-T (PCIe, r8125)
|
||||
- HDMI 2.0
|
||||
- MIPI DSI/CSI
|
||||
- USB Type C 5V
|
||||
|
||||
Signed-off-by: Tianling Shen <cnsztl@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20230318083745.6181-4-cnsztl@gmail.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||
.../boot/dts/rockchip/rk3568-nanopi-r5c.dts | 112 ++++++++++++++++++
|
||||
2 files changed, 113 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5c.dts
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -73,5 +73,6 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-ro
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-soquartz-cm4.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bpi-r2-pro.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5c.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb
|
||||
@@ -1,70 +0,0 @@
|
||||
From 004589ff9df5b75672a78b6c3c4cba93202b14c9 Mon Sep 17 00:00:00 2001
|
||||
From: Tianling Shen <cnsztl@gmail.com>
|
||||
Date: Sat, 25 Mar 2023 15:40:20 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add FriendlyARM NanoPi R2C
|
||||
|
||||
The NanoPi R2C is a minor variant of NanoPi R2S with the on-board NIC
|
||||
chip changed from rtl8211e to yt8521s, and otherwise identical to R2S.
|
||||
|
||||
Signed-off-by: Tianling Shen <cnsztl@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20230325074022.9818-3-cnsztl@gmail.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||
.../boot/dts/rockchip/rk3328-nanopi-r2c.dts | 40 +++++++++++++++++++
|
||||
2 files changed, 41 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2c.dts
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -10,6 +10,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a9
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-a1.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2c.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-orangepi-r1-plus.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-orangepi-r1-plus-lts.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2c.dts
|
||||
@@ -0,0 +1,40 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
+/*
|
||||
+ * Copyright (c) 2021 FriendlyElec Computer Tech. Co., Ltd.
|
||||
+ * (http://www.friendlyarm.com)
|
||||
+ *
|
||||
+ * Copyright (c) 2021-2023 Tianling Shen <cnsztl@gmail.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+#include "rk3328-nanopi-r2s.dts"
|
||||
+
|
||||
+/ {
|
||||
+ model = "FriendlyElec NanoPi R2C";
|
||||
+ compatible = "friendlyarm,nanopi-r2c", "rockchip,rk3328";
|
||||
+};
|
||||
+
|
||||
+&gmac2io {
|
||||
+ phy-handle = <&yt8521s>;
|
||||
+ tx_delay = <0x22>;
|
||||
+ rx_delay = <0x12>;
|
||||
+
|
||||
+ mdio {
|
||||
+ /delete-node/ ethernet-phy@1;
|
||||
+
|
||||
+ yt8521s: ethernet-phy@3 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <3>;
|
||||
+
|
||||
+ motorcomm,clk-out-frequency-hz = <125000000>;
|
||||
+ motorcomm,keep-pll-enabled;
|
||||
+ motorcomm,auto-sleep-disabled;
|
||||
+
|
||||
+ pinctrl-0 = <ð_phy_reset_pin>;
|
||||
+ pinctrl-names = "default";
|
||||
+ reset-assert-us = <10000>;
|
||||
+ reset-deassert-us = <50000>;
|
||||
+ reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@@ -1,63 +0,0 @@
|
||||
From d211665c5a833873ee37e501af58adbf028e6b5f Mon Sep 17 00:00:00 2001
|
||||
From: Tianling Shen <cnsztl@gmail.com>
|
||||
Date: Sat, 13 May 2023 21:53:07 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add FriendlyARM NanoPi R2C Plus
|
||||
|
||||
The NanoPi R2C Plus is a small variant of NanoPi R2C with a on-board
|
||||
eMMC flash (8G) included.
|
||||
|
||||
Signed-off-by: Tianling Shen <cnsztl@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20230513135307.26554-2-cnsztl@gmail.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||
.../boot/dts/rockchip/rk3328-nanopi-r2c-plus.dts | 33 ++++++++++++++++++++++
|
||||
2 files changed, 34 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2c-plus.dts
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -11,6 +11,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-od
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-a1.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2c.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2c-plus.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-orangepi-r1-plus.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-orangepi-r1-plus-lts.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2c-plus.dts
|
||||
@@ -0,0 +1,33 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
+/*
|
||||
+ * Copyright (c) 2021 FriendlyElec Computer Tech. Co., Ltd.
|
||||
+ * (http://www.friendlyarm.com)
|
||||
+ *
|
||||
+ * Copyright (c) 2023 Tianling Shen <cnsztl@gmail.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+#include "rk3328-nanopi-r2c.dts"
|
||||
+
|
||||
+/ {
|
||||
+ model = "FriendlyElec NanoPi R2C Plus";
|
||||
+ compatible = "friendlyarm,nanopi-r2c-plus", "rockchip,rk3328";
|
||||
+
|
||||
+ aliases {
|
||||
+ mmc1 = &emmc;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&emmc {
|
||||
+ bus-width = <8>;
|
||||
+ cap-mmc-highspeed;
|
||||
+ max-frequency = <150000000>;
|
||||
+ mmc-ddr-1_8v;
|
||||
+ mmc-hs200-1_8v;
|
||||
+ non-removable;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
|
||||
+ vmmc-supply = <&vcc_io_33>;
|
||||
+ vqmmc-supply = <&vcc18_emmc>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
@@ -1,146 +0,0 @@
|
||||
From 5a9447fd17668c34449052e4f77eebc7a98eccf3 Mon Sep 17 00:00:00 2001
|
||||
From: Tianling Shen <cnsztl@gmail.com>
|
||||
Date: Sat, 6 May 2023 14:11:08 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add Lunzn Fastrhino R68S
|
||||
|
||||
It's similar to Fastrhino R66S with the following changes:
|
||||
+ 2/4GB LPDDR4 RAM
|
||||
+ 2x 1000 Base-T (native, RTL8211f)
|
||||
+ ADC button
|
||||
+ 16GB eMMC on-board
|
||||
- No SD card slot
|
||||
|
||||
Signed-off-by: Tianling Shen <cnsztl@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20230506061108.17658-3-cnsztl@gmail.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||
.../boot/dts/rockchip/rk3568-fastrhino-r68s.dts | 112 +++++++++++++++++++++
|
||||
2 files changed, 113 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-fastrhino-r68s.dts
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -76,6 +76,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-so
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bpi-r2-pro.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-fastrhino-r66s.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-fastrhino-r68s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5c.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-fastrhino-r68s.dts
|
||||
@@ -0,0 +1,112 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
+
|
||||
+#include "rk3568-fastrhino-r66s.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "Lunzn FastRhino R68S";
|
||||
+ compatible = "lunzn,fastrhino-r68s", "rockchip,rk3568";
|
||||
+
|
||||
+ aliases {
|
||||
+ ethernet0 = &gmac0;
|
||||
+ ethernet1 = &gmac1;
|
||||
+ mmc0 = &sdhci;
|
||||
+ };
|
||||
+
|
||||
+ adc-keys {
|
||||
+ compatible = "adc-keys";
|
||||
+ io-channels = <&saradc 0>;
|
||||
+ io-channel-names = "buttons";
|
||||
+ keyup-threshold-microvolt = <1800000>;
|
||||
+
|
||||
+ button-recovery {
|
||||
+ label = "Recovery";
|
||||
+ linux,code = <KEY_VENDOR>;
|
||||
+ press-threshold-microvolt = <1750>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&gmac0 {
|
||||
+ assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
|
||||
+ assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
|
||||
+ assigned-clock-rates = <0>, <125000000>;
|
||||
+ clock_in_out = "output";
|
||||
+ phy-handle = <&rgmii_phy0>;
|
||||
+ phy-mode = "rgmii-id";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&gmac0_miim
|
||||
+ &gmac0_tx_bus2
|
||||
+ &gmac0_rx_bus2
|
||||
+ &gmac0_rgmii_clk
|
||||
+ &gmac0_rgmii_bus>;
|
||||
+ snps,reset-gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>;
|
||||
+ snps,reset-active-low;
|
||||
+ /* Reset time is 15ms, 50ms for rtl8211f */
|
||||
+ snps,reset-delays-us = <0 15000 50000>;
|
||||
+ tx_delay = <0x3c>;
|
||||
+ rx_delay = <0x2f>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gmac1 {
|
||||
+ assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
|
||||
+ assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
|
||||
+ assigned-clock-rates = <0>, <125000000>;
|
||||
+ clock_in_out = "output";
|
||||
+ phy-handle = <&rgmii_phy1>;
|
||||
+ phy-mode = "rgmii-id";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&gmac1m1_miim
|
||||
+ &gmac1m1_tx_bus2
|
||||
+ &gmac1m1_rx_bus2
|
||||
+ &gmac1m1_rgmii_clk
|
||||
+ &gmac1m1_rgmii_bus>;
|
||||
+ snps,reset-gpio = <&gpio0 RK_PB1 GPIO_ACTIVE_LOW>;
|
||||
+ snps,reset-active-low;
|
||||
+ /* Reset time is 15ms, 50ms for rtl8211f */
|
||||
+ snps,reset-delays-us = <0 15000 50000>;
|
||||
+ tx_delay = <0x4f>;
|
||||
+ rx_delay = <0x26>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mdio0 {
|
||||
+ rgmii_phy0: ethernet-phy@0 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <0>;
|
||||
+ pinctrl-0 = <ð_phy0_reset_pin>;
|
||||
+ pinctrl-names = "default";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mdio1 {
|
||||
+ rgmii_phy1: ethernet-phy@0 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <0>;
|
||||
+ pinctrl-0 = <ð_phy1_reset_pin>;
|
||||
+ pinctrl-names = "default";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ gmac0 {
|
||||
+ eth_phy0_reset_pin: eth-phy0-reset-pin {
|
||||
+ rockchip,pins = <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gmac1 {
|
||||
+ eth_phy1_reset_pin: eth-phy1-reset-pin {
|
||||
+ rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&sdhci {
|
||||
+ bus-width = <8>;
|
||||
+ max-frequency = <200000000>;
|
||||
+ non-removable;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
@@ -1,233 +0,0 @@
|
||||
From 096ebfb74b19f2d4bdcbc33ae02e857ff4b3e0a0 Mon Sep 17 00:00:00 2001
|
||||
From: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Date: Thu, 12 Jan 2023 16:29:02 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add Radxa Compute Module 3 IO board
|
||||
|
||||
Radxa Compute Module 3(CM3) IO board is an application board from Radxa
|
||||
and is compatible with Raspberry Pi CM4 IO form factor.
|
||||
|
||||
Specification:
|
||||
- 1x HDMI,
|
||||
- 2x MIPI DSI
|
||||
- 2x MIPI CSI2
|
||||
- 1x eDP
|
||||
- 1x PCIe card
|
||||
- 2x SATA
|
||||
- 2x USB 2.0 Host
|
||||
- 1x USB 3.0
|
||||
- 1x USB 2.0 OTG
|
||||
- Phone jack
|
||||
- microSD slot
|
||||
- 40-pin GPIO expansion header
|
||||
- 12V DC
|
||||
|
||||
Radxa CM3 needs to mount on top of this IO board in order to create
|
||||
complete Radxa CM3 IO board platform.
|
||||
|
||||
Add support for Radxa CM3 IO Board.
|
||||
|
||||
Co-developed-by: FUKAUMI Naoki <naoki@radxa.com>
|
||||
Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
|
||||
Co-developed-by: Manoj Sai <abbaraju.manojsai@amarulasolutions.com>
|
||||
Signed-off-by: Manoj Sai <abbaraju.manojsai@amarulasolutions.com>
|
||||
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Link: https://lore.kernel.org/r/20230112105902.192852-3-jagan@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||
.../boot/dts/rockchip/rk3566-radxa-cm3-io.dts | 179 ++++++++++++++++++
|
||||
2 files changed, 180 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -71,6 +71,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pi
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-radxa-cm3-io.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-roc-pc.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-soquartz-cm4.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bpi-r2-pro.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
@@ -0,0 +1,179 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Copyright (c) 2022 Radxa Limited
|
||||
+ * Copyright (c) 2022 Amarula Solutions(India)
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+#include <dt-bindings/soc/rockchip,vop2.h>
|
||||
+#include "rk3566.dtsi"
|
||||
+#include "rk3566-radxa-cm3.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "Radxa Compute Module 3(CM3) IO Board";
|
||||
+ compatible = "radxa,radxa-cm3-io", "radxa,radxa-cm3", "rockchip,rk3566";
|
||||
+
|
||||
+ aliases {
|
||||
+ mmc1 = &sdmmc0;
|
||||
+ };
|
||||
+
|
||||
+ chosen: chosen {
|
||||
+ stdout-path = "serial2:1500000n8";
|
||||
+ };
|
||||
+
|
||||
+ hdmi-con {
|
||||
+ compatible = "hdmi-connector";
|
||||
+ type = "a";
|
||||
+
|
||||
+ port {
|
||||
+ hdmi_con_in: endpoint {
|
||||
+ remote-endpoint = <&hdmi_out_con>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ led-1 {
|
||||
+ gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_LOW>;
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ function = LED_FUNCTION_ACTIVITY;
|
||||
+ linux,default-trigger = "heartbeat";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pi_nled_activity>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc5v0_usb30: vcc5v0-usb30-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc5v0_usb30";
|
||||
+ enable-active-high;
|
||||
+ gpio = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&vcc5v0_usb30_en_h>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ vin-supply = <&vcc_sys>;
|
||||
+ };
|
||||
+
|
||||
+ vcca1v8_image: vcca1v8-image-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcca1v8_image";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ vin-supply = <&vcc_1v8_p>;
|
||||
+ };
|
||||
+
|
||||
+ vdda0v9_image: vdda0v9-image-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcca0v9_image";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <900000>;
|
||||
+ regulator-max-microvolt = <900000>;
|
||||
+ vin-supply = <&vdda_0v9>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&combphy1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi {
|
||||
+ avdd-0v9-supply = <&vdda0v9_image>;
|
||||
+ avdd-1v8-supply = <&vcca1v8_image>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi_in {
|
||||
+ hdmi_in_vp0: endpoint {
|
||||
+ remote-endpoint = <&vp0_out_hdmi>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&hdmi_out {
|
||||
+ hdmi_out_con: endpoint {
|
||||
+ remote-endpoint = <&hdmi_con_in>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&hdmi_sound {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ leds {
|
||||
+ pi_nled_activity: pi-nled-activity {
|
||||
+ rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ sdcard {
|
||||
+ sdmmc_pwren: sdmmc-pwren {
|
||||
+ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ usb {
|
||||
+ vcc5v0_usb30_en_h: vcc5v0-host-en-h {
|
||||
+ rockchip,pins = <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&sdmmc0 {
|
||||
+ bus-width = <4>;
|
||||
+ cap-mmc-highspeed;
|
||||
+ cap-sd-highspeed;
|
||||
+ disable-wp;
|
||||
+ vqmmc-supply = <&vccio_sd>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det &sdmmc0_pwren>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb2phy0_host {
|
||||
+ phy-supply = <&vcc5v0_usb30>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb2phy1_host {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb2phy1_otg {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_host0_ehci {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_host1_xhci {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vop {
|
||||
+ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
|
||||
+ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vop_mmu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vp0 {
|
||||
+ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
|
||||
+ reg = <ROCKCHIP_VOP2_EP_HDMI0>;
|
||||
+ remote-endpoint = <&hdmi_in_vp0>;
|
||||
+ };
|
||||
+};
|
||||
@@ -1,131 +0,0 @@
|
||||
From cc52bfc04726a574fc4440bbbe0c710890e7040a Mon Sep 17 00:00:00 2001
|
||||
From: Manoj Sai <abbaraju.manojsai@amarulasolutions.com>
|
||||
Date: Wed, 25 Jan 2023 21:40:22 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: Enable Ethernet for Radxa CM3 IO
|
||||
|
||||
Add ethernet nodes for enabling gmac1 on the Radxa CM3 IO board.
|
||||
|
||||
Signed-off-by: Manoj Sai <abbaraju.manojsai@amarulasolutions.com>
|
||||
Link: https://lore.kernel.org/r/20230125161023.12115-1-jagan@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
.../boot/dts/rockchip/rk3566-radxa-cm3-io.dts | 93 +++++++++++++++++++
|
||||
1 file changed, 93 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
@@ -21,6 +21,13 @@
|
||||
stdout-path = "serial2:1500000n8";
|
||||
};
|
||||
|
||||
+ gmac1_clkin: external-gmac1-clock {
|
||||
+ compatible = "fixed-clock";
|
||||
+ clock-frequency = <125000000>;
|
||||
+ clock-output-names = "gmac1_clkin";
|
||||
+ #clock-cells = <0>;
|
||||
+ };
|
||||
+
|
||||
hdmi-con {
|
||||
compatible = "hdmi-connector";
|
||||
type = "a";
|
||||
@@ -83,6 +90,29 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&gmac1 {
|
||||
+ assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
|
||||
+ assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
|
||||
+ assigned-clock-rates = <0>, <125000000>;
|
||||
+ clock_in_out = "input";
|
||||
+ phy-handle = <&rgmii_phy1>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&gmac1m0_miim
|
||||
+ &gmac1m0_tx_bus2
|
||||
+ &gmac1m0_rx_bus2
|
||||
+ &gmac1m0_rgmii_clk
|
||||
+ &gmac1m0_rgmii_bus
|
||||
+ &gmac1m0_clkinout>;
|
||||
+ snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;
|
||||
+ snps,reset-active-low;
|
||||
+ /* Reset time is 20ms, 100ms for rtl8211f */
|
||||
+ snps,reset-delays-us = <0 20000 100000>;
|
||||
+ tx_delay = <0x46>;
|
||||
+ rx_delay = <0x2e>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&hdmi {
|
||||
avdd-0v9-supply = <&vdda0v9_image>;
|
||||
avdd-1v8-supply = <&vcca1v8_image>;
|
||||
@@ -105,7 +135,70 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&mdio1 {
|
||||
+ rgmii_phy1: ethernet-phy@0 {
|
||||
+ compatible="ethernet-phy-ieee802.3-c22";
|
||||
+ reg= <0x0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&pinctrl {
|
||||
+ gmac1 {
|
||||
+ gmac1m0_miim: gmac1m0-miim {
|
||||
+ rockchip,pins =
|
||||
+ /* gmac1_mdcm0 */
|
||||
+ <3 RK_PC4 3 &pcfg_pull_none_drv_level_15>,
|
||||
+ /* gmac1_mdiom0 */
|
||||
+ <3 RK_PC5 3 &pcfg_pull_none_drv_level_15>;
|
||||
+ };
|
||||
+
|
||||
+ gmac1m0_rx_bus2: gmac1m0-rx-bus2 {
|
||||
+ rockchip,pins =
|
||||
+ /* gmac1_rxd0m0 */
|
||||
+ <3 RK_PB1 3 &pcfg_pull_none_drv_level_15>,
|
||||
+ /* gmac1_rxd1m0 */
|
||||
+ <3 RK_PB2 3 &pcfg_pull_none_drv_level_15>,
|
||||
+ /* gmac1_rxdvcrsm0 */
|
||||
+ <3 RK_PB3 3 &pcfg_pull_none_drv_level_15>;
|
||||
+ };
|
||||
+
|
||||
+ gmac1m0_tx_bus2: gmac1m0-tx-bus2 {
|
||||
+ rockchip,pins =
|
||||
+ /* gmac1_txd0m0 */
|
||||
+ <3 RK_PB5 3 &pcfg_pull_none_drv_level_15>,
|
||||
+ /* gmac1_txd1m0 */
|
||||
+ <3 RK_PB6 3 &pcfg_pull_none_drv_level_15>,
|
||||
+ /* gmac1_txenm0 */
|
||||
+ <3 RK_PB7 3 &pcfg_pull_none_drv_level_15>;
|
||||
+ };
|
||||
+
|
||||
+ gmac1m0_rgmii_clk: gmac1m0-rgmii-clk {
|
||||
+ rockchip,pins =
|
||||
+ /* gmac1_rxclkm0 */
|
||||
+ <3 RK_PA7 3 &pcfg_pull_none_drv_level_15>,
|
||||
+ /* gmac1_txclkm0 */
|
||||
+ <3 RK_PA6 3 &pcfg_pull_none_drv_level_15>;
|
||||
+ };
|
||||
+
|
||||
+ gmac1m0_rgmii_bus: gmac1m0-rgmii-bus {
|
||||
+ rockchip,pins =
|
||||
+ /* gmac1_rxd2m0 */
|
||||
+ <3 RK_PA4 3 &pcfg_pull_none_drv_level_15>,
|
||||
+ /* gmac1_rxd3m0 */
|
||||
+ <3 RK_PA5 3 &pcfg_pull_none_drv_level_15>,
|
||||
+ /* gmac1_txd2m0 */
|
||||
+ <3 RK_PA2 3 &pcfg_pull_none_drv_level_15>,
|
||||
+ /* gmac1_txd3m0 */
|
||||
+ <3 RK_PA3 3 &pcfg_pull_none_drv_level_15>;
|
||||
+ };
|
||||
+
|
||||
+ gmac1m0_clkinout: gmac1m0-clkinout {
|
||||
+ rockchip,pins =
|
||||
+ /* gmac1_mclkinoutm0 */
|
||||
+ <3 RK_PC0 3 &pcfg_pull_none_drv_level_15>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
pi_nled_activity: pi-nled-activity {
|
||||
rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
@@ -1,386 +0,0 @@
|
||||
From 7469ab529bcad50490f6ff651c3e4f03bfa88fe0 Mon Sep 17 00:00:00 2001
|
||||
From: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Date: Thu, 12 Jan 2023 16:29:01 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add rk3566 based Radxa Compute Module 3
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Radxa Compute Module 3(CM3) is one of the modules from a series
|
||||
System On Module based on the Radxa ROCK 3 series and is compatible
|
||||
with Raspberry Pi CM4 pinout and form factor.
|
||||
|
||||
Specification:
|
||||
- Rockchip RK3566
|
||||
- up to 8GB LPDDR4
|
||||
- up to 128GB high performance eMMC
|
||||
- Optional wireless LAN, 2.4GHz and 5.0GHz IEEE 802.11b/g/n/ac wireless,
|
||||
BT 5.0, BLE with onboard and external antenna.
|
||||
- Gigabit Ethernet PHY
|
||||
|
||||
Radxa CM3 needs to mount on top of this IO board in order to create
|
||||
complete Radxa CM3 IO board platform.
|
||||
|
||||
Since Radxa CM3 is compatible with Raspberry Pi CM4 pinout so it is
|
||||
possible to mount Radxa CM3 on top of the Rasberry Pi CM4 IO board.
|
||||
|
||||
Add support for Radxa CM3.
|
||||
|
||||
Co-developed-by: FUKAUMI Naoki <naoki@radxa.com>
|
||||
Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
|
||||
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Link: https://lore.kernel.org/r/20230112105902.192852-2-jagan@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
.../boot/dts/rockchip/rk3566-radxa-cm3.dtsi | 345 ++++++++++++++++++
|
||||
1 file changed, 345 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3.dtsi
|
||||
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3.dtsi
|
||||
@@ -0,0 +1,345 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Copyright (c) 2022 Radxa Limited
|
||||
+ * Copyright (c) 2022 Amarula Solutions(India)
|
||||
+ */
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "radxa,radxa-cm3", "rockchip,rk3566";
|
||||
+
|
||||
+ aliases {
|
||||
+ mmc0 = &sdhci;
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ led-0 {
|
||||
+ gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ function = LED_FUNCTION_STATUS;
|
||||
+ linux,default-trigger = "timer";
|
||||
+ default-state = "on";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&user_led2>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_sys: vcc-sys-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc_sys";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_1v8: vcc-1v8-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc_1v8";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ vin-supply = <&vcc_1v8_p>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_3v3: vcc-3v3-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc_3v3";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ vin-supply = <&vcc3v3_sys>;
|
||||
+ };
|
||||
+
|
||||
+ vcca_1v8: vcca-1v8-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcca_1v8";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ vin-supply = <&vcc_1v8_p>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&cpu0 {
|
||||
+ cpu-supply = <&vdd_cpu>;
|
||||
+};
|
||||
+
|
||||
+&cpu1 {
|
||||
+ cpu-supply = <&vdd_cpu>;
|
||||
+};
|
||||
+
|
||||
+&cpu2 {
|
||||
+ cpu-supply = <&vdd_cpu>;
|
||||
+};
|
||||
+
|
||||
+&cpu3 {
|
||||
+ cpu-supply = <&vdd_cpu>;
|
||||
+};
|
||||
+
|
||||
+&gpu {
|
||||
+ mali-supply = <&vdd_gpu_npu>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&i2c0 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ vdd_cpu: regulator@1c {
|
||||
+ compatible = "tcs,tcs4525";
|
||||
+ reg = <0x1c>;
|
||||
+ fcs,suspend-voltage-selector = <1>;
|
||||
+ regulator-name = "vdd_cpu";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <712500>;
|
||||
+ regulator-max-microvolt = <1390000>;
|
||||
+ regulator-ramp-delay = <2300>;
|
||||
+ vin-supply = <&vcc_sys>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ rk817: pmic@20 {
|
||||
+ compatible = "rockchip,rk817";
|
||||
+ reg = <0x20>;
|
||||
+ #clock-cells = <1>;
|
||||
+ clock-output-names = "rk817-clkout1", "rk817-clkout2";
|
||||
+ interrupt-parent = <&gpio0>;
|
||||
+ interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pmic_int_l>;
|
||||
+ rockchip,system-power-controller;
|
||||
+ wakeup-source;
|
||||
+
|
||||
+ vcc1-supply = <&vcc_sys>;
|
||||
+ vcc2-supply = <&vcc_sys>;
|
||||
+ vcc3-supply = <&vcc_sys>;
|
||||
+ vcc4-supply = <&vcc_sys>;
|
||||
+ vcc5-supply = <&vcc_sys>;
|
||||
+ vcc6-supply = <&vcc_sys>;
|
||||
+ vcc7-supply = <&vcc_sys>;
|
||||
+
|
||||
+ regulators {
|
||||
+ vdd_logic: DCDC_REG1 {
|
||||
+ regulator-name = "vdd_logic";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-initial-mode = <0x2>;
|
||||
+ regulator-min-microvolt = <500000>;
|
||||
+ regulator-max-microvolt = <1350000>;
|
||||
+ regulator-ramp-delay = <6001>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <900000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_gpu_npu: DCDC_REG2 {
|
||||
+ regulator-name = "vdd_gpu_npu";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-initial-mode = <0x2>;
|
||||
+ regulator-min-microvolt = <500000>;
|
||||
+ regulator-max-microvolt = <1350000>;
|
||||
+ regulator-ramp-delay = <6001>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_ddr: DCDC_REG3 {
|
||||
+ regulator-name = "vcc_ddr";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-initial-mode = <0x2>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc3v3_sys: DCDC_REG4 {
|
||||
+ regulator-name = "vcc3v3_sys";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-initial-mode = <0x2>;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcca1v8_pmu: LDO_REG1 {
|
||||
+ regulator-name = "vcca1v8_pmu";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1800000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdda_0v9: LDO_REG2 {
|
||||
+ regulator-name = "vdda_0v9";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <900000>;
|
||||
+ regulator-max-microvolt = <900000>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdda0v9_pmu: LDO_REG3 {
|
||||
+ regulator-name = "vdda0v9_pmu";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <900000>;
|
||||
+ regulator-max-microvolt = <900000>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <900000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vccio_acodec: LDO_REG4 {
|
||||
+ regulator-name = "vccio_acodec";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vccio_sd: LDO_REG5 {
|
||||
+ regulator-name = "vccio_sd";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc3v3_pmu: LDO_REG6 {
|
||||
+ regulator-name = "vcc3v3_pmu";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_1v8_p: LDO_REG7 {
|
||||
+ regulator-name = "vcc_1v8_p";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc1v8_dvp: LDO_REG8 {
|
||||
+ regulator-name = "vcc1v8_dvp";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc2v8_dvp: LDO_REG9 {
|
||||
+ regulator-name = "vcc2v8_dvp";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <2800000>;
|
||||
+ regulator-max-microvolt = <2800000>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ pmic {
|
||||
+ pmic_int_l: pmic-int-l {
|
||||
+ rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ user_led2: user-led2 {
|
||||
+ rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pmu_io_domains {
|
||||
+ pmuio1-supply = <&vcc3v3_pmu>;
|
||||
+ pmuio2-supply = <&vcc_3v3>;
|
||||
+ vccio1-supply = <&vccio_acodec>;
|
||||
+ vccio2-supply = <&vcc_1v8>;
|
||||
+ vccio3-supply = <&vccio_sd>;
|
||||
+ vccio4-supply = <&vcc_1v8>;
|
||||
+ vccio5-supply = <&vcc_3v3>;
|
||||
+ vccio6-supply = <&vcc_3v3>;
|
||||
+ vccio7-supply = <&vcc_3v3>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&saradc {
|
||||
+ vref-supply = <&vcca_1v8>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sdhci {
|
||||
+ bus-width = <8>;
|
||||
+ max-frequency = <200000000>;
|
||||
+ mmc-hs200-1_8v;
|
||||
+ non-removable;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
|
||||
+ vmmc-supply = <&vcc_3v3>;
|
||||
+ vqmmc-supply = <&vcc_1v8>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb2phy0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb2phy1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tsadc {
|
||||
+ rockchip,hw-tshut-mode = <1>;
|
||||
+ rockchip,hw-tshut-polarity = <0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
@@ -1,134 +0,0 @@
|
||||
From af5a803bf212e077e5fb7a1d4cf6be02f74a74ca Mon Sep 17 00:00:00 2001
|
||||
From: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Date: Wed, 25 Jan 2023 21:40:23 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: rk3566: Enable WiFi, BT support for
|
||||
Radxa CM3
|
||||
|
||||
Radxa Compute Module 3 has an onboard AW_CM256SM WiFi/BT module.
|
||||
|
||||
Add nodes for enabling it.
|
||||
|
||||
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Link: https://lore.kernel.org/r/20230125161023.12115-2-jagan@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
.../boot/dts/rockchip/rk3566-radxa-cm3.dtsi | 80 +++++++++++++++++++
|
||||
1 file changed, 80 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3.dtsi
|
||||
@@ -66,6 +66,15 @@
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&vcc_1v8_p>;
|
||||
};
|
||||
+
|
||||
+ sdio_pwrseq: pwrseq-sdio {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ clocks = <&rk817 1>;
|
||||
+ clock-names = "ext_clock";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&wifi_reg_on_h>;
|
||||
+ reset-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
@@ -287,6 +296,20 @@
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
+ bluetooth {
|
||||
+ bt_host_wake_h: bt-host-wake-h {
|
||||
+ rockchip,pins = <2 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ bt_reg_on_h: bt-reg-on-h {
|
||||
+ rockchip,pins = <2 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ bt_wake_host_h: bt-wake-host-h {
|
||||
+ rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
pmic {
|
||||
pmic_int_l: pmic-int-l {
|
||||
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
@@ -298,6 +321,16 @@
|
||||
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ wifi {
|
||||
+ wifi_reg_on_h: wifi-reg-on-h {
|
||||
+ rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ wifi_host_wake_h: wifi-host-wake-h {
|
||||
+ rockchip,pins = <2 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
&pmu_io_domains {
|
||||
@@ -318,6 +351,34 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&sdmmc1 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ bus-width = <4>;
|
||||
+ disable-wp;
|
||||
+ cap-sd-highspeed;
|
||||
+ cap-sdio-irq;
|
||||
+ keep-power-in-suspend;
|
||||
+ mmc-pwrseq = <&sdio_pwrseq>;
|
||||
+ non-removable;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_clk &sdmmc1_cmd>;
|
||||
+ sd-uhs-sdr104;
|
||||
+ vmmc-supply = <&vcc_3v3>;
|
||||
+ vqmmc-supply = <&vcc_1v8>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ wifi@1 {
|
||||
+ compatible = "brcm,bcm43455-fmac";
|
||||
+ reg = <1>;
|
||||
+ interrupt-parent = <&gpio2>;
|
||||
+ interrupts = <RK_PC1 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ interrupt-names = "host-wake";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&wifi_host_wake_h>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&sdhci {
|
||||
bus-width = <8>;
|
||||
max-frequency = <200000000>;
|
||||
@@ -330,6 +391,25 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&uart1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart1m0_ctsn &uart1m0_rtsn &uart1m0_xfer>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ bluetooth {
|
||||
+ compatible = "brcm,bcm4345c5";
|
||||
+ clocks = <&rk817 1>;
|
||||
+ clock-names = "lpo";
|
||||
+ device-wakeup-gpios = <&gpio2 RK_PB2 GPIO_ACTIVE_HIGH>;
|
||||
+ host-wakeup-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>;
|
||||
+ reset-gpios = <&gpio2 RK_PC0 GPIO_ACTIVE_LOW>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&bt_host_wake_h &bt_reg_on_h &bt_wake_host_h>;
|
||||
+ vbat-supply = <&vcc_3v3>;
|
||||
+ vddio-supply = <&vcc_1v8>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&usb2phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -1,32 +0,0 @@
|
||||
From 477ed3ade6a46e445b4e2348b710c51df4f6f4b1 Mon Sep 17 00:00:00 2001
|
||||
From: Manoj Sai <abbaraju.manojsai@amarulasolutions.com>
|
||||
Date: Thu, 23 Feb 2023 19:29:29 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: Enable USB OTG for rk3566 Radxa CM3
|
||||
|
||||
Enable USB OTG support for Radxa Compute Module 3 IO Board
|
||||
|
||||
Signed-off-by: Manoj Sai <abbaraju.manojsai@amarulasolutions.com>
|
||||
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Link: https://lore.kernel.org/r/20230223135929.630787-1-abbaraju.manojsai@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
@@ -254,6 +254,14 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&usb2phy0_otg {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_host0_xhci {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&vop {
|
||||
assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
|
||||
assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
|
||||
@@ -1,45 +0,0 @@
|
||||
From 8f19828844f20b22182719cf53be64f8c955aee8 Mon Sep 17 00:00:00 2001
|
||||
From: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Date: Mon, 23 Jan 2023 12:46:50 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: Fix compatible for Radxa CM3
|
||||
|
||||
The compatible string "radxa,radxa-cm3" referring the product name
|
||||
as "Radxa Radxa CM3" but the actual product name is "Radxa CM3".
|
||||
|
||||
Fix the compatible strings.
|
||||
|
||||
Fixes: 24a28d3eb07d ("dt-bindings: arm: rockchip: Add Radxa Compute Module 3")
|
||||
Fixes: 7469ab529bca ("arm64: dts: rockchip: Add rk3566 based Radxa Compute Module 3")
|
||||
Fixes: 096ebfb74b19 ("arm64: dts: rockchip: Add Radxa Compute Module 3 IO board")
|
||||
Suggested-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230123071654.73139-1-jagan@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts | 2 +-
|
||||
arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3.dtsi | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
/ {
|
||||
model = "Radxa Compute Module 3(CM3) IO Board";
|
||||
- compatible = "radxa,radxa-cm3-io", "radxa,radxa-cm3", "rockchip,rk3566";
|
||||
+ compatible = "radxa,cm3-io", "radxa,cm3", "rockchip,rk3566";
|
||||
|
||||
aliases {
|
||||
mmc1 = &sdmmc0;
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3.dtsi
|
||||
@@ -8,7 +8,7 @@
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/ {
|
||||
- compatible = "radxa,radxa-cm3", "rockchip,rk3566";
|
||||
+ compatible = "radxa,cm3", "rockchip,rk3566";
|
||||
|
||||
aliases {
|
||||
mmc0 = &sdhci;
|
||||
@@ -1,28 +0,0 @@
|
||||
From f99a75f11f46a24dabb33e90893eebf61dca0566 Mon Sep 17 00:00:00 2001
|
||||
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
Date: Sun, 2 Jul 2023 20:52:42 +0200
|
||||
Subject: [PATCH] arm64: dts: rockchip: minor whitespace cleanup around '='
|
||||
|
||||
The DTS code coding style expects exactly one space before and after '='
|
||||
sign.
|
||||
|
||||
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230702185242.44421-1-krzysztof.kozlowski@linaro.org
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
.../boot/dts/rockchip/rk3566-radxa-cm3-io.dts | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
@@ -137,8 +137,8 @@
|
||||
|
||||
&mdio1 {
|
||||
rgmii_phy1: ethernet-phy@0 {
|
||||
- compatible="ethernet-phy-ieee802.3-c22";
|
||||
- reg= <0x0>;
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <0x0>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
From 36d9b3ae708e865cdab95692db5a24c5d975383d Mon Sep 17 00:00:00 2001
|
||||
From: Dragan Simic <dsimic@manjaro.org>
|
||||
Date: Tue, 12 Dec 2023 09:01:39 +0100
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add ethernet0 alias to the dts for
|
||||
RK3566 boards
|
||||
|
||||
Add ethernet0 alias to the board dts files for a few supported RK3566 boards
|
||||
that had it missing. Also, remove the ethernet0 alias from one RK3566 SoM
|
||||
dtsi file, which doesn't enable the GMAC, and add the ethernet0 alias back to
|
||||
the dependent board dts files, which actually enable the GMAC.
|
||||
|
||||
Signed-off-by: Dragan Simic <dsimic@manjaro.org>
|
||||
Link: https://lore.kernel.org/r/d2a272e0ae0fff0adfab8bb0238243b11d348799.1702368023.git.dsimic@manjaro.org
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts | 1 +
|
||||
1 files changed, 1 insertions(+), 0 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3566-radxa-cm3-io.dts
|
||||
@@ -14,6 +14,7 @@
|
||||
compatible = "radxa,cm3-io", "radxa,cm3", "rockchip,rk3566";
|
||||
|
||||
aliases {
|
||||
+ ethernet0 = &gmac1;
|
||||
mmc1 = &sdmmc0;
|
||||
};
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
From 64b69474edf3b885c19a89bb165f978ba1b4be00 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Tue, 10 Jan 2023 22:55:50 +0000
|
||||
Subject: [PATCH] arm64: dts: rockchip: assign rate to clk_rtc_32k on rk356x
|
||||
|
||||
clk_rtc_32k and its child clock clk_hdmi_cec detauls to a rate of 24 MHz
|
||||
and not to 32 kHz on RK356x.
|
||||
|
||||
Fix this by assigning clk_rtc_32k a rate of 32768, also assign the parent
|
||||
to clk_rtc32k_frac.
|
||||
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
Link: https://lore.kernel.org/r/20230110225547.1563119-2-jonas@kwiboo.se
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk356x.dtsi | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
||||
@@ -422,8 +422,9 @@
|
||||
clock-names = "xin24m";
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
- assigned-clocks = <&cru PLL_GPLL>, <&pmucru PLL_PPLL>;
|
||||
- assigned-clock-rates = <1200000000>, <200000000>;
|
||||
+ assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, <&pmucru PLL_PPLL>;
|
||||
+ assigned-clock-rates = <32768>, <1200000000>, <200000000>;
|
||||
+ assigned-clock-parents = <&pmucru CLK_RTC32K_FRAC>;
|
||||
rockchip,grf = <&grf>;
|
||||
};
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
From 49665ab0ed5eed4fa7b8a6b236ff2df681c89673 Mon Sep 17 00:00:00 2001
|
||||
From: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Date: Thu, 6 Oct 2022 23:25:23 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add regulator suffix to rock-3a
|
||||
|
||||
Add -regulator suffix to regulator names on Radxa ROCK3 Model A
|
||||
board. This makes the naming more consistent.
|
||||
|
||||
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Acked-by: Michael Riesch <michael.riesch@wolfvision.net>
|
||||
Link: https://lore.kernel.org/r/20221006152524.502445-2-amadeus@jmu.edu.cn
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
@@ -60,7 +60,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
- vcc12v_dcin: vcc12v-dcin {
|
||||
+ vcc12v_dcin: vcc12v-dcin-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc12v_dcin";
|
||||
regulator-always-on;
|
||||
@@ -79,7 +79,7 @@
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
- vcc3v3_sys: vcc3v3-sys {
|
||||
+ vcc3v3_sys: vcc3v3-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_sys";
|
||||
regulator-always-on;
|
||||
@@ -89,7 +89,7 @@
|
||||
vin-supply = <&vcc12v_dcin>;
|
||||
};
|
||||
|
||||
- vcc5v0_sys: vcc5v0-sys {
|
||||
+ vcc5v0_sys: vcc5v0-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_sys";
|
||||
regulator-always-on;
|
||||
@@ -99,7 +99,7 @@
|
||||
vin-supply = <&vcc12v_dcin>;
|
||||
};
|
||||
|
||||
- vcc5v0_usb: vcc5v0-usb {
|
||||
+ vcc5v0_usb: vcc5v0-usb-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_usb";
|
||||
regulator-always-on;
|
||||
@@ -109,7 +109,7 @@
|
||||
vin-supply = <&vcc12v_dcin>;
|
||||
};
|
||||
|
||||
- vcc5v0_usb_host: vcc5v0-usb-host {
|
||||
+ vcc5v0_usb_host: vcc5v0-usb-host-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||
@@ -144,7 +144,7 @@
|
||||
vin-supply = <&vcc5v0_usb>;
|
||||
};
|
||||
|
||||
- vcc_cam: vcc-cam {
|
||||
+ vcc_cam: vcc-cam-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;
|
||||
@@ -160,7 +160,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
- vcc_mipi: vcc-mipi {
|
||||
+ vcc_mipi: vcc-mipi-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
|
||||
@@ -1,75 +0,0 @@
|
||||
From 0522cd8112204d124d714eee7e9f0cac6de999d9 Mon Sep 17 00:00:00 2001
|
||||
From: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Date: Thu, 6 Oct 2022 23:25:24 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add PCIe v3 nodes to rock-3a
|
||||
|
||||
Add Nodes to Radxa ROCK3 Model A board to support PCIe v3.
|
||||
|
||||
Tested-by: Anand Moon <linux.amoon@gmail.com>
|
||||
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Link: https://lore.kernel.org/r/20221006152524.502445-3-amadeus@jmu.edu.cn
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
.../boot/dts/rockchip/rk3568-rock-3a.dts | 44 +++++++++++++++++++
|
||||
1 file changed, 44 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
@@ -67,6 +67,37 @@
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
+ pcie30_avdd0v9: pcie30-avdd0v9-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "pcie30_avdd0v9";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <900000>;
|
||||
+ regulator-max-microvolt = <900000>;
|
||||
+ vin-supply = <&vcc3v3_sys>;
|
||||
+ };
|
||||
+
|
||||
+ pcie30_avdd1v8: pcie30-avdd1v8-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "pcie30_avdd1v8";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ vin-supply = <&vcc3v3_sys>;
|
||||
+ };
|
||||
+
|
||||
+ /* pi6c pcie clock generator */
|
||||
+ vcc3v3_pi6c_03: vcc3v3-pi6c-03-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc3v3_pi6c_03";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ vin-supply = <&vcc5v0_sys>;
|
||||
+ };
|
||||
+
|
||||
vcc3v3_pcie: vcc3v3-pcie-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
@@ -546,6 +577,19 @@
|
||||
vpcie3v3-supply = <&vcc3v3_pcie>;
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+&pcie30phy {
|
||||
+ phy-supply = <&vcc3v3_pi6c_03>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie3x2 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pcie30x2m1_pins>;
|
||||
+ reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
|
||||
+ vpcie3v3-supply = <&vcc3v3_pcie>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
|
||||
&pinctrl {
|
||||
cam {
|
||||
@@ -1,45 +0,0 @@
|
||||
From 755f37010f3eac0bdfa41bdf2308e8380a93f10c Mon Sep 17 00:00:00 2001
|
||||
From: Shengyu Qu <wiagn233@outlook.com>
|
||||
Date: Sun, 30 Oct 2022 01:09:04 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: RK356x: Add I2S2 device node
|
||||
|
||||
This patch adds I2S2 device tree node for RK3566/RK3568.
|
||||
|
||||
Signed-off-by: Shengyu Qu <wiagn233@outlook.com>
|
||||
Link: https://lore.kernel.org/r/OS3P286MB259771C12F2B15A4DDF435FE98359@OS3P286MB2597.JPNP286.PROD.OUTLOOK.COM
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk356x.dtsi | 22 ++++++++++++++++++++++
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
||||
@@ -1109,6 +1109,28 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+ i2s2_2ch: i2s@fe420000 {
|
||||
+ compatible = "rockchip,rk3568-i2s-tdm";
|
||||
+ reg = <0x0 0xfe420000 0x0 0x1000>;
|
||||
+ interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ assigned-clocks = <&cru CLK_I2S2_2CH_SRC>;
|
||||
+ assigned-clock-rates = <1188000000>;
|
||||
+ clocks = <&cru MCLK_I2S2_2CH>, <&cru MCLK_I2S2_2CH>, <&cru HCLK_I2S2_2CH>;
|
||||
+ clock-names = "mclk_tx", "mclk_rx", "hclk";
|
||||
+ dmas = <&dmac1 4>, <&dmac1 5>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ resets = <&cru SRST_M_I2S2_2CH>;
|
||||
+ reset-names = "m";
|
||||
+ rockchip,grf = <&grf>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&i2s2m0_sclktx
|
||||
+ &i2s2m0_lrcktx
|
||||
+ &i2s2m0_sdi
|
||||
+ &i2s2m0_sdo>;
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
i2s3_2ch: i2s@fe430000 {
|
||||
compatible = "rockchip,rk3568-i2s-tdm";
|
||||
reg = <0x0 0xfe430000 0x0 0x1000>;
|
||||
@@ -1,39 +0,0 @@
|
||||
From 0fc19ab75acde78558bd0f6fe3e5f63cf8ee88b0 Mon Sep 17 00:00:00 2001
|
||||
From: Heiko Stuebner <heiko@sntech.de>
|
||||
Date: Tue, 27 Feb 2024 18:35:26 +0100
|
||||
Subject: [PATCH] arm64: dts: rockchip: fix reset-names for rk356x i2s2
|
||||
controller
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The dtbscheck reports a warning for a wrong reset-names property for
|
||||
the i2s2 controller on rk356x socs.
|
||||
|
||||
The other controllers on the soc provide tx and rx directions and hence
|
||||
two resets and separate clocks for each direction, while i2s2 only
|
||||
provides one reset. This was so far named just "m" which isn't part of
|
||||
the binding.
|
||||
|
||||
The clock-names the controller uses all end in "tx", so use the matching
|
||||
"tx-m" reset-name for the i2s controller.
|
||||
|
||||
Fixes: 755f37010f3e ("arm64: dts: rockchip: RK356x: Add I2S2 device node")
|
||||
Acked-by: Uwe Kleine-König <ukleinek@debian.org>
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
Link: https://lore.kernel.org/r/20240227173526.710056-2-heiko@sntech.de
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk356x.dtsi | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
||||
@@ -1120,7 +1120,7 @@
|
||||
dmas = <&dmac1 4>, <&dmac1 5>;
|
||||
dma-names = "tx", "rx";
|
||||
resets = <&cru SRST_M_I2S2_2CH>;
|
||||
- reset-names = "m";
|
||||
+ reset-names = "tx-m";
|
||||
rockchip,grf = <&grf>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s2m0_sclktx
|
||||
@@ -1,30 +0,0 @@
|
||||
From 3a6dcf61d542fb1f4fbd546a9df91938440ece3a Mon Sep 17 00:00:00 2001
|
||||
From: Shengyu Qu <wiagn233@outlook.com>
|
||||
Date: Sun, 30 Oct 2022 01:09:06 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add I2S2 node for RADXA Rock 3A
|
||||
|
||||
This patch adds I2S2 node for Radxa Rock 3A's M.2 E key slot for
|
||||
Bluetooth PCM input. I2S2 is not used now, but could be configured
|
||||
for Bluetooth HFP over PCM in future patches.
|
||||
|
||||
Signed-off-by: Shengyu Qu <wiagn233@outlook.com>
|
||||
Link: https://lore.kernel.org/r/OS3P286MB259791E603F96942F51332D098359@OS3P286MB2597.JPNP286.PROD.OUTLOOK.COM
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
@@ -558,6 +558,11 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&i2s2_2ch {
|
||||
+ rockchip,trcm-sync-tx-only;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&mdio1 {
|
||||
rgmii_phy1: ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
@@ -1,115 +0,0 @@
|
||||
From 8cf890aabd45664b8f27a5581c8d2a51a8ce2e17 Mon Sep 17 00:00:00 2001
|
||||
From: Shengyu Qu <wiagn233@outlook.com>
|
||||
Date: Sun, 30 Oct 2022 01:09:08 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add nodes for SDIO/UART Wi-Fi/Bluetooth
|
||||
modules to Radxa Rock 3A
|
||||
|
||||
This patch adds related bus/pinctrl/power nodes to enable support for
|
||||
Radxa's Wi-Fi Bluetooth combo module.
|
||||
Tested with RADXA A6 module, which uses AP6275S (BCM43752A2)
|
||||
|
||||
Signed-off-by: Shengyu Qu <wiagn233@outlook.com>
|
||||
Link: https://lore.kernel.org/r/OS3P286MB25972313C916A68698B1CD8698359@OS3P286MB2597.JPNP286.PROD.OUTLOOK.COM
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
.../boot/dts/rockchip/rk3568-rock-3a.dts | 69 +++++++++++++++++++
|
||||
1 file changed, 69 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
@@ -60,6 +60,17 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ sdio_pwrseq: sdio-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ clocks = <&rk809 1>;
|
||||
+ clock-names = "ext_clock";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&wifi_enable>;
|
||||
+ post-power-on-delay-ms = <100>;
|
||||
+ power-off-delay-us = <5000000>;
|
||||
+ reset-gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
vcc12v_dcin: vcc12v-dcin-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc12v_dcin";
|
||||
@@ -655,6 +666,26 @@
|
||||
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ bt {
|
||||
+ bt_enable: bt-enable {
|
||||
+ rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ bt_host_wake: bt-host-wake {
|
||||
+ rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
+ };
|
||||
+
|
||||
+ bt_wake: bt-wake {
|
||||
+ rockchip,pins = <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ sdio-pwrseq {
|
||||
+ wifi_enable: wifi-enable {
|
||||
+ rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
&pmu_io_domains {
|
||||
@@ -699,12 +730,50 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&sdmmc2 {
|
||||
+ supports-sdio;
|
||||
+ bus-width = <4>;
|
||||
+ disable-wp;
|
||||
+ cap-sd-highspeed;
|
||||
+ cap-sdio-irq;
|
||||
+ keep-power-in-suspend;
|
||||
+ mmc-pwrseq = <&sdio_pwrseq>;
|
||||
+ non-removable;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>;
|
||||
+ sd-uhs-sdr104;
|
||||
+ vmmc-supply = <&vcc3v3_sys>;
|
||||
+ vqmmc-supply = <&vcc_1v8>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&tsadc {
|
||||
rockchip,hw-tshut-mode = <1>;
|
||||
rockchip,hw-tshut-polarity = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&uart1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>;
|
||||
+ uart-has-rtscts;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ bluetooth {
|
||||
+ compatible = "brcm,bcm43438-bt";
|
||||
+ clocks = <&rk809 1>;
|
||||
+ clock-names = "lpo";
|
||||
+ device-wakeup-gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>;
|
||||
+ host-wakeup-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
|
||||
+ shutdown-gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_HIGH>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&bt_host_wake &bt_wake &bt_enable>;
|
||||
+ vbat-supply = <&vcc3v3_sys>;
|
||||
+ vddio-supply = <&vcc_1v8>;
|
||||
+ /* vddio comes from regulator on module, use IO bank voltage instead */
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -1,54 +0,0 @@
|
||||
From ef9f4b4a50206bedd931f45dd9fd57fd4c1714a6 Mon Sep 17 00:00:00 2001
|
||||
From: Anand Moon <linux.amoon@gmail.com>
|
||||
Date: Wed, 16 Nov 2022 20:01:44 +0000
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add support of external clock to
|
||||
ethernet node on Rock 3A SBC
|
||||
|
||||
Add support of external clock gmac1_clkin which is used as input clock
|
||||
to ethernet node.
|
||||
|
||||
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
|
||||
Reviewed-by: Michael Riesch <michael.riesch@wolfvision.net>
|
||||
Tested-by: Michael Riesch <michael.riesch@wolfvision.net>
|
||||
Link: https://lore.kernel.org/r/20221116200150.4657-3-linux.amoon@gmail.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts | 13 ++++++++++---
|
||||
1 file changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
@@ -32,6 +32,13 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ gmac1_clkin: external-gmac1-clock {
|
||||
+ compatible = "fixed-clock";
|
||||
+ clock-frequency = <125000000>;
|
||||
+ clock-output-names = "gmac1_clkin";
|
||||
+ #clock-cells = <0>;
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
@@ -249,9 +256,8 @@
|
||||
|
||||
&gmac1 {
|
||||
assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
|
||||
- assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
|
||||
- assigned-clock-rates = <0>, <125000000>;
|
||||
- clock_in_out = "output";
|
||||
+ assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
|
||||
+ clock_in_out = "input";
|
||||
phy-handle = <&rgmii_phy1>;
|
||||
phy-mode = "rgmii-id";
|
||||
pinctrl-names = "default";
|
||||
@@ -259,6 +265,7 @@
|
||||
&gmac1m1_tx_bus2
|
||||
&gmac1m1_rx_bus2
|
||||
&gmac1m1_rgmii_clk
|
||||
+ &gmac1m1_clkinout
|
||||
&gmac1m1_rgmii_bus>;
|
||||
status = "okay";
|
||||
};
|
||||
@@ -1,30 +0,0 @@
|
||||
From 79aa02ddc682558edb9bd56522ad841759c99201 Mon Sep 17 00:00:00 2001
|
||||
From: Anand Moon <linux.amoon@gmail.com>
|
||||
Date: Wed, 16 Nov 2022 20:01:45 +0000
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add support of regulator for ethernet
|
||||
node on Rock 3A SBC
|
||||
|
||||
Add regulator support for ethernet node
|
||||
|
||||
Fix following warning.
|
||||
[ 7.365199] rk_gmac-dwmac fe010000.ethernet: no regulator found
|
||||
|
||||
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
|
||||
Acked-by: Michael Riesch <michael.riesch@wolfvision.net>
|
||||
Tested-by: Michael Riesch <michael.riesch@wolfvision.net>
|
||||
Link: https://lore.kernel.org/r/20221116200150.4657-4-linux.amoon@gmail.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
@@ -260,6 +260,7 @@
|
||||
clock_in_out = "input";
|
||||
phy-handle = <&rgmii_phy1>;
|
||||
phy-mode = "rgmii-id";
|
||||
+ phy-supply = <&vcc_3v3>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac1m1_miim
|
||||
&gmac1m1_tx_bus2
|
||||
@@ -1,26 +0,0 @@
|
||||
From 0b693c8f8b88d50114caaa4d2337932d4d172631 Mon Sep 17 00:00:00 2001
|
||||
From: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Date: Mon, 19 Dec 2022 18:10:52 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: remove unsupported property from sdmmc2
|
||||
for rock-3a
|
||||
|
||||
'supports-sdio' is not part of the DT binding
|
||||
and not supported by the Linux driver.
|
||||
|
||||
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Link: https://lore.kernel.org/r/20221219101052.7899-1-amadeus@jmu.edu.cn
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
@@ -739,7 +739,6 @@
|
||||
};
|
||||
|
||||
&sdmmc2 {
|
||||
- supports-sdio;
|
||||
bus-width = <4>;
|
||||
disable-wp;
|
||||
cap-sd-highspeed;
|
||||
@@ -1,61 +0,0 @@
|
||||
From d268da063b99cf1c4d8304a33c27bbed0763a474 Mon Sep 17 00:00:00 2001
|
||||
From: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Date: Wed, 18 Jan 2023 13:34:54 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: Update eMMC, SD aliases for Radxa SBC
|
||||
boards
|
||||
|
||||
Radxa SBC boards like ROCK 3A/4 models do support eMMC and SDcard
|
||||
via external connector slots.
|
||||
|
||||
Mark, the eMMC has mmc0 by considering the Rockchip boot order priority
|
||||
as both MMC devices are connected externally.
|
||||
|
||||
Reported-by: FUKAUMI Naoki <naoki@radxa.com>
|
||||
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Link: https://lore.kernel.org/r/20230118080454.11643-2-jagan@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3399-rock-4c-plus.dts | 4 ++--
|
||||
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi | 4 ++--
|
||||
arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts | 4 ++--
|
||||
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-4c-plus.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-4c-plus.dts
|
||||
@@ -15,8 +15,8 @@
|
||||
compatible = "radxa,rock-4c-plus", "rockchip,rk3399";
|
||||
|
||||
aliases {
|
||||
- mmc0 = &sdmmc;
|
||||
- mmc1 = &sdhci;
|
||||
+ mmc0 = &sdhci;
|
||||
+ mmc1 = &sdmmc;
|
||||
};
|
||||
|
||||
chosen {
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
|
||||
@@ -13,8 +13,8 @@
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
- mmc0 = &sdmmc;
|
||||
- mmc1 = &sdhci;
|
||||
+ mmc0 = &sdhci;
|
||||
+ mmc1 = &sdmmc;
|
||||
};
|
||||
|
||||
chosen {
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
@@ -13,8 +13,8 @@
|
||||
|
||||
aliases {
|
||||
ethernet0 = &gmac1;
|
||||
- mmc0 = &sdmmc0;
|
||||
- mmc1 = &sdhci;
|
||||
+ mmc0 = &sdhci;
|
||||
+ mmc1 = &sdmmc0;
|
||||
};
|
||||
|
||||
chosen: chosen {
|
||||
@@ -1,39 +0,0 @@
|
||||
From 0597d85859e48c4366862a6252479698590ae39c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Tam=C3=A1s=20Sz=C5=B1cs?= <tszucs@protonmail.ch>
|
||||
Date: Wed, 11 Oct 2023 19:14:56 +0000
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add missing sdmmc2 SDR rates to rock-3a
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Add missing UHS-I SDR rates to sdmmc2. Add explicit alias as mmc2 while at it.
|
||||
It would be good to have matching timings enabled in case slower SDIO devices
|
||||
are encountered.
|
||||
|
||||
Signed-off-by: Tamás Szűcs <tszucs@protonmail.ch>
|
||||
Link: https://lore.kernel.org/r/20231011191448.58936-1-tszucs@protonmail.ch
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts
|
||||
@@ -15,6 +15,7 @@
|
||||
ethernet0 = &gmac1;
|
||||
mmc0 = &sdhci;
|
||||
mmc1 = &sdmmc0;
|
||||
+ mmc2 = &sdmmc2;
|
||||
};
|
||||
|
||||
chosen: chosen {
|
||||
@@ -748,6 +749,9 @@
|
||||
non-removable;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>;
|
||||
+ sd-uhs-sdr12;
|
||||
+ sd-uhs-sdr25;
|
||||
+ sd-uhs-sdr50;
|
||||
sd-uhs-sdr104;
|
||||
vmmc-supply = <&vcc3v3_sys>;
|
||||
vqmmc-supply = <&vcc_1v8>;
|
||||
@@ -1,48 +0,0 @@
|
||||
From c80992abd2877590059e9cb254213c16824e2106 Mon Sep 17 00:00:00 2001
|
||||
From: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Date: Wed, 18 Jan 2023 13:34:53 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: Update eMMC, SD aliases for Radxa SoM
|
||||
boards
|
||||
|
||||
Radxa has produced Compute Modules like RK3399pro VMARC and CM3i with
|
||||
onboarding eMMC flash, so the eMMC is the primary MMC device.
|
||||
|
||||
On the other hand, Rockchip boot orders start from eMMC from an MMC
|
||||
device perspective.
|
||||
|
||||
Mark, the eMMC has mmc0 to satisfy the above two conditions.
|
||||
|
||||
Reported-by: FUKAUMI Naoki <naoki@radxa.com>
|
||||
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Link: https://lore.kernel.org/r/20230118080454.11643-1-jagan@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi | 4 ++--
|
||||
arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts | 3 +--
|
||||
2 files changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi
|
||||
@@ -13,8 +13,8 @@
|
||||
compatible = "vamrs,rk3399pro-vmarc-som", "rockchip,rk3399pro";
|
||||
|
||||
aliases {
|
||||
- mmc0 = &sdmmc;
|
||||
- mmc1 = &sdhci;
|
||||
+ mmc0 = &sdhci;
|
||||
+ mmc1 = &sdmmc;
|
||||
};
|
||||
|
||||
vcc3v3_pcie: vcc-pcie-regulator {
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
|
||||
@@ -8,8 +8,7 @@
|
||||
compatible = "radxa,e25", "rockchip,rk3568";
|
||||
|
||||
aliases {
|
||||
- mmc0 = &sdmmc0;
|
||||
- mmc1 = &sdhci;
|
||||
+ mmc1 = &sdmmc0;
|
||||
};
|
||||
|
||||
pwm-leds {
|
||||
@@ -1,35 +0,0 @@
|
||||
From c4d2b02d63ee38b381fbc886c02eecfec4f981cc Mon Sep 17 00:00:00 2001
|
||||
From: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Date: Mon, 23 Jan 2023 12:46:51 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add missing CM3i fallback compatible
|
||||
for Radxa E25
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
In order to function the Radxa E25 Carrier board, it is mandatory to
|
||||
mount the Radxa CM3i module.
|
||||
|
||||
Add Radxa CM3i compatible as fallback compatible to string to satisfy
|
||||
the Module and Carrier board topology.
|
||||
|
||||
Fixes: 2bf2f4d9f673 ("arm64: dts: rockchip: Add Radxa CM3I E25")
|
||||
Cc: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Link: https://lore.kernel.org/r/20230123071654.73139-2-jagan@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
/ {
|
||||
model = "Radxa E25";
|
||||
- compatible = "radxa,e25", "rockchip,rk3568";
|
||||
+ compatible = "radxa,e25", "radxa,cm3i", "rockchip,rk3568";
|
||||
|
||||
aliases {
|
||||
mmc1 = &sdmmc0;
|
||||
@@ -1,37 +0,0 @@
|
||||
From 421c059d413812444318d27c1b4d6e71f1c1134c Mon Sep 17 00:00:00 2001
|
||||
From: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Date: Mon, 23 Jan 2023 12:46:52 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: Drop unneeded model for Radxa CM3i
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
With module and carrier board topology, carrier board dts will include
|
||||
module dtsi files for creating complete platform.
|
||||
|
||||
The carrier board dts will have final model name and compatible string
|
||||
so any model name added in module dtsi will eventually replaced.
|
||||
|
||||
This happened for any devicetree property if the same property is updated
|
||||
or added twice.
|
||||
|
||||
So, drop this unneeded model name from module dtsi.
|
||||
|
||||
Cc: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Link: https://lore.kernel.org/r/20230123071654.73139-3-jagan@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3568-radxa-cm3i.dtsi | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-cm3i.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-cm3i.dtsi
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "rk3568.dtsi"
|
||||
|
||||
/ {
|
||||
- model = "Radxa CM3 Industrial Board";
|
||||
compatible = "radxa,cm3i", "rockchip,rk3568";
|
||||
|
||||
aliases {
|
||||
@@ -1,28 +0,0 @@
|
||||
From ef9134d9bbce071c9e4ebdcbb6f8fb1a5dd0a67e Mon Sep 17 00:00:00 2001
|
||||
From: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Date: Mon, 23 Jan 2023 12:46:53 +0530
|
||||
Subject: [PATCH] arm64: dts: rockchip: Correct the model name for Radxa E25
|
||||
|
||||
Radxa E25 is a Carrier board, so update the model name for Radxa E25
|
||||
as suggested by the Radxa website.
|
||||
|
||||
Fixes: 2bf2f4d9f673 ("arm64: dts: rockchip: Add Radxa CM3I E25")
|
||||
Cc: Chukun Pan <amadeus@jmu.edu.cn>
|
||||
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
Link: https://lore.kernel.org/r/20230123071654.73139-4-jagan@amarulasolutions.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "rk3568-radxa-cm3i.dtsi"
|
||||
|
||||
/ {
|
||||
- model = "Radxa E25";
|
||||
+ model = "Radxa E25 Carrier Board";
|
||||
compatible = "radxa,e25", "radxa,cm3i", "rockchip,rk3568";
|
||||
|
||||
aliases {
|
||||
@@ -1,79 +0,0 @@
|
||||
From a87852e37f782257ebc57cc44a0d3fbf806471f6 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 24 Jul 2023 14:52:16 +0000
|
||||
Subject: [PATCH] arm64: dts: rockchip: Fix PCIe regulators on Radxa E25
|
||||
|
||||
Despite its name, the regulator vcc3v3_pcie30x1 has nothing to do with
|
||||
pcie30x1. Instead, it supply power to VBAT1-5 on the M.2 KEY B port as
|
||||
seen on page 8 of the schematic [1].
|
||||
|
||||
pcie30x1 is used for the mini PCIe slot, and as seen on page 9 the
|
||||
vcc3v3_minipcie regulator is instead related to pcie30x1.
|
||||
|
||||
The M.2 KEY B port can be used for WWAN USB2 modules or SATA drives.
|
||||
|
||||
Use correct regulator vcc3v3_minipcie for pcie30x1.
|
||||
|
||||
[1] https://dl.radxa.com/cm3p/e25/radxa-e25-v1.4-sch.pdf
|
||||
|
||||
Fixes: 2bf2f4d9f673 ("arm64: dts: rockchip: Add Radxa CM3I E25")
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
Link: https://lore.kernel.org/r/20230724145213.3833099-1-jonas@kwiboo.se
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
.../arm64/boot/dts/rockchip/rk3568-radxa-e25.dts | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
|
||||
@@ -47,6 +47,9 @@
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
+ /* actually fed by vcc5v0_sys, dependent
|
||||
+ * on pi6c clock generator
|
||||
+ */
|
||||
vcc3v3_minipcie: vcc3v3-minipcie-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
@@ -54,9 +57,9 @@
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&minipcie_enable_h>;
|
||||
regulator-name = "vcc3v3_minipcie";
|
||||
- regulator-min-microvolt = <5000000>;
|
||||
- regulator-max-microvolt = <5000000>;
|
||||
- vin-supply = <&vcc5v0_sys>;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ vin-supply = <&vcc3v3_pi6c_05>;
|
||||
};
|
||||
|
||||
vcc3v3_ngff: vcc3v3-ngff-regulator {
|
||||
@@ -71,9 +74,6 @@
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
- /* actually fed by vcc5v0_sys, dependent
|
||||
- * on pi6c clock generator
|
||||
- */
|
||||
vcc3v3_pcie30x1: vcc3v3-pcie30x1-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
@@ -83,7 +83,7 @@
|
||||
regulator-name = "vcc3v3_pcie30x1";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
- vin-supply = <&vcc3v3_pi6c_05>;
|
||||
+ vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
vcc3v3_pi6c_05: vcc3v3-pi6c-05-regulator {
|
||||
@@ -117,7 +117,7 @@
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pcie30x1m0_pins>;
|
||||
reset-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
|
||||
- vpcie3v3-supply = <&vcc3v3_pcie30x1>;
|
||||
+ vpcie3v3-supply = <&vcc3v3_minipcie>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
From 2bdfe84fbd57a4ed9fd65a67210442559ce078f0 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 24 Jul 2023 14:52:16 +0000
|
||||
Subject: [PATCH] arm64: dts: rockchip: Enable SATA on Radxa E25
|
||||
|
||||
The M.2 KEY B port can be used for WWAN USB2 modules or SATA drives.
|
||||
|
||||
Enable sata1 node to fix use of SATA drives on the M.2 slot.
|
||||
|
||||
Fixes: 2bf2f4d9f673 ("arm64: dts: rockchip: Add Radxa CM3I E25")
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
Link: https://lore.kernel.org/r/20230724145213.3833099-1-jonas@kwiboo.se
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
|
||||
@@ -99,6 +99,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&combphy1 {
|
||||
+ phy-supply = <&vcc3v3_pcie30x1>;
|
||||
+};
|
||||
+
|
||||
&pcie2x1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pcie20_reset_h>;
|
||||
@@ -178,6 +182,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&sata1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&sdmmc0 {
|
||||
bus-width = <4>;
|
||||
cap-sd-highspeed;
|
||||
@@ -1,792 +0,0 @@
|
||||
From f204a60e545ccd4bc28939054389690fd194cb5e Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Tue, 18 Oct 2022 17:13:59 +0200
|
||||
Subject: [PATCH] dt-bindings: clock: add rk3588 clock definitions
|
||||
|
||||
Add clock ID defines for rk3588.
|
||||
|
||||
Compared to the downstream bindings written by Elaine, this uses
|
||||
continous gapless clock IDs starting at 0. Thus all numbers are
|
||||
different between downstream and upstream, but I kept exactly the
|
||||
same names.
|
||||
|
||||
Co-Developed-by: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
Acked-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20221018151407.63395-2-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
.../dt-bindings/clock/rockchip,rk3588-cru.h | 766 ++++++++++++++++++
|
||||
1 file changed, 766 insertions(+)
|
||||
create mode 100644 include/dt-bindings/clock/rockchip,rk3588-cru.h
|
||||
|
||||
--- /dev/null
|
||||
+++ b/include/dt-bindings/clock/rockchip,rk3588-cru.h
|
||||
@@ -0,0 +1,766 @@
|
||||
+/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
|
||||
+/*
|
||||
+ * Copyright (c) 2021 Rockchip Electronics Co. Ltd.
|
||||
+ * Copyright (c) 2022 Collabora Ltd.
|
||||
+ *
|
||||
+ * Author: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
+ * Author: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _DT_BINDINGS_CLK_ROCKCHIP_RK3588_H
|
||||
+#define _DT_BINDINGS_CLK_ROCKCHIP_RK3588_H
|
||||
+
|
||||
+/* cru-clocks indices */
|
||||
+
|
||||
+#define PLL_B0PLL 0
|
||||
+#define PLL_B1PLL 1
|
||||
+#define PLL_LPLL 2
|
||||
+#define PLL_V0PLL 3
|
||||
+#define PLL_AUPLL 4
|
||||
+#define PLL_CPLL 5
|
||||
+#define PLL_GPLL 6
|
||||
+#define PLL_NPLL 7
|
||||
+#define PLL_PPLL 8
|
||||
+#define ARMCLK_L 9
|
||||
+#define ARMCLK_B01 10
|
||||
+#define ARMCLK_B23 11
|
||||
+#define PCLK_BIGCORE0_ROOT 12
|
||||
+#define PCLK_BIGCORE0_PVTM 13
|
||||
+#define PCLK_BIGCORE1_ROOT 14
|
||||
+#define PCLK_BIGCORE1_PVTM 15
|
||||
+#define PCLK_DSU_S_ROOT 16
|
||||
+#define PCLK_DSU_ROOT 17
|
||||
+#define PCLK_DSU_NS_ROOT 18
|
||||
+#define PCLK_LITCORE_PVTM 19
|
||||
+#define PCLK_DBG 20
|
||||
+#define PCLK_DSU 21
|
||||
+#define PCLK_S_DAPLITE 22
|
||||
+#define PCLK_M_DAPLITE 23
|
||||
+#define MBIST_MCLK_PDM1 24
|
||||
+#define MBIST_CLK_ACDCDIG 25
|
||||
+#define HCLK_I2S2_2CH 26
|
||||
+#define HCLK_I2S3_2CH 27
|
||||
+#define CLK_I2S2_2CH_SRC 28
|
||||
+#define CLK_I2S2_2CH_FRAC 29
|
||||
+#define CLK_I2S2_2CH 30
|
||||
+#define MCLK_I2S2_2CH 31
|
||||
+#define I2S2_2CH_MCLKOUT 32
|
||||
+#define CLK_DAC_ACDCDIG 33
|
||||
+#define CLK_I2S3_2CH_SRC 34
|
||||
+#define CLK_I2S3_2CH_FRAC 35
|
||||
+#define CLK_I2S3_2CH 36
|
||||
+#define MCLK_I2S3_2CH 37
|
||||
+#define I2S3_2CH_MCLKOUT 38
|
||||
+#define PCLK_ACDCDIG 39
|
||||
+#define HCLK_I2S0_8CH 40
|
||||
+#define CLK_I2S0_8CH_TX_SRC 41
|
||||
+#define CLK_I2S0_8CH_TX_FRAC 42
|
||||
+#define MCLK_I2S0_8CH_TX 43
|
||||
+#define CLK_I2S0_8CH_TX 44
|
||||
+#define CLK_I2S0_8CH_RX_SRC 45
|
||||
+#define CLK_I2S0_8CH_RX_FRAC 46
|
||||
+#define MCLK_I2S0_8CH_RX 47
|
||||
+#define CLK_I2S0_8CH_RX 48
|
||||
+#define I2S0_8CH_MCLKOUT 49
|
||||
+#define HCLK_PDM1 50
|
||||
+#define MCLK_PDM1 51
|
||||
+#define HCLK_AUDIO_ROOT 52
|
||||
+#define PCLK_AUDIO_ROOT 53
|
||||
+#define HCLK_SPDIF0 54
|
||||
+#define CLK_SPDIF0_SRC 55
|
||||
+#define CLK_SPDIF0_FRAC 56
|
||||
+#define MCLK_SPDIF0 57
|
||||
+#define CLK_SPDIF0 58
|
||||
+#define CLK_SPDIF1 59
|
||||
+#define HCLK_SPDIF1 60
|
||||
+#define CLK_SPDIF1_SRC 61
|
||||
+#define CLK_SPDIF1_FRAC 62
|
||||
+#define MCLK_SPDIF1 63
|
||||
+#define ACLK_AV1_ROOT 64
|
||||
+#define ACLK_AV1 65
|
||||
+#define PCLK_AV1_ROOT 66
|
||||
+#define PCLK_AV1 67
|
||||
+#define PCLK_MAILBOX0 68
|
||||
+#define PCLK_MAILBOX1 69
|
||||
+#define PCLK_MAILBOX2 70
|
||||
+#define PCLK_PMU2 71
|
||||
+#define PCLK_PMUCM0_INTMUX 72
|
||||
+#define PCLK_DDRCM0_INTMUX 73
|
||||
+#define PCLK_TOP 74
|
||||
+#define PCLK_PWM1 75
|
||||
+#define CLK_PWM1 76
|
||||
+#define CLK_PWM1_CAPTURE 77
|
||||
+#define PCLK_PWM2 78
|
||||
+#define CLK_PWM2 79
|
||||
+#define CLK_PWM2_CAPTURE 80
|
||||
+#define PCLK_PWM3 81
|
||||
+#define CLK_PWM3 82
|
||||
+#define CLK_PWM3_CAPTURE 83
|
||||
+#define PCLK_BUSTIMER0 84
|
||||
+#define PCLK_BUSTIMER1 85
|
||||
+#define CLK_BUS_TIMER_ROOT 86
|
||||
+#define CLK_BUSTIMER0 87
|
||||
+#define CLK_BUSTIMER1 88
|
||||
+#define CLK_BUSTIMER2 89
|
||||
+#define CLK_BUSTIMER3 90
|
||||
+#define CLK_BUSTIMER4 91
|
||||
+#define CLK_BUSTIMER5 92
|
||||
+#define CLK_BUSTIMER6 93
|
||||
+#define CLK_BUSTIMER7 94
|
||||
+#define CLK_BUSTIMER8 95
|
||||
+#define CLK_BUSTIMER9 96
|
||||
+#define CLK_BUSTIMER10 97
|
||||
+#define CLK_BUSTIMER11 98
|
||||
+#define PCLK_WDT0 99
|
||||
+#define TCLK_WDT0 100
|
||||
+#define PCLK_CAN0 101
|
||||
+#define CLK_CAN0 102
|
||||
+#define PCLK_CAN1 103
|
||||
+#define CLK_CAN1 104
|
||||
+#define PCLK_CAN2 105
|
||||
+#define CLK_CAN2 106
|
||||
+#define ACLK_DECOM 107
|
||||
+#define PCLK_DECOM 108
|
||||
+#define DCLK_DECOM 109
|
||||
+#define ACLK_DMAC0 110
|
||||
+#define ACLK_DMAC1 111
|
||||
+#define ACLK_DMAC2 112
|
||||
+#define ACLK_BUS_ROOT 113
|
||||
+#define ACLK_GIC 114
|
||||
+#define PCLK_GPIO1 115
|
||||
+#define DBCLK_GPIO1 116
|
||||
+#define PCLK_GPIO2 117
|
||||
+#define DBCLK_GPIO2 118
|
||||
+#define PCLK_GPIO3 119
|
||||
+#define DBCLK_GPIO3 120
|
||||
+#define PCLK_GPIO4 121
|
||||
+#define DBCLK_GPIO4 122
|
||||
+#define PCLK_I2C1 123
|
||||
+#define PCLK_I2C2 124
|
||||
+#define PCLK_I2C3 125
|
||||
+#define PCLK_I2C4 126
|
||||
+#define PCLK_I2C5 127
|
||||
+#define PCLK_I2C6 128
|
||||
+#define PCLK_I2C7 129
|
||||
+#define PCLK_I2C8 130
|
||||
+#define CLK_I2C1 131
|
||||
+#define CLK_I2C2 132
|
||||
+#define CLK_I2C3 133
|
||||
+#define CLK_I2C4 134
|
||||
+#define CLK_I2C5 135
|
||||
+#define CLK_I2C6 136
|
||||
+#define CLK_I2C7 137
|
||||
+#define CLK_I2C8 138
|
||||
+#define PCLK_OTPC_NS 139
|
||||
+#define CLK_OTPC_NS 140
|
||||
+#define CLK_OTPC_ARB 141
|
||||
+#define CLK_OTPC_AUTO_RD_G 142
|
||||
+#define CLK_OTP_PHY_G 143
|
||||
+#define PCLK_SARADC 144
|
||||
+#define CLK_SARADC 145
|
||||
+#define PCLK_SPI0 146
|
||||
+#define PCLK_SPI1 147
|
||||
+#define PCLK_SPI2 148
|
||||
+#define PCLK_SPI3 149
|
||||
+#define PCLK_SPI4 150
|
||||
+#define CLK_SPI0 151
|
||||
+#define CLK_SPI1 152
|
||||
+#define CLK_SPI2 153
|
||||
+#define CLK_SPI3 154
|
||||
+#define CLK_SPI4 155
|
||||
+#define ACLK_SPINLOCK 156
|
||||
+#define PCLK_TSADC 157
|
||||
+#define CLK_TSADC 158
|
||||
+#define PCLK_UART1 159
|
||||
+#define PCLK_UART2 160
|
||||
+#define PCLK_UART3 161
|
||||
+#define PCLK_UART4 162
|
||||
+#define PCLK_UART5 163
|
||||
+#define PCLK_UART6 164
|
||||
+#define PCLK_UART7 165
|
||||
+#define PCLK_UART8 166
|
||||
+#define PCLK_UART9 167
|
||||
+#define CLK_UART1_SRC 168
|
||||
+#define CLK_UART1_FRAC 169
|
||||
+#define CLK_UART1 170
|
||||
+#define SCLK_UART1 171
|
||||
+#define CLK_UART2_SRC 172
|
||||
+#define CLK_UART2_FRAC 173
|
||||
+#define CLK_UART2 174
|
||||
+#define SCLK_UART2 175
|
||||
+#define CLK_UART3_SRC 176
|
||||
+#define CLK_UART3_FRAC 177
|
||||
+#define CLK_UART3 178
|
||||
+#define SCLK_UART3 179
|
||||
+#define CLK_UART4_SRC 180
|
||||
+#define CLK_UART4_FRAC 181
|
||||
+#define CLK_UART4 182
|
||||
+#define SCLK_UART4 183
|
||||
+#define CLK_UART5_SRC 184
|
||||
+#define CLK_UART5_FRAC 185
|
||||
+#define CLK_UART5 186
|
||||
+#define SCLK_UART5 187
|
||||
+#define CLK_UART6_SRC 188
|
||||
+#define CLK_UART6_FRAC 189
|
||||
+#define CLK_UART6 190
|
||||
+#define SCLK_UART6 191
|
||||
+#define CLK_UART7_SRC 192
|
||||
+#define CLK_UART7_FRAC 193
|
||||
+#define CLK_UART7 194
|
||||
+#define SCLK_UART7 195
|
||||
+#define CLK_UART8_SRC 196
|
||||
+#define CLK_UART8_FRAC 197
|
||||
+#define CLK_UART8 198
|
||||
+#define SCLK_UART8 199
|
||||
+#define CLK_UART9_SRC 200
|
||||
+#define CLK_UART9_FRAC 201
|
||||
+#define CLK_UART9 202
|
||||
+#define SCLK_UART9 203
|
||||
+#define ACLK_CENTER_ROOT 204
|
||||
+#define ACLK_CENTER_LOW_ROOT 205
|
||||
+#define HCLK_CENTER_ROOT 206
|
||||
+#define PCLK_CENTER_ROOT 207
|
||||
+#define ACLK_DMA2DDR 208
|
||||
+#define ACLK_DDR_SHAREMEM 209
|
||||
+#define ACLK_CENTER_S200_ROOT 210
|
||||
+#define ACLK_CENTER_S400_ROOT 211
|
||||
+#define FCLK_DDR_CM0_CORE 212
|
||||
+#define CLK_DDR_TIMER_ROOT 213
|
||||
+#define CLK_DDR_TIMER0 214
|
||||
+#define CLK_DDR_TIMER1 215
|
||||
+#define TCLK_WDT_DDR 216
|
||||
+#define CLK_DDR_CM0_RTC 217
|
||||
+#define PCLK_WDT 218
|
||||
+#define PCLK_TIMER 219
|
||||
+#define PCLK_DMA2DDR 220
|
||||
+#define PCLK_SHAREMEM 221
|
||||
+#define CLK_50M_SRC 222
|
||||
+#define CLK_100M_SRC 223
|
||||
+#define CLK_150M_SRC 224
|
||||
+#define CLK_200M_SRC 225
|
||||
+#define CLK_250M_SRC 226
|
||||
+#define CLK_300M_SRC 227
|
||||
+#define CLK_350M_SRC 228
|
||||
+#define CLK_400M_SRC 229
|
||||
+#define CLK_450M_SRC 230
|
||||
+#define CLK_500M_SRC 231
|
||||
+#define CLK_600M_SRC 232
|
||||
+#define CLK_650M_SRC 233
|
||||
+#define CLK_700M_SRC 234
|
||||
+#define CLK_800M_SRC 235
|
||||
+#define CLK_1000M_SRC 236
|
||||
+#define CLK_1200M_SRC 237
|
||||
+#define ACLK_TOP_M300_ROOT 238
|
||||
+#define ACLK_TOP_M500_ROOT 239
|
||||
+#define ACLK_TOP_M400_ROOT 240
|
||||
+#define ACLK_TOP_S200_ROOT 241
|
||||
+#define ACLK_TOP_S400_ROOT 242
|
||||
+#define CLK_MIPI_CAMARAOUT_M0 243
|
||||
+#define CLK_MIPI_CAMARAOUT_M1 244
|
||||
+#define CLK_MIPI_CAMARAOUT_M2 245
|
||||
+#define CLK_MIPI_CAMARAOUT_M3 246
|
||||
+#define CLK_MIPI_CAMARAOUT_M4 247
|
||||
+#define MCLK_GMAC0_OUT 248
|
||||
+#define REFCLKO25M_ETH0_OUT 249
|
||||
+#define REFCLKO25M_ETH1_OUT 250
|
||||
+#define CLK_CIFOUT_OUT 251
|
||||
+#define PCLK_MIPI_DCPHY0 252
|
||||
+#define PCLK_MIPI_DCPHY1 253
|
||||
+#define PCLK_CSIPHY0 254
|
||||
+#define PCLK_CSIPHY1 255
|
||||
+#define ACLK_TOP_ROOT 256
|
||||
+#define PCLK_TOP_ROOT 257
|
||||
+#define ACLK_LOW_TOP_ROOT 258
|
||||
+#define PCLK_CRU 259
|
||||
+#define PCLK_GPU_ROOT 260
|
||||
+#define CLK_GPU_SRC 261
|
||||
+#define CLK_GPU 262
|
||||
+#define CLK_GPU_COREGROUP 263
|
||||
+#define CLK_GPU_STACKS 264
|
||||
+#define PCLK_GPU_PVTM 265
|
||||
+#define CLK_GPU_PVTM 266
|
||||
+#define CLK_CORE_GPU_PVTM 267
|
||||
+#define PCLK_GPU_GRF 268
|
||||
+#define ACLK_ISP1_ROOT 269
|
||||
+#define HCLK_ISP1_ROOT 270
|
||||
+#define CLK_ISP1_CORE 271
|
||||
+#define CLK_ISP1_CORE_MARVIN 272
|
||||
+#define CLK_ISP1_CORE_VICAP 273
|
||||
+#define ACLK_ISP1 274
|
||||
+#define HCLK_ISP1 275
|
||||
+#define ACLK_NPU1 276
|
||||
+#define HCLK_NPU1 277
|
||||
+#define ACLK_NPU2 278
|
||||
+#define HCLK_NPU2 279
|
||||
+#define HCLK_NPU_CM0_ROOT 280
|
||||
+#define FCLK_NPU_CM0_CORE 281
|
||||
+#define CLK_NPU_CM0_RTC 282
|
||||
+#define PCLK_NPU_PVTM 283
|
||||
+#define PCLK_NPU_GRF 284
|
||||
+#define CLK_NPU_PVTM 285
|
||||
+#define CLK_CORE_NPU_PVTM 286
|
||||
+#define ACLK_NPU0 287
|
||||
+#define HCLK_NPU0 288
|
||||
+#define HCLK_NPU_ROOT 289
|
||||
+#define CLK_NPU_DSU0 290
|
||||
+#define PCLK_NPU_ROOT 291
|
||||
+#define PCLK_NPU_TIMER 292
|
||||
+#define CLK_NPUTIMER_ROOT 293
|
||||
+#define CLK_NPUTIMER0 294
|
||||
+#define CLK_NPUTIMER1 295
|
||||
+#define PCLK_NPU_WDT 296
|
||||
+#define TCLK_NPU_WDT 297
|
||||
+#define HCLK_EMMC 298
|
||||
+#define ACLK_EMMC 299
|
||||
+#define CCLK_EMMC 300
|
||||
+#define BCLK_EMMC 301
|
||||
+#define TMCLK_EMMC 302
|
||||
+#define SCLK_SFC 303
|
||||
+#define HCLK_SFC 304
|
||||
+#define HCLK_SFC_XIP 305
|
||||
+#define HCLK_NVM_ROOT 306
|
||||
+#define ACLK_NVM_ROOT 307
|
||||
+#define CLK_GMAC0_PTP_REF 308
|
||||
+#define CLK_GMAC1_PTP_REF 309
|
||||
+#define CLK_GMAC_125M 310
|
||||
+#define CLK_GMAC_50M 311
|
||||
+#define ACLK_PHP_GIC_ITS 312
|
||||
+#define ACLK_MMU_PCIE 313
|
||||
+#define ACLK_MMU_PHP 314
|
||||
+#define ACLK_PCIE_4L_DBI 315
|
||||
+#define ACLK_PCIE_2L_DBI 316
|
||||
+#define ACLK_PCIE_1L0_DBI 317
|
||||
+#define ACLK_PCIE_1L1_DBI 318
|
||||
+#define ACLK_PCIE_1L2_DBI 319
|
||||
+#define ACLK_PCIE_4L_MSTR 320
|
||||
+#define ACLK_PCIE_2L_MSTR 321
|
||||
+#define ACLK_PCIE_1L0_MSTR 322
|
||||
+#define ACLK_PCIE_1L1_MSTR 323
|
||||
+#define ACLK_PCIE_1L2_MSTR 324
|
||||
+#define ACLK_PCIE_4L_SLV 325
|
||||
+#define ACLK_PCIE_2L_SLV 326
|
||||
+#define ACLK_PCIE_1L0_SLV 327
|
||||
+#define ACLK_PCIE_1L1_SLV 328
|
||||
+#define ACLK_PCIE_1L2_SLV 329
|
||||
+#define PCLK_PCIE_4L 330
|
||||
+#define PCLK_PCIE_2L 331
|
||||
+#define PCLK_PCIE_1L0 332
|
||||
+#define PCLK_PCIE_1L1 333
|
||||
+#define PCLK_PCIE_1L2 334
|
||||
+#define CLK_PCIE_AUX0 335
|
||||
+#define CLK_PCIE_AUX1 336
|
||||
+#define CLK_PCIE_AUX2 337
|
||||
+#define CLK_PCIE_AUX3 338
|
||||
+#define CLK_PCIE_AUX4 339
|
||||
+#define CLK_PIPEPHY0_REF 340
|
||||
+#define CLK_PIPEPHY1_REF 341
|
||||
+#define CLK_PIPEPHY2_REF 342
|
||||
+#define PCLK_PHP_ROOT 343
|
||||
+#define PCLK_GMAC0 344
|
||||
+#define PCLK_GMAC1 345
|
||||
+#define ACLK_PCIE_ROOT 346
|
||||
+#define ACLK_PHP_ROOT 347
|
||||
+#define ACLK_PCIE_BRIDGE 348
|
||||
+#define ACLK_GMAC0 349
|
||||
+#define ACLK_GMAC1 350
|
||||
+#define CLK_PMALIVE0 351
|
||||
+#define CLK_PMALIVE1 352
|
||||
+#define CLK_PMALIVE2 353
|
||||
+#define ACLK_SATA0 354
|
||||
+#define ACLK_SATA1 355
|
||||
+#define ACLK_SATA2 356
|
||||
+#define CLK_RXOOB0 357
|
||||
+#define CLK_RXOOB1 358
|
||||
+#define CLK_RXOOB2 359
|
||||
+#define ACLK_USB3OTG2 360
|
||||
+#define SUSPEND_CLK_USB3OTG2 361
|
||||
+#define REF_CLK_USB3OTG2 362
|
||||
+#define CLK_UTMI_OTG2 363
|
||||
+#define CLK_PIPEPHY0_PIPE_G 364
|
||||
+#define CLK_PIPEPHY1_PIPE_G 365
|
||||
+#define CLK_PIPEPHY2_PIPE_G 366
|
||||
+#define CLK_PIPEPHY0_PIPE_ASIC_G 367
|
||||
+#define CLK_PIPEPHY1_PIPE_ASIC_G 368
|
||||
+#define CLK_PIPEPHY2_PIPE_ASIC_G 369
|
||||
+#define CLK_PIPEPHY2_PIPE_U3_G 370
|
||||
+#define CLK_PCIE1L2_PIPE 371
|
||||
+#define CLK_PCIE4L_PIPE 372
|
||||
+#define CLK_PCIE2L_PIPE 373
|
||||
+#define PCLK_PCIE_COMBO_PIPE_PHY0 374
|
||||
+#define PCLK_PCIE_COMBO_PIPE_PHY1 375
|
||||
+#define PCLK_PCIE_COMBO_PIPE_PHY2 376
|
||||
+#define PCLK_PCIE_COMBO_PIPE_PHY 377
|
||||
+#define HCLK_RGA3_1 378
|
||||
+#define ACLK_RGA3_1 379
|
||||
+#define CLK_RGA3_1_CORE 380
|
||||
+#define ACLK_RGA3_ROOT 381
|
||||
+#define HCLK_RGA3_ROOT 382
|
||||
+#define ACLK_RKVDEC_CCU 383
|
||||
+#define HCLK_RKVDEC0 384
|
||||
+#define ACLK_RKVDEC0 385
|
||||
+#define CLK_RKVDEC0_CA 386
|
||||
+#define CLK_RKVDEC0_HEVC_CA 387
|
||||
+#define CLK_RKVDEC0_CORE 388
|
||||
+#define HCLK_RKVDEC1 389
|
||||
+#define ACLK_RKVDEC1 390
|
||||
+#define CLK_RKVDEC1_CA 391
|
||||
+#define CLK_RKVDEC1_HEVC_CA 392
|
||||
+#define CLK_RKVDEC1_CORE 393
|
||||
+#define HCLK_SDIO 394
|
||||
+#define CCLK_SRC_SDIO 395
|
||||
+#define ACLK_USB_ROOT 396
|
||||
+#define HCLK_USB_ROOT 397
|
||||
+#define HCLK_HOST0 398
|
||||
+#define HCLK_HOST_ARB0 399
|
||||
+#define HCLK_HOST1 400
|
||||
+#define HCLK_HOST_ARB1 401
|
||||
+#define ACLK_USB3OTG0 402
|
||||
+#define SUSPEND_CLK_USB3OTG0 403
|
||||
+#define REF_CLK_USB3OTG0 404
|
||||
+#define ACLK_USB3OTG1 405
|
||||
+#define SUSPEND_CLK_USB3OTG1 406
|
||||
+#define REF_CLK_USB3OTG1 407
|
||||
+#define UTMI_OHCI_CLK48_HOST0 408
|
||||
+#define UTMI_OHCI_CLK48_HOST1 409
|
||||
+#define HCLK_IEP2P0 410
|
||||
+#define ACLK_IEP2P0 411
|
||||
+#define CLK_IEP2P0_CORE 412
|
||||
+#define ACLK_JPEG_ENCODER0 413
|
||||
+#define HCLK_JPEG_ENCODER0 414
|
||||
+#define ACLK_JPEG_ENCODER1 415
|
||||
+#define HCLK_JPEG_ENCODER1 416
|
||||
+#define ACLK_JPEG_ENCODER2 417
|
||||
+#define HCLK_JPEG_ENCODER2 418
|
||||
+#define ACLK_JPEG_ENCODER3 419
|
||||
+#define HCLK_JPEG_ENCODER3 420
|
||||
+#define ACLK_JPEG_DECODER 421
|
||||
+#define HCLK_JPEG_DECODER 422
|
||||
+#define HCLK_RGA2 423
|
||||
+#define ACLK_RGA2 424
|
||||
+#define CLK_RGA2_CORE 425
|
||||
+#define HCLK_RGA3_0 426
|
||||
+#define ACLK_RGA3_0 427
|
||||
+#define CLK_RGA3_0_CORE 428
|
||||
+#define ACLK_VDPU_ROOT 429
|
||||
+#define ACLK_VDPU_LOW_ROOT 430
|
||||
+#define HCLK_VDPU_ROOT 431
|
||||
+#define ACLK_JPEG_DECODER_ROOT 432
|
||||
+#define ACLK_VPU 433
|
||||
+#define HCLK_VPU 434
|
||||
+#define HCLK_RKVENC0_ROOT 435
|
||||
+#define ACLK_RKVENC0_ROOT 436
|
||||
+#define HCLK_RKVENC0 437
|
||||
+#define ACLK_RKVENC0 438
|
||||
+#define CLK_RKVENC0_CORE 439
|
||||
+#define HCLK_RKVENC1_ROOT 440
|
||||
+#define ACLK_RKVENC1_ROOT 441
|
||||
+#define HCLK_RKVENC1 442
|
||||
+#define ACLK_RKVENC1 443
|
||||
+#define CLK_RKVENC1_CORE 444
|
||||
+#define ICLK_CSIHOST01 445
|
||||
+#define ICLK_CSIHOST0 446
|
||||
+#define ICLK_CSIHOST1 447
|
||||
+#define PCLK_CSI_HOST_0 448
|
||||
+#define PCLK_CSI_HOST_1 449
|
||||
+#define PCLK_CSI_HOST_2 450
|
||||
+#define PCLK_CSI_HOST_3 451
|
||||
+#define PCLK_CSI_HOST_4 452
|
||||
+#define PCLK_CSI_HOST_5 453
|
||||
+#define ACLK_FISHEYE0 454
|
||||
+#define HCLK_FISHEYE0 455
|
||||
+#define CLK_FISHEYE0_CORE 456
|
||||
+#define ACLK_FISHEYE1 457
|
||||
+#define HCLK_FISHEYE1 458
|
||||
+#define CLK_FISHEYE1_CORE 459
|
||||
+#define CLK_ISP0_CORE 460
|
||||
+#define CLK_ISP0_CORE_MARVIN 461
|
||||
+#define CLK_ISP0_CORE_VICAP 462
|
||||
+#define ACLK_ISP0 463
|
||||
+#define HCLK_ISP0 464
|
||||
+#define ACLK_VI_ROOT 465
|
||||
+#define HCLK_VI_ROOT 466
|
||||
+#define PCLK_VI_ROOT 467
|
||||
+#define DCLK_VICAP 468
|
||||
+#define ACLK_VICAP 469
|
||||
+#define HCLK_VICAP 470
|
||||
+#define PCLK_DP0 471
|
||||
+#define PCLK_DP1 472
|
||||
+#define PCLK_S_DP0 473
|
||||
+#define PCLK_S_DP1 474
|
||||
+#define CLK_DP0 475
|
||||
+#define CLK_DP1 476
|
||||
+#define HCLK_HDCP_KEY0 477
|
||||
+#define ACLK_HDCP0 478
|
||||
+#define HCLK_HDCP0 479
|
||||
+#define PCLK_HDCP0 480
|
||||
+#define HCLK_I2S4_8CH 481
|
||||
+#define ACLK_TRNG0 482
|
||||
+#define PCLK_TRNG0 483
|
||||
+#define ACLK_VO0_ROOT 484
|
||||
+#define HCLK_VO0_ROOT 485
|
||||
+#define HCLK_VO0_S_ROOT 486
|
||||
+#define PCLK_VO0_ROOT 487
|
||||
+#define PCLK_VO0_S_ROOT 488
|
||||
+#define PCLK_VO0GRF 489
|
||||
+#define CLK_I2S4_8CH_TX_SRC 490
|
||||
+#define CLK_I2S4_8CH_TX_FRAC 491
|
||||
+#define MCLK_I2S4_8CH_TX 492
|
||||
+#define CLK_I2S4_8CH_TX 493
|
||||
+#define HCLK_I2S8_8CH 494
|
||||
+#define CLK_I2S8_8CH_TX_SRC 495
|
||||
+#define CLK_I2S8_8CH_TX_FRAC 496
|
||||
+#define MCLK_I2S8_8CH_TX 497
|
||||
+#define CLK_I2S8_8CH_TX 498
|
||||
+#define HCLK_SPDIF2_DP0 499
|
||||
+#define CLK_SPDIF2_DP0_SRC 500
|
||||
+#define CLK_SPDIF2_DP0_FRAC 501
|
||||
+#define MCLK_SPDIF2_DP0 502
|
||||
+#define CLK_SPDIF2_DP0 503
|
||||
+#define MCLK_SPDIF2 504
|
||||
+#define HCLK_SPDIF5_DP1 505
|
||||
+#define CLK_SPDIF5_DP1_SRC 506
|
||||
+#define CLK_SPDIF5_DP1_FRAC 507
|
||||
+#define MCLK_SPDIF5_DP1 508
|
||||
+#define CLK_SPDIF5_DP1 509
|
||||
+#define MCLK_SPDIF5 510
|
||||
+#define PCLK_EDP0 511
|
||||
+#define CLK_EDP0_24M 512
|
||||
+#define CLK_EDP0_200M 513
|
||||
+#define PCLK_EDP1 514
|
||||
+#define CLK_EDP1_24M 515
|
||||
+#define CLK_EDP1_200M 516
|
||||
+#define HCLK_HDCP_KEY1 517
|
||||
+#define ACLK_HDCP1 518
|
||||
+#define HCLK_HDCP1 519
|
||||
+#define PCLK_HDCP1 520
|
||||
+#define ACLK_HDMIRX 521
|
||||
+#define PCLK_HDMIRX 522
|
||||
+#define CLK_HDMIRX_REF 523
|
||||
+#define CLK_HDMIRX_AUD_SRC 524
|
||||
+#define CLK_HDMIRX_AUD_FRAC 525
|
||||
+#define CLK_HDMIRX_AUD 526
|
||||
+#define CLK_HDMIRX_AUD_P_MUX 527
|
||||
+#define PCLK_HDMITX0 528
|
||||
+#define CLK_HDMITX0_EARC 529
|
||||
+#define CLK_HDMITX0_REF 530
|
||||
+#define PCLK_HDMITX1 531
|
||||
+#define CLK_HDMITX1_EARC 532
|
||||
+#define CLK_HDMITX1_REF 533
|
||||
+#define CLK_HDMITRX_REFSRC 534
|
||||
+#define ACLK_TRNG1 535
|
||||
+#define PCLK_TRNG1 536
|
||||
+#define ACLK_HDCP1_ROOT 537
|
||||
+#define ACLK_HDMIRX_ROOT 538
|
||||
+#define HCLK_VO1_ROOT 539
|
||||
+#define HCLK_VO1_S_ROOT 540
|
||||
+#define PCLK_VO1_ROOT 541
|
||||
+#define PCLK_VO1_S_ROOT 542
|
||||
+#define PCLK_S_EDP0 543
|
||||
+#define PCLK_S_EDP1 544
|
||||
+#define PCLK_S_HDMIRX 545
|
||||
+#define HCLK_I2S10_8CH 546
|
||||
+#define CLK_I2S10_8CH_RX_SRC 547
|
||||
+#define CLK_I2S10_8CH_RX_FRAC 548
|
||||
+#define CLK_I2S10_8CH_RX 549
|
||||
+#define MCLK_I2S10_8CH_RX 550
|
||||
+#define HCLK_I2S7_8CH 551
|
||||
+#define CLK_I2S7_8CH_RX_SRC 552
|
||||
+#define CLK_I2S7_8CH_RX_FRAC 553
|
||||
+#define CLK_I2S7_8CH_RX 554
|
||||
+#define MCLK_I2S7_8CH_RX 555
|
||||
+#define HCLK_I2S9_8CH 556
|
||||
+#define CLK_I2S9_8CH_RX_SRC 557
|
||||
+#define CLK_I2S9_8CH_RX_FRAC 558
|
||||
+#define CLK_I2S9_8CH_RX 559
|
||||
+#define MCLK_I2S9_8CH_RX 560
|
||||
+#define CLK_I2S5_8CH_TX_SRC 561
|
||||
+#define CLK_I2S5_8CH_TX_FRAC 562
|
||||
+#define CLK_I2S5_8CH_TX 563
|
||||
+#define MCLK_I2S5_8CH_TX 564
|
||||
+#define HCLK_I2S5_8CH 565
|
||||
+#define CLK_I2S6_8CH_TX_SRC 566
|
||||
+#define CLK_I2S6_8CH_TX_FRAC 567
|
||||
+#define CLK_I2S6_8CH_TX 568
|
||||
+#define MCLK_I2S6_8CH_TX 569
|
||||
+#define CLK_I2S6_8CH_RX_SRC 570
|
||||
+#define CLK_I2S6_8CH_RX_FRAC 571
|
||||
+#define CLK_I2S6_8CH_RX 572
|
||||
+#define MCLK_I2S6_8CH_RX 573
|
||||
+#define I2S6_8CH_MCLKOUT 574
|
||||
+#define HCLK_I2S6_8CH 575
|
||||
+#define HCLK_SPDIF3 576
|
||||
+#define CLK_SPDIF3_SRC 577
|
||||
+#define CLK_SPDIF3_FRAC 578
|
||||
+#define CLK_SPDIF3 579
|
||||
+#define MCLK_SPDIF3 580
|
||||
+#define HCLK_SPDIF4 581
|
||||
+#define CLK_SPDIF4_SRC 582
|
||||
+#define CLK_SPDIF4_FRAC 583
|
||||
+#define CLK_SPDIF4 584
|
||||
+#define MCLK_SPDIF4 585
|
||||
+#define HCLK_SPDIFRX0 586
|
||||
+#define MCLK_SPDIFRX0 587
|
||||
+#define HCLK_SPDIFRX1 588
|
||||
+#define MCLK_SPDIFRX1 589
|
||||
+#define HCLK_SPDIFRX2 590
|
||||
+#define MCLK_SPDIFRX2 591
|
||||
+#define ACLK_VO1USB_TOP_ROOT 592
|
||||
+#define HCLK_VO1USB_TOP_ROOT 593
|
||||
+#define CLK_HDMIHDP0 594
|
||||
+#define CLK_HDMIHDP1 595
|
||||
+#define PCLK_HDPTX0 596
|
||||
+#define PCLK_HDPTX1 597
|
||||
+#define PCLK_USBDPPHY0 598
|
||||
+#define PCLK_USBDPPHY1 599
|
||||
+#define ACLK_VOP_ROOT 600
|
||||
+#define ACLK_VOP_LOW_ROOT 601
|
||||
+#define HCLK_VOP_ROOT 602
|
||||
+#define PCLK_VOP_ROOT 603
|
||||
+#define HCLK_VOP 604
|
||||
+#define ACLK_VOP 605
|
||||
+#define DCLK_VOP0_SRC 606
|
||||
+#define DCLK_VOP1_SRC 607
|
||||
+#define DCLK_VOP2_SRC 608
|
||||
+#define DCLK_VOP0 609
|
||||
+#define DCLK_VOP1 610
|
||||
+#define DCLK_VOP2 611
|
||||
+#define DCLK_VOP3 612
|
||||
+#define PCLK_DSIHOST0 613
|
||||
+#define PCLK_DSIHOST1 614
|
||||
+#define CLK_DSIHOST0 615
|
||||
+#define CLK_DSIHOST1 616
|
||||
+#define CLK_VOP_PMU 617
|
||||
+#define ACLK_VOP_DOBY 618
|
||||
+#define ACLK_VOP_SUB_SRC 619
|
||||
+#define CLK_USBDP_PHY0_IMMORTAL 620
|
||||
+#define CLK_USBDP_PHY1_IMMORTAL 621
|
||||
+#define CLK_PMU0 622
|
||||
+#define PCLK_PMU0 623
|
||||
+#define PCLK_PMU0IOC 624
|
||||
+#define PCLK_GPIO0 625
|
||||
+#define DBCLK_GPIO0 626
|
||||
+#define PCLK_I2C0 627
|
||||
+#define CLK_I2C0 628
|
||||
+#define HCLK_I2S1_8CH 629
|
||||
+#define CLK_I2S1_8CH_TX_SRC 630
|
||||
+#define CLK_I2S1_8CH_TX_FRAC 631
|
||||
+#define CLK_I2S1_8CH_TX 632
|
||||
+#define MCLK_I2S1_8CH_TX 633
|
||||
+#define CLK_I2S1_8CH_RX_SRC 634
|
||||
+#define CLK_I2S1_8CH_RX_FRAC 635
|
||||
+#define CLK_I2S1_8CH_RX 636
|
||||
+#define MCLK_I2S1_8CH_RX 637
|
||||
+#define I2S1_8CH_MCLKOUT 638
|
||||
+#define CLK_PMU1_50M_SRC 639
|
||||
+#define CLK_PMU1_100M_SRC 640
|
||||
+#define CLK_PMU1_200M_SRC 641
|
||||
+#define CLK_PMU1_300M_SRC 642
|
||||
+#define CLK_PMU1_400M_SRC 643
|
||||
+#define HCLK_PMU1_ROOT 644
|
||||
+#define PCLK_PMU1_ROOT 645
|
||||
+#define PCLK_PMU0_ROOT 646
|
||||
+#define HCLK_PMU_CM0_ROOT 647
|
||||
+#define PCLK_PMU1 648
|
||||
+#define CLK_DDR_FAIL_SAFE 649
|
||||
+#define CLK_PMU1 650
|
||||
+#define HCLK_PDM0 651
|
||||
+#define MCLK_PDM0 652
|
||||
+#define HCLK_VAD 653
|
||||
+#define FCLK_PMU_CM0_CORE 654
|
||||
+#define CLK_PMU_CM0_RTC 655
|
||||
+#define PCLK_PMU1_IOC 656
|
||||
+#define PCLK_PMU1PWM 657
|
||||
+#define CLK_PMU1PWM 658
|
||||
+#define CLK_PMU1PWM_CAPTURE 659
|
||||
+#define PCLK_PMU1TIMER 660
|
||||
+#define CLK_PMU1TIMER_ROOT 661
|
||||
+#define CLK_PMU1TIMER0 662
|
||||
+#define CLK_PMU1TIMER1 663
|
||||
+#define CLK_UART0_SRC 664
|
||||
+#define CLK_UART0_FRAC 665
|
||||
+#define CLK_UART0 666
|
||||
+#define SCLK_UART0 667
|
||||
+#define PCLK_UART0 668
|
||||
+#define PCLK_PMU1WDT 669
|
||||
+#define TCLK_PMU1WDT 670
|
||||
+#define CLK_CR_PARA 671
|
||||
+#define CLK_USB2PHY_HDPTXRXPHY_REF 672
|
||||
+#define CLK_USBDPPHY_MIPIDCPPHY_REF 673
|
||||
+#define CLK_REF_PIPE_PHY0_OSC_SRC 674
|
||||
+#define CLK_REF_PIPE_PHY1_OSC_SRC 675
|
||||
+#define CLK_REF_PIPE_PHY2_OSC_SRC 676
|
||||
+#define CLK_REF_PIPE_PHY0_PLL_SRC 677
|
||||
+#define CLK_REF_PIPE_PHY1_PLL_SRC 678
|
||||
+#define CLK_REF_PIPE_PHY2_PLL_SRC 679
|
||||
+#define CLK_REF_PIPE_PHY0 680
|
||||
+#define CLK_REF_PIPE_PHY1 681
|
||||
+#define CLK_REF_PIPE_PHY2 682
|
||||
+#define SCLK_SDIO_DRV 683
|
||||
+#define SCLK_SDIO_SAMPLE 684
|
||||
+#define SCLK_SDMMC_DRV 685
|
||||
+#define SCLK_SDMMC_SAMPLE 686
|
||||
+#define CLK_PCIE1L0_PIPE 687
|
||||
+#define CLK_PCIE1L1_PIPE 688
|
||||
+#define CLK_BIGCORE0_PVTM 689
|
||||
+#define CLK_CORE_BIGCORE0_PVTM 690
|
||||
+#define CLK_BIGCORE1_PVTM 691
|
||||
+#define CLK_CORE_BIGCORE1_PVTM 692
|
||||
+#define CLK_LITCORE_PVTM 693
|
||||
+#define CLK_CORE_LITCORE_PVTM 694
|
||||
+#define CLK_AUX16M_0 695
|
||||
+#define CLK_AUX16M_1 696
|
||||
+#define CLK_PHY0_REF_ALT_P 697
|
||||
+#define CLK_PHY0_REF_ALT_M 698
|
||||
+#define CLK_PHY1_REF_ALT_P 699
|
||||
+#define CLK_PHY1_REF_ALT_M 700
|
||||
+#define ACLK_ISP1_PRE 701
|
||||
+#define HCLK_ISP1_PRE 702
|
||||
+#define HCLK_NVM 703
|
||||
+#define ACLK_USB 704
|
||||
+#define HCLK_USB 705
|
||||
+#define ACLK_JPEG_DECODER_PRE 706
|
||||
+#define ACLK_VDPU_LOW_PRE 707
|
||||
+#define ACLK_RKVENC1_PRE 708
|
||||
+#define HCLK_RKVENC1_PRE 709
|
||||
+#define HCLK_RKVDEC0_PRE 710
|
||||
+#define ACLK_RKVDEC0_PRE 711
|
||||
+#define HCLK_RKVDEC1_PRE 712
|
||||
+#define ACLK_RKVDEC1_PRE 713
|
||||
+#define ACLK_HDCP0_PRE 714
|
||||
+#define HCLK_VO0 715
|
||||
+#define ACLK_HDCP1_PRE 716
|
||||
+#define HCLK_VO1 717
|
||||
+#define ACLK_AV1_PRE 718
|
||||
+#define PCLK_AV1_PRE 719
|
||||
+#define HCLK_SDIO_PRE 720
|
||||
+
|
||||
+#define CLK_NR_CLKS (HCLK_SDIO_PRE + 1)
|
||||
+
|
||||
+/* 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
|
||||
+
|
||||
+#endif
|
||||
@@ -1,781 +0,0 @@
|
||||
From 0a8eb7dae617a9537b9a64a6b14e63415c279eb5 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Tue, 18 Oct 2022 17:14:00 +0200
|
||||
Subject: [PATCH] dt-bindings: reset: add rk3588 reset definitions
|
||||
|
||||
Add reset ID defines for rk3588.
|
||||
|
||||
Compared to the downstream bindings and previous rockchip
|
||||
generations this uses continous gapless reset IDs starting
|
||||
at 0 instead of register offsets as IDs. Thus all numbers
|
||||
are different between upstream and downstream, but I kept
|
||||
the names exactly the same.
|
||||
|
||||
Co-Developed-by: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
Acked-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20221018151407.63395-3-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
.../dt-bindings/reset/rockchip,rk3588-cru.h | 754 ++++++++++++++++++
|
||||
1 file changed, 754 insertions(+)
|
||||
create mode 100644 include/dt-bindings/reset/rockchip,rk3588-cru.h
|
||||
|
||||
--- /dev/null
|
||||
+++ b/include/dt-bindings/reset/rockchip,rk3588-cru.h
|
||||
@@ -0,0 +1,754 @@
|
||||
+/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
|
||||
+/*
|
||||
+ * Copyright (c) 2021 Rockchip Electronics Co. Ltd.
|
||||
+ * Copyright (c) 2022 Collabora Ltd.
|
||||
+ *
|
||||
+ * Author: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
+ * Author: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _DT_BINDINGS_RESET_ROCKCHIP_RK3588_H
|
||||
+#define _DT_BINDINGS_RESET_ROCKCHIP_RK3588_H
|
||||
+
|
||||
+#define SRST_A_TOP_BIU 0
|
||||
+#define SRST_P_TOP_BIU 1
|
||||
+#define SRST_P_CSIPHY0 2
|
||||
+#define SRST_CSIPHY0 3
|
||||
+#define SRST_P_CSIPHY1 4
|
||||
+#define SRST_CSIPHY1 5
|
||||
+#define SRST_A_TOP_M500_BIU 6
|
||||
+
|
||||
+#define SRST_A_TOP_M400_BIU 7
|
||||
+#define SRST_A_TOP_S200_BIU 8
|
||||
+#define SRST_A_TOP_S400_BIU 9
|
||||
+#define SRST_A_TOP_M300_BIU 10
|
||||
+#define SRST_USBDP_COMBO_PHY0_INIT 11
|
||||
+#define SRST_USBDP_COMBO_PHY0_CMN 12
|
||||
+#define SRST_USBDP_COMBO_PHY0_LANE 13
|
||||
+#define SRST_USBDP_COMBO_PHY0_PCS 14
|
||||
+#define SRST_USBDP_COMBO_PHY1_INIT 15
|
||||
+
|
||||
+#define SRST_USBDP_COMBO_PHY1_CMN 16
|
||||
+#define SRST_USBDP_COMBO_PHY1_LANE 17
|
||||
+#define SRST_USBDP_COMBO_PHY1_PCS 18
|
||||
+#define SRST_DCPHY0 19
|
||||
+#define SRST_P_MIPI_DCPHY0 20
|
||||
+#define SRST_P_MIPI_DCPHY0_GRF 21
|
||||
+
|
||||
+#define SRST_DCPHY1 22
|
||||
+#define SRST_P_MIPI_DCPHY1 23
|
||||
+#define SRST_P_MIPI_DCPHY1_GRF 24
|
||||
+#define SRST_P_APB2ASB_SLV_CDPHY 25
|
||||
+#define SRST_P_APB2ASB_SLV_CSIPHY 26
|
||||
+#define SRST_P_APB2ASB_SLV_VCCIO3_5 27
|
||||
+#define SRST_P_APB2ASB_SLV_VCCIO6 28
|
||||
+#define SRST_P_APB2ASB_SLV_EMMCIO 29
|
||||
+#define SRST_P_APB2ASB_SLV_IOC_TOP 30
|
||||
+#define SRST_P_APB2ASB_SLV_IOC_RIGHT 31
|
||||
+
|
||||
+#define SRST_P_CRU 32
|
||||
+#define SRST_A_CHANNEL_SECURE2VO1USB 33
|
||||
+#define SRST_A_CHANNEL_SECURE2CENTER 34
|
||||
+#define SRST_H_CHANNEL_SECURE2VO1USB 35
|
||||
+#define SRST_H_CHANNEL_SECURE2CENTER 36
|
||||
+
|
||||
+#define SRST_P_CHANNEL_SECURE2VO1USB 37
|
||||
+#define SRST_P_CHANNEL_SECURE2CENTER 38
|
||||
+
|
||||
+#define SRST_H_AUDIO_BIU 39
|
||||
+#define SRST_P_AUDIO_BIU 40
|
||||
+#define SRST_H_I2S0_8CH 41
|
||||
+#define SRST_M_I2S0_8CH_TX 42
|
||||
+#define SRST_M_I2S0_8CH_RX 43
|
||||
+#define SRST_P_ACDCDIG 44
|
||||
+#define SRST_H_I2S2_2CH 45
|
||||
+#define SRST_H_I2S3_2CH 46
|
||||
+
|
||||
+#define SRST_M_I2S2_2CH 47
|
||||
+#define SRST_M_I2S3_2CH 48
|
||||
+#define SRST_DAC_ACDCDIG 49
|
||||
+#define SRST_H_SPDIF0 50
|
||||
+
|
||||
+#define SRST_M_SPDIF0 51
|
||||
+#define SRST_H_SPDIF1 52
|
||||
+#define SRST_M_SPDIF1 53
|
||||
+#define SRST_H_PDM1 54
|
||||
+#define SRST_PDM1 55
|
||||
+
|
||||
+#define SRST_A_BUS_BIU 56
|
||||
+#define SRST_P_BUS_BIU 57
|
||||
+#define SRST_A_GIC 58
|
||||
+#define SRST_A_GIC_DBG 59
|
||||
+#define SRST_A_DMAC0 60
|
||||
+#define SRST_A_DMAC1 61
|
||||
+#define SRST_A_DMAC2 62
|
||||
+#define SRST_P_I2C1 63
|
||||
+#define SRST_P_I2C2 64
|
||||
+#define SRST_P_I2C3 65
|
||||
+#define SRST_P_I2C4 66
|
||||
+#define SRST_P_I2C5 67
|
||||
+#define SRST_P_I2C6 68
|
||||
+#define SRST_P_I2C7 69
|
||||
+#define SRST_P_I2C8 70
|
||||
+
|
||||
+#define SRST_I2C1 71
|
||||
+#define SRST_I2C2 72
|
||||
+#define SRST_I2C3 73
|
||||
+#define SRST_I2C4 74
|
||||
+#define SRST_I2C5 75
|
||||
+#define SRST_I2C6 76
|
||||
+#define SRST_I2C7 77
|
||||
+#define SRST_I2C8 78
|
||||
+#define SRST_P_CAN0 79
|
||||
+#define SRST_CAN0 80
|
||||
+#define SRST_P_CAN1 81
|
||||
+#define SRST_CAN1 82
|
||||
+#define SRST_P_CAN2 83
|
||||
+#define SRST_CAN2 84
|
||||
+#define SRST_P_SARADC 85
|
||||
+
|
||||
+#define SRST_P_TSADC 86
|
||||
+#define SRST_TSADC 87
|
||||
+#define SRST_P_UART1 88
|
||||
+#define SRST_P_UART2 89
|
||||
+#define SRST_P_UART3 90
|
||||
+#define SRST_P_UART4 91
|
||||
+#define SRST_P_UART5 92
|
||||
+#define SRST_P_UART6 93
|
||||
+#define SRST_P_UART7 94
|
||||
+#define SRST_P_UART8 95
|
||||
+#define SRST_P_UART9 96
|
||||
+#define SRST_S_UART1 97
|
||||
+
|
||||
+#define SRST_S_UART2 98
|
||||
+#define SRST_S_UART3 99
|
||||
+#define SRST_S_UART4 100
|
||||
+#define SRST_S_UART5 101
|
||||
+#define SRST_S_UART6 102
|
||||
+#define SRST_S_UART7 103
|
||||
+
|
||||
+#define SRST_S_UART8 104
|
||||
+#define SRST_S_UART9 105
|
||||
+#define SRST_P_SPI0 106
|
||||
+#define SRST_P_SPI1 107
|
||||
+#define SRST_P_SPI2 108
|
||||
+#define SRST_P_SPI3 109
|
||||
+#define SRST_P_SPI4 110
|
||||
+#define SRST_SPI0 111
|
||||
+#define SRST_SPI1 112
|
||||
+#define SRST_SPI2 113
|
||||
+#define SRST_SPI3 114
|
||||
+#define SRST_SPI4 115
|
||||
+
|
||||
+#define SRST_P_WDT0 116
|
||||
+#define SRST_T_WDT0 117
|
||||
+#define SRST_P_SYS_GRF 118
|
||||
+#define SRST_P_PWM1 119
|
||||
+#define SRST_PWM1 120
|
||||
+#define SRST_P_PWM2 121
|
||||
+#define SRST_PWM2 122
|
||||
+#define SRST_P_PWM3 123
|
||||
+#define SRST_PWM3 124
|
||||
+#define SRST_P_BUSTIMER0 125
|
||||
+#define SRST_P_BUSTIMER1 126
|
||||
+#define SRST_BUSTIMER0 127
|
||||
+
|
||||
+#define SRST_BUSTIMER1 128
|
||||
+#define SRST_BUSTIMER2 129
|
||||
+#define SRST_BUSTIMER3 130
|
||||
+#define SRST_BUSTIMER4 131
|
||||
+#define SRST_BUSTIMER5 132
|
||||
+#define SRST_BUSTIMER6 133
|
||||
+#define SRST_BUSTIMER7 134
|
||||
+#define SRST_BUSTIMER8 135
|
||||
+#define SRST_BUSTIMER9 136
|
||||
+#define SRST_BUSTIMER10 137
|
||||
+#define SRST_BUSTIMER11 138
|
||||
+#define SRST_P_MAILBOX0 139
|
||||
+#define SRST_P_MAILBOX1 140
|
||||
+#define SRST_P_MAILBOX2 141
|
||||
+#define SRST_P_GPIO1 142
|
||||
+#define SRST_GPIO1 143
|
||||
+
|
||||
+#define SRST_P_GPIO2 144
|
||||
+#define SRST_GPIO2 145
|
||||
+#define SRST_P_GPIO3 146
|
||||
+#define SRST_GPIO3 147
|
||||
+#define SRST_P_GPIO4 148
|
||||
+#define SRST_GPIO4 149
|
||||
+#define SRST_A_DECOM 150
|
||||
+#define SRST_P_DECOM 151
|
||||
+#define SRST_D_DECOM 152
|
||||
+#define SRST_P_TOP 153
|
||||
+#define SRST_A_GICADB_GIC2CORE_BUS 154
|
||||
+#define SRST_P_DFT2APB 155
|
||||
+#define SRST_P_APB2ASB_MST_TOP 156
|
||||
+#define SRST_P_APB2ASB_MST_CDPHY 157
|
||||
+#define SRST_P_APB2ASB_MST_BOT_RIGHT 158
|
||||
+
|
||||
+#define SRST_P_APB2ASB_MST_IOC_TOP 159
|
||||
+#define SRST_P_APB2ASB_MST_IOC_RIGHT 160
|
||||
+#define SRST_P_APB2ASB_MST_CSIPHY 161
|
||||
+#define SRST_P_APB2ASB_MST_VCCIO3_5 162
|
||||
+#define SRST_P_APB2ASB_MST_VCCIO6 163
|
||||
+#define SRST_P_APB2ASB_MST_EMMCIO 164
|
||||
+#define SRST_A_SPINLOCK 165
|
||||
+#define SRST_P_OTPC_NS 166
|
||||
+#define SRST_OTPC_NS 167
|
||||
+#define SRST_OTPC_ARB 168
|
||||
+
|
||||
+#define SRST_P_BUSIOC 169
|
||||
+#define SRST_P_PMUCM0_INTMUX 170
|
||||
+#define SRST_P_DDRCM0_INTMUX 171
|
||||
+
|
||||
+#define SRST_P_DDR_DFICTL_CH0 172
|
||||
+#define SRST_P_DDR_MON_CH0 173
|
||||
+#define SRST_P_DDR_STANDBY_CH0 174
|
||||
+#define SRST_P_DDR_UPCTL_CH0 175
|
||||
+#define SRST_TM_DDR_MON_CH0 176
|
||||
+#define SRST_P_DDR_GRF_CH01 177
|
||||
+#define SRST_DFI_CH0 178
|
||||
+#define SRST_SBR_CH0 179
|
||||
+#define SRST_DDR_UPCTL_CH0 180
|
||||
+#define SRST_DDR_DFICTL_CH0 181
|
||||
+#define SRST_DDR_MON_CH0 182
|
||||
+#define SRST_DDR_STANDBY_CH0 183
|
||||
+#define SRST_A_DDR_UPCTL_CH0 184
|
||||
+#define SRST_P_DDR_DFICTL_CH1 185
|
||||
+#define SRST_P_DDR_MON_CH1 186
|
||||
+#define SRST_P_DDR_STANDBY_CH1 187
|
||||
+
|
||||
+#define SRST_P_DDR_UPCTL_CH1 188
|
||||
+#define SRST_TM_DDR_MON_CH1 189
|
||||
+#define SRST_DFI_CH1 190
|
||||
+#define SRST_SBR_CH1 191
|
||||
+#define SRST_DDR_UPCTL_CH1 192
|
||||
+#define SRST_DDR_DFICTL_CH1 193
|
||||
+#define SRST_DDR_MON_CH1 194
|
||||
+#define SRST_DDR_STANDBY_CH1 195
|
||||
+#define SRST_A_DDR_UPCTL_CH1 196
|
||||
+#define SRST_A_DDR01_MSCH0 197
|
||||
+#define SRST_A_DDR01_RS_MSCH0 198
|
||||
+#define SRST_A_DDR01_FRS_MSCH0 199
|
||||
+
|
||||
+#define SRST_A_DDR01_SCRAMBLE0 200
|
||||
+#define SRST_A_DDR01_FRS_SCRAMBLE0 201
|
||||
+#define SRST_A_DDR01_MSCH1 202
|
||||
+#define SRST_A_DDR01_RS_MSCH1 203
|
||||
+#define SRST_A_DDR01_FRS_MSCH1 204
|
||||
+#define SRST_A_DDR01_SCRAMBLE1 205
|
||||
+#define SRST_A_DDR01_FRS_SCRAMBLE1 206
|
||||
+#define SRST_P_DDR01_MSCH0 207
|
||||
+#define SRST_P_DDR01_MSCH1 208
|
||||
+
|
||||
+#define SRST_P_DDR_DFICTL_CH2 209
|
||||
+#define SRST_P_DDR_MON_CH2 210
|
||||
+#define SRST_P_DDR_STANDBY_CH2 211
|
||||
+#define SRST_P_DDR_UPCTL_CH2 212
|
||||
+#define SRST_TM_DDR_MON_CH2 213
|
||||
+#define SRST_P_DDR_GRF_CH23 214
|
||||
+#define SRST_DFI_CH2 215
|
||||
+#define SRST_SBR_CH2 216
|
||||
+#define SRST_DDR_UPCTL_CH2 217
|
||||
+#define SRST_DDR_DFICTL_CH2 218
|
||||
+#define SRST_DDR_MON_CH2 219
|
||||
+#define SRST_DDR_STANDBY_CH2 220
|
||||
+#define SRST_A_DDR_UPCTL_CH2 221
|
||||
+#define SRST_P_DDR_DFICTL_CH3 222
|
||||
+#define SRST_P_DDR_MON_CH3 223
|
||||
+#define SRST_P_DDR_STANDBY_CH3 224
|
||||
+
|
||||
+#define SRST_P_DDR_UPCTL_CH3 225
|
||||
+#define SRST_TM_DDR_MON_CH3 226
|
||||
+#define SRST_DFI_CH3 227
|
||||
+#define SRST_SBR_CH3 228
|
||||
+#define SRST_DDR_UPCTL_CH3 229
|
||||
+#define SRST_DDR_DFICTL_CH3 230
|
||||
+#define SRST_DDR_MON_CH3 231
|
||||
+#define SRST_DDR_STANDBY_CH3 232
|
||||
+#define SRST_A_DDR_UPCTL_CH3 233
|
||||
+#define SRST_A_DDR23_MSCH2 234
|
||||
+#define SRST_A_DDR23_RS_MSCH2 235
|
||||
+#define SRST_A_DDR23_FRS_MSCH2 236
|
||||
+
|
||||
+#define SRST_A_DDR23_SCRAMBLE2 237
|
||||
+#define SRST_A_DDR23_FRS_SCRAMBLE2 238
|
||||
+#define SRST_A_DDR23_MSCH3 239
|
||||
+#define SRST_A_DDR23_RS_MSCH3 240
|
||||
+#define SRST_A_DDR23_FRS_MSCH3 241
|
||||
+#define SRST_A_DDR23_SCRAMBLE3 242
|
||||
+#define SRST_A_DDR23_FRS_SCRAMBLE3 243
|
||||
+#define SRST_P_DDR23_MSCH2 244
|
||||
+#define SRST_P_DDR23_MSCH3 245
|
||||
+
|
||||
+#define SRST_ISP1 246
|
||||
+#define SRST_ISP1_VICAP 247
|
||||
+#define SRST_A_ISP1_BIU 248
|
||||
+#define SRST_H_ISP1_BIU 249
|
||||
+
|
||||
+#define SRST_A_RKNN1 250
|
||||
+#define SRST_A_RKNN1_BIU 251
|
||||
+#define SRST_H_RKNN1 252
|
||||
+#define SRST_H_RKNN1_BIU 253
|
||||
+
|
||||
+#define SRST_A_RKNN2 254
|
||||
+#define SRST_A_RKNN2_BIU 255
|
||||
+#define SRST_H_RKNN2 256
|
||||
+#define SRST_H_RKNN2_BIU 257
|
||||
+
|
||||
+#define SRST_A_RKNN_DSU0 258
|
||||
+#define SRST_P_NPUTOP_BIU 259
|
||||
+#define SRST_P_NPU_TIMER 260
|
||||
+#define SRST_NPUTIMER0 261
|
||||
+#define SRST_NPUTIMER1 262
|
||||
+#define SRST_P_NPU_WDT 263
|
||||
+#define SRST_T_NPU_WDT 264
|
||||
+#define SRST_P_NPU_PVTM 265
|
||||
+#define SRST_P_NPU_GRF 266
|
||||
+#define SRST_NPU_PVTM 267
|
||||
+
|
||||
+#define SRST_NPU_PVTPLL 268
|
||||
+#define SRST_H_NPU_CM0_BIU 269
|
||||
+#define SRST_F_NPU_CM0_CORE 270
|
||||
+#define SRST_T_NPU_CM0_JTAG 271
|
||||
+#define SRST_A_RKNN0 272
|
||||
+#define SRST_A_RKNN0_BIU 273
|
||||
+#define SRST_H_RKNN0 274
|
||||
+#define SRST_H_RKNN0_BIU 275
|
||||
+
|
||||
+#define SRST_H_NVM_BIU 276
|
||||
+#define SRST_A_NVM_BIU 277
|
||||
+#define SRST_H_EMMC 278
|
||||
+#define SRST_A_EMMC 279
|
||||
+#define SRST_C_EMMC 280
|
||||
+#define SRST_B_EMMC 281
|
||||
+#define SRST_T_EMMC 282
|
||||
+#define SRST_S_SFC 283
|
||||
+#define SRST_H_SFC 284
|
||||
+#define SRST_H_SFC_XIP 285
|
||||
+
|
||||
+#define SRST_P_GRF 286
|
||||
+#define SRST_P_DEC_BIU 287
|
||||
+#define SRST_P_PHP_BIU 288
|
||||
+#define SRST_A_PCIE_GRIDGE 289
|
||||
+#define SRST_A_PHP_BIU 290
|
||||
+#define SRST_A_GMAC0 291
|
||||
+#define SRST_A_GMAC1 292
|
||||
+#define SRST_A_PCIE_BIU 293
|
||||
+#define SRST_PCIE0_POWER_UP 294
|
||||
+#define SRST_PCIE1_POWER_UP 295
|
||||
+#define SRST_PCIE2_POWER_UP 296
|
||||
+
|
||||
+#define SRST_PCIE3_POWER_UP 297
|
||||
+#define SRST_PCIE4_POWER_UP 298
|
||||
+#define SRST_P_PCIE0 299
|
||||
+#define SRST_P_PCIE1 300
|
||||
+#define SRST_P_PCIE2 301
|
||||
+#define SRST_P_PCIE3 302
|
||||
+
|
||||
+#define SRST_P_PCIE4 303
|
||||
+#define SRST_A_PHP_GIC_ITS 304
|
||||
+#define SRST_A_MMU_PCIE 305
|
||||
+#define SRST_A_MMU_PHP 306
|
||||
+#define SRST_A_MMU_BIU 307
|
||||
+
|
||||
+#define SRST_A_USB3OTG2 308
|
||||
+
|
||||
+#define SRST_PMALIVE0 309
|
||||
+#define SRST_PMALIVE1 310
|
||||
+#define SRST_PMALIVE2 311
|
||||
+#define SRST_A_SATA0 312
|
||||
+#define SRST_A_SATA1 313
|
||||
+#define SRST_A_SATA2 314
|
||||
+#define SRST_RXOOB0 315
|
||||
+#define SRST_RXOOB1 316
|
||||
+#define SRST_RXOOB2 317
|
||||
+#define SRST_ASIC0 318
|
||||
+#define SRST_ASIC1 319
|
||||
+#define SRST_ASIC2 320
|
||||
+
|
||||
+#define SRST_A_RKVDEC_CCU 321
|
||||
+#define SRST_H_RKVDEC0 322
|
||||
+#define SRST_A_RKVDEC0 323
|
||||
+#define SRST_H_RKVDEC0_BIU 324
|
||||
+#define SRST_A_RKVDEC0_BIU 325
|
||||
+#define SRST_RKVDEC0_CA 326
|
||||
+#define SRST_RKVDEC0_HEVC_CA 327
|
||||
+#define SRST_RKVDEC0_CORE 328
|
||||
+
|
||||
+#define SRST_H_RKVDEC1 329
|
||||
+#define SRST_A_RKVDEC1 330
|
||||
+#define SRST_H_RKVDEC1_BIU 331
|
||||
+#define SRST_A_RKVDEC1_BIU 332
|
||||
+#define SRST_RKVDEC1_CA 333
|
||||
+#define SRST_RKVDEC1_HEVC_CA 334
|
||||
+#define SRST_RKVDEC1_CORE 335
|
||||
+
|
||||
+#define SRST_A_USB_BIU 336
|
||||
+#define SRST_H_USB_BIU 337
|
||||
+#define SRST_A_USB3OTG0 338
|
||||
+#define SRST_A_USB3OTG1 339
|
||||
+#define SRST_H_HOST0 340
|
||||
+#define SRST_H_HOST_ARB0 341
|
||||
+#define SRST_H_HOST1 342
|
||||
+#define SRST_H_HOST_ARB1 343
|
||||
+#define SRST_A_USB_GRF 344
|
||||
+#define SRST_C_USB2P0_HOST0 345
|
||||
+
|
||||
+#define SRST_C_USB2P0_HOST1 346
|
||||
+#define SRST_HOST_UTMI0 347
|
||||
+#define SRST_HOST_UTMI1 348
|
||||
+
|
||||
+#define SRST_A_VDPU_BIU 349
|
||||
+#define SRST_A_VDPU_LOW_BIU 350
|
||||
+#define SRST_H_VDPU_BIU 351
|
||||
+#define SRST_A_JPEG_DECODER_BIU 352
|
||||
+#define SRST_A_VPU 353
|
||||
+#define SRST_H_VPU 354
|
||||
+#define SRST_A_JPEG_ENCODER0 355
|
||||
+#define SRST_H_JPEG_ENCODER0 356
|
||||
+#define SRST_A_JPEG_ENCODER1 357
|
||||
+#define SRST_H_JPEG_ENCODER1 358
|
||||
+#define SRST_A_JPEG_ENCODER2 359
|
||||
+#define SRST_H_JPEG_ENCODER2 360
|
||||
+
|
||||
+#define SRST_A_JPEG_ENCODER3 361
|
||||
+#define SRST_H_JPEG_ENCODER3 362
|
||||
+#define SRST_A_JPEG_DECODER 363
|
||||
+#define SRST_H_JPEG_DECODER 364
|
||||
+#define SRST_H_IEP2P0 365
|
||||
+#define SRST_A_IEP2P0 366
|
||||
+#define SRST_IEP2P0_CORE 367
|
||||
+#define SRST_H_RGA2 368
|
||||
+#define SRST_A_RGA2 369
|
||||
+#define SRST_RGA2_CORE 370
|
||||
+#define SRST_H_RGA3_0 371
|
||||
+#define SRST_A_RGA3_0 372
|
||||
+#define SRST_RGA3_0_CORE 373
|
||||
+
|
||||
+#define SRST_H_RKVENC0_BIU 374
|
||||
+#define SRST_A_RKVENC0_BIU 375
|
||||
+#define SRST_H_RKVENC0 376
|
||||
+#define SRST_A_RKVENC0 377
|
||||
+#define SRST_RKVENC0_CORE 378
|
||||
+
|
||||
+#define SRST_H_RKVENC1_BIU 379
|
||||
+#define SRST_A_RKVENC1_BIU 380
|
||||
+#define SRST_H_RKVENC1 381
|
||||
+#define SRST_A_RKVENC1 382
|
||||
+#define SRST_RKVENC1_CORE 383
|
||||
+
|
||||
+#define SRST_A_VI_BIU 384
|
||||
+#define SRST_H_VI_BIU 385
|
||||
+#define SRST_P_VI_BIU 386
|
||||
+#define SRST_D_VICAP 387
|
||||
+#define SRST_A_VICAP 388
|
||||
+#define SRST_H_VICAP 389
|
||||
+#define SRST_ISP0 390
|
||||
+#define SRST_ISP0_VICAP 391
|
||||
+
|
||||
+#define SRST_FISHEYE0 392
|
||||
+#define SRST_FISHEYE1 393
|
||||
+#define SRST_P_CSI_HOST_0 394
|
||||
+#define SRST_P_CSI_HOST_1 395
|
||||
+#define SRST_P_CSI_HOST_2 396
|
||||
+#define SRST_P_CSI_HOST_3 397
|
||||
+#define SRST_P_CSI_HOST_4 398
|
||||
+#define SRST_P_CSI_HOST_5 399
|
||||
+
|
||||
+#define SRST_CSIHOST0_VICAP 400
|
||||
+#define SRST_CSIHOST1_VICAP 401
|
||||
+#define SRST_CSIHOST2_VICAP 402
|
||||
+#define SRST_CSIHOST3_VICAP 403
|
||||
+#define SRST_CSIHOST4_VICAP 404
|
||||
+#define SRST_CSIHOST5_VICAP 405
|
||||
+#define SRST_CIFIN 406
|
||||
+
|
||||
+#define SRST_A_VOP_BIU 407
|
||||
+#define SRST_A_VOP_LOW_BIU 408
|
||||
+#define SRST_H_VOP_BIU 409
|
||||
+#define SRST_P_VOP_BIU 410
|
||||
+#define SRST_H_VOP 411
|
||||
+#define SRST_A_VOP 412
|
||||
+#define SRST_D_VOP0 413
|
||||
+#define SRST_D_VOP2HDMI_BRIDGE0 414
|
||||
+#define SRST_D_VOP2HDMI_BRIDGE1 415
|
||||
+
|
||||
+#define SRST_D_VOP1 416
|
||||
+#define SRST_D_VOP2 417
|
||||
+#define SRST_D_VOP3 418
|
||||
+#define SRST_P_VOPGRF 419
|
||||
+#define SRST_P_DSIHOST0 420
|
||||
+#define SRST_P_DSIHOST1 421
|
||||
+#define SRST_DSIHOST0 422
|
||||
+#define SRST_DSIHOST1 423
|
||||
+#define SRST_VOP_PMU 424
|
||||
+#define SRST_P_VOP_CHANNEL_BIU 425
|
||||
+
|
||||
+#define SRST_H_VO0_BIU 426
|
||||
+#define SRST_H_VO0_S_BIU 427
|
||||
+#define SRST_P_VO0_BIU 428
|
||||
+#define SRST_P_VO0_S_BIU 429
|
||||
+#define SRST_A_HDCP0_BIU 430
|
||||
+#define SRST_P_VO0GRF 431
|
||||
+#define SRST_H_HDCP_KEY0 432
|
||||
+#define SRST_A_HDCP0 433
|
||||
+#define SRST_H_HDCP0 434
|
||||
+#define SRST_HDCP0 435
|
||||
+
|
||||
+#define SRST_P_TRNG0 436
|
||||
+#define SRST_DP0 437
|
||||
+#define SRST_DP1 438
|
||||
+#define SRST_H_I2S4_8CH 439
|
||||
+#define SRST_M_I2S4_8CH_TX 440
|
||||
+#define SRST_H_I2S8_8CH 441
|
||||
+
|
||||
+#define SRST_M_I2S8_8CH_TX 442
|
||||
+#define SRST_H_SPDIF2_DP0 443
|
||||
+#define SRST_M_SPDIF2_DP0 444
|
||||
+#define SRST_H_SPDIF5_DP1 445
|
||||
+#define SRST_M_SPDIF5_DP1 446
|
||||
+
|
||||
+#define SRST_A_HDCP1_BIU 447
|
||||
+#define SRST_A_VO1_BIU 448
|
||||
+#define SRST_H_VOP1_BIU 449
|
||||
+#define SRST_H_VOP1_S_BIU 450
|
||||
+#define SRST_P_VOP1_BIU 451
|
||||
+#define SRST_P_VO1GRF 452
|
||||
+#define SRST_P_VO1_S_BIU 453
|
||||
+
|
||||
+#define SRST_H_I2S7_8CH 454
|
||||
+#define SRST_M_I2S7_8CH_RX 455
|
||||
+#define SRST_H_HDCP_KEY1 456
|
||||
+#define SRST_A_HDCP1 457
|
||||
+#define SRST_H_HDCP1 458
|
||||
+#define SRST_HDCP1 459
|
||||
+#define SRST_P_TRNG1 460
|
||||
+#define SRST_P_HDMITX0 461
|
||||
+
|
||||
+#define SRST_HDMITX0_REF 462
|
||||
+#define SRST_P_HDMITX1 463
|
||||
+#define SRST_HDMITX1_REF 464
|
||||
+#define SRST_A_HDMIRX 465
|
||||
+#define SRST_P_HDMIRX 466
|
||||
+#define SRST_HDMIRX_REF 467
|
||||
+
|
||||
+#define SRST_P_EDP0 468
|
||||
+#define SRST_EDP0_24M 469
|
||||
+#define SRST_P_EDP1 470
|
||||
+#define SRST_EDP1_24M 471
|
||||
+#define SRST_M_I2S5_8CH_TX 472
|
||||
+#define SRST_H_I2S5_8CH 473
|
||||
+#define SRST_M_I2S6_8CH_TX 474
|
||||
+
|
||||
+#define SRST_M_I2S6_8CH_RX 475
|
||||
+#define SRST_H_I2S6_8CH 476
|
||||
+#define SRST_H_SPDIF3 477
|
||||
+#define SRST_M_SPDIF3 478
|
||||
+#define SRST_H_SPDIF4 479
|
||||
+#define SRST_M_SPDIF4 480
|
||||
+#define SRST_H_SPDIFRX0 481
|
||||
+#define SRST_M_SPDIFRX0 482
|
||||
+#define SRST_H_SPDIFRX1 483
|
||||
+#define SRST_M_SPDIFRX1 484
|
||||
+
|
||||
+#define SRST_H_SPDIFRX2 485
|
||||
+#define SRST_M_SPDIFRX2 486
|
||||
+#define SRST_LINKSYM_HDMITXPHY0 487
|
||||
+#define SRST_LINKSYM_HDMITXPHY1 488
|
||||
+#define SRST_VO1_BRIDGE0 489
|
||||
+#define SRST_VO1_BRIDGE1 490
|
||||
+
|
||||
+#define SRST_H_I2S9_8CH 491
|
||||
+#define SRST_M_I2S9_8CH_RX 492
|
||||
+#define SRST_H_I2S10_8CH 493
|
||||
+#define SRST_M_I2S10_8CH_RX 494
|
||||
+#define SRST_P_S_HDMIRX 495
|
||||
+
|
||||
+#define SRST_GPU 496
|
||||
+#define SRST_SYS_GPU 497
|
||||
+#define SRST_A_S_GPU_BIU 498
|
||||
+#define SRST_A_M0_GPU_BIU 499
|
||||
+#define SRST_A_M1_GPU_BIU 500
|
||||
+#define SRST_A_M2_GPU_BIU 501
|
||||
+#define SRST_A_M3_GPU_BIU 502
|
||||
+#define SRST_P_GPU_BIU 503
|
||||
+#define SRST_P_GPU_PVTM 504
|
||||
+
|
||||
+#define SRST_GPU_PVTM 505
|
||||
+#define SRST_P_GPU_GRF 506
|
||||
+#define SRST_GPU_PVTPLL 507
|
||||
+#define SRST_GPU_JTAG 508
|
||||
+
|
||||
+#define SRST_A_AV1_BIU 509
|
||||
+#define SRST_A_AV1 510
|
||||
+#define SRST_P_AV1_BIU 511
|
||||
+#define SRST_P_AV1 512
|
||||
+
|
||||
+#define SRST_A_DDR_BIU 513
|
||||
+#define SRST_A_DMA2DDR 514
|
||||
+#define SRST_A_DDR_SHAREMEM 515
|
||||
+#define SRST_A_DDR_SHAREMEM_BIU 516
|
||||
+#define SRST_A_CENTER_S200_BIU 517
|
||||
+#define SRST_A_CENTER_S400_BIU 518
|
||||
+#define SRST_H_AHB2APB 519
|
||||
+#define SRST_H_CENTER_BIU 520
|
||||
+#define SRST_F_DDR_CM0_CORE 521
|
||||
+
|
||||
+#define SRST_DDR_TIMER0 522
|
||||
+#define SRST_DDR_TIMER1 523
|
||||
+#define SRST_T_WDT_DDR 524
|
||||
+#define SRST_T_DDR_CM0_JTAG 525
|
||||
+#define SRST_P_CENTER_GRF 526
|
||||
+#define SRST_P_AHB2APB 527
|
||||
+#define SRST_P_WDT 528
|
||||
+#define SRST_P_TIMER 529
|
||||
+#define SRST_P_DMA2DDR 530
|
||||
+#define SRST_P_SHAREMEM 531
|
||||
+#define SRST_P_CENTER_BIU 532
|
||||
+#define SRST_P_CENTER_CHANNEL_BIU 533
|
||||
+
|
||||
+#define SRST_P_USBDPGRF0 534
|
||||
+#define SRST_P_USBDPPHY0 535
|
||||
+#define SRST_P_USBDPGRF1 536
|
||||
+#define SRST_P_USBDPPHY1 537
|
||||
+#define SRST_P_HDPTX0 538
|
||||
+#define SRST_P_HDPTX1 539
|
||||
+#define SRST_P_APB2ASB_SLV_BOT_RIGHT 540
|
||||
+#define SRST_P_USB2PHY_U3_0_GRF0 541
|
||||
+#define SRST_P_USB2PHY_U3_1_GRF0 542
|
||||
+#define SRST_P_USB2PHY_U2_0_GRF0 543
|
||||
+#define SRST_P_USB2PHY_U2_1_GRF0 544
|
||||
+#define SRST_HDPTX0_ROPLL 545
|
||||
+#define SRST_HDPTX0_LCPLL 546
|
||||
+#define SRST_HDPTX0 547
|
||||
+#define SRST_HDPTX1_ROPLL 548
|
||||
+
|
||||
+#define SRST_HDPTX1_LCPLL 549
|
||||
+#define SRST_HDPTX1 550
|
||||
+#define SRST_HDPTX0_HDMIRXPHY_SET 551
|
||||
+#define SRST_USBDP_COMBO_PHY0 552
|
||||
+#define SRST_USBDP_COMBO_PHY0_LCPLL 553
|
||||
+#define SRST_USBDP_COMBO_PHY0_ROPLL 554
|
||||
+#define SRST_USBDP_COMBO_PHY0_PCS_HS 555
|
||||
+#define SRST_USBDP_COMBO_PHY1 556
|
||||
+#define SRST_USBDP_COMBO_PHY1_LCPLL 557
|
||||
+#define SRST_USBDP_COMBO_PHY1_ROPLL 558
|
||||
+#define SRST_USBDP_COMBO_PHY1_PCS_HS 559
|
||||
+#define SRST_HDMIHDP0 560
|
||||
+#define SRST_HDMIHDP1 561
|
||||
+
|
||||
+#define SRST_A_VO1USB_TOP_BIU 562
|
||||
+#define SRST_H_VO1USB_TOP_BIU 563
|
||||
+
|
||||
+#define SRST_H_SDIO_BIU 564
|
||||
+#define SRST_H_SDIO 565
|
||||
+#define SRST_SDIO 566
|
||||
+
|
||||
+#define SRST_H_RGA3_BIU 567
|
||||
+#define SRST_A_RGA3_BIU 568
|
||||
+#define SRST_H_RGA3_1 569
|
||||
+#define SRST_A_RGA3_1 570
|
||||
+#define SRST_RGA3_1_CORE 571
|
||||
+
|
||||
+#define SRST_REF_PIPE_PHY0 572
|
||||
+#define SRST_REF_PIPE_PHY1 573
|
||||
+#define SRST_REF_PIPE_PHY2 574
|
||||
+
|
||||
+#define SRST_P_PHPTOP_CRU 575
|
||||
+#define SRST_P_PCIE2_GRF0 576
|
||||
+#define SRST_P_PCIE2_GRF1 577
|
||||
+#define SRST_P_PCIE2_GRF2 578
|
||||
+#define SRST_P_PCIE2_PHY0 579
|
||||
+#define SRST_P_PCIE2_PHY1 580
|
||||
+#define SRST_P_PCIE2_PHY2 581
|
||||
+#define SRST_P_PCIE3_PHY 582
|
||||
+#define SRST_P_APB2ASB_SLV_CHIP_TOP 583
|
||||
+#define SRST_PCIE30_PHY 584
|
||||
+
|
||||
+#define SRST_H_PMU1_BIU 585
|
||||
+#define SRST_P_PMU1_BIU 586
|
||||
+#define SRST_H_PMU_CM0_BIU 587
|
||||
+#define SRST_F_PMU_CM0_CORE 588
|
||||
+#define SRST_T_PMU1_CM0_JTAG 589
|
||||
+
|
||||
+#define SRST_DDR_FAIL_SAFE 590
|
||||
+#define SRST_P_CRU_PMU1 591
|
||||
+#define SRST_P_PMU1_GRF 592
|
||||
+#define SRST_P_PMU1_IOC 593
|
||||
+#define SRST_P_PMU1WDT 594
|
||||
+#define SRST_T_PMU1WDT 595
|
||||
+#define SRST_P_PMU1TIMER 596
|
||||
+#define SRST_PMU1TIMER0 597
|
||||
+#define SRST_PMU1TIMER1 598
|
||||
+#define SRST_P_PMU1PWM 599
|
||||
+#define SRST_PMU1PWM 600
|
||||
+
|
||||
+#define SRST_P_I2C0 601
|
||||
+#define SRST_I2C0 602
|
||||
+#define SRST_S_UART0 603
|
||||
+#define SRST_P_UART0 604
|
||||
+#define SRST_H_I2S1_8CH 605
|
||||
+#define SRST_M_I2S1_8CH_TX 606
|
||||
+#define SRST_M_I2S1_8CH_RX 607
|
||||
+#define SRST_H_PDM0 608
|
||||
+#define SRST_PDM0 609
|
||||
+
|
||||
+#define SRST_H_VAD 610
|
||||
+#define SRST_HDPTX0_INIT 611
|
||||
+#define SRST_HDPTX0_CMN 612
|
||||
+#define SRST_HDPTX0_LANE 613
|
||||
+#define SRST_HDPTX1_INIT 614
|
||||
+
|
||||
+#define SRST_HDPTX1_CMN 615
|
||||
+#define SRST_HDPTX1_LANE 616
|
||||
+#define SRST_M_MIPI_DCPHY0 617
|
||||
+#define SRST_S_MIPI_DCPHY0 618
|
||||
+#define SRST_M_MIPI_DCPHY1 619
|
||||
+#define SRST_S_MIPI_DCPHY1 620
|
||||
+#define SRST_OTGPHY_U3_0 621
|
||||
+#define SRST_OTGPHY_U3_1 622
|
||||
+#define SRST_OTGPHY_U2_0 623
|
||||
+#define SRST_OTGPHY_U2_1 624
|
||||
+
|
||||
+#define SRST_P_PMU0GRF 625
|
||||
+#define SRST_P_PMU0IOC 626
|
||||
+#define SRST_P_GPIO0 627
|
||||
+#define SRST_GPIO0 628
|
||||
+
|
||||
+#define SRST_A_SECURE_NS_BIU 629
|
||||
+#define SRST_H_SECURE_NS_BIU 630
|
||||
+#define SRST_A_SECURE_S_BIU 631
|
||||
+#define SRST_H_SECURE_S_BIU 632
|
||||
+#define SRST_P_SECURE_S_BIU 633
|
||||
+#define SRST_CRYPTO_CORE 634
|
||||
+
|
||||
+#define SRST_CRYPTO_PKA 635
|
||||
+#define SRST_CRYPTO_RNG 636
|
||||
+#define SRST_A_CRYPTO 637
|
||||
+#define SRST_H_CRYPTO 638
|
||||
+#define SRST_KEYLADDER_CORE 639
|
||||
+#define SRST_KEYLADDER_RNG 640
|
||||
+#define SRST_A_KEYLADDER 641
|
||||
+#define SRST_H_KEYLADDER 642
|
||||
+#define SRST_P_OTPC_S 643
|
||||
+#define SRST_OTPC_S 644
|
||||
+#define SRST_WDT_S 645
|
||||
+
|
||||
+#define SRST_T_WDT_S 646
|
||||
+#define SRST_H_BOOTROM 647
|
||||
+#define SRST_A_DCF 648
|
||||
+#define SRST_P_DCF 649
|
||||
+#define SRST_H_BOOTROM_NS 650
|
||||
+#define SRST_P_KEYLADDER 651
|
||||
+#define SRST_H_TRNG_S 652
|
||||
+
|
||||
+#define SRST_H_TRNG_NS 653
|
||||
+#define SRST_D_SDMMC_BUFFER 654
|
||||
+#define SRST_H_SDMMC 655
|
||||
+#define SRST_H_SDMMC_BUFFER 656
|
||||
+#define SRST_SDMMC 657
|
||||
+#define SRST_P_TRNG_CHK 658
|
||||
+#define SRST_TRNG_S 659
|
||||
+
|
||||
+#endif
|
||||
@@ -1,79 +0,0 @@
|
||||
From cf87691f143e6cc5727767b02ec2be3725534a5d Mon Sep 17 00:00:00 2001
|
||||
From: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
Date: Tue, 18 Oct 2022 17:14:02 +0200
|
||||
Subject: [PATCH] clk: rockchip: add register offset of the cores select parent
|
||||
|
||||
The cores select parent register is special on RK3588.
|
||||
|
||||
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20221018151407.63395-5-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk-cpu.c | 28 ++++++++++++++++++++--------
|
||||
drivers/clk/rockchip/clk.h | 3 +++
|
||||
2 files changed, 23 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk-cpu.c
|
||||
+++ b/drivers/clk/rockchip/clk-cpu.c
|
||||
@@ -166,10 +166,16 @@ static int rockchip_cpuclk_pre_rate_chan
|
||||
}
|
||||
}
|
||||
/* select alternate parent */
|
||||
- writel(HIWORD_UPDATE(reg_data->mux_core_alt,
|
||||
- reg_data->mux_core_mask,
|
||||
- reg_data->mux_core_shift),
|
||||
- cpuclk->reg_base + reg_data->core_reg[0]);
|
||||
+ if (reg_data->mux_core_reg)
|
||||
+ writel(HIWORD_UPDATE(reg_data->mux_core_alt,
|
||||
+ reg_data->mux_core_mask,
|
||||
+ reg_data->mux_core_shift),
|
||||
+ cpuclk->reg_base + reg_data->mux_core_reg);
|
||||
+ else
|
||||
+ writel(HIWORD_UPDATE(reg_data->mux_core_alt,
|
||||
+ reg_data->mux_core_mask,
|
||||
+ reg_data->mux_core_shift),
|
||||
+ cpuclk->reg_base + reg_data->core_reg[0]);
|
||||
|
||||
spin_unlock_irqrestore(cpuclk->lock, flags);
|
||||
return 0;
|
||||
@@ -202,10 +208,16 @@ static int rockchip_cpuclk_post_rate_cha
|
||||
* primary parent by the extra dividers that were needed for the alt.
|
||||
*/
|
||||
|
||||
- writel(HIWORD_UPDATE(reg_data->mux_core_main,
|
||||
- reg_data->mux_core_mask,
|
||||
- reg_data->mux_core_shift),
|
||||
- cpuclk->reg_base + reg_data->core_reg[0]);
|
||||
+ if (reg_data->mux_core_reg)
|
||||
+ writel(HIWORD_UPDATE(reg_data->mux_core_main,
|
||||
+ reg_data->mux_core_mask,
|
||||
+ reg_data->mux_core_shift),
|
||||
+ cpuclk->reg_base + reg_data->mux_core_reg);
|
||||
+ else
|
||||
+ writel(HIWORD_UPDATE(reg_data->mux_core_main,
|
||||
+ reg_data->mux_core_mask,
|
||||
+ reg_data->mux_core_shift),
|
||||
+ cpuclk->reg_base + reg_data->core_reg[0]);
|
||||
|
||||
/* remove dividers */
|
||||
for (i = 0; i < reg_data->num_cores; i++) {
|
||||
--- a/drivers/clk/rockchip/clk.h
|
||||
+++ b/drivers/clk/rockchip/clk.h
|
||||
@@ -389,6 +389,8 @@ struct rockchip_cpuclk_rate_table {
|
||||
* @div_core_shift[]: cores divider offset used to divide the pll value
|
||||
* @div_core_mask[]: cores divider mask
|
||||
* @num_cores: number of cpu cores
|
||||
+ * @mux_core_reg: register offset of the cores select parent
|
||||
+ * @mux_core_alt: mux value to select alternate parent
|
||||
* @mux_core_main: mux value to select main parent of core
|
||||
* @mux_core_shift: offset of the core multiplexer
|
||||
* @mux_core_mask: core multiplexer mask
|
||||
@@ -398,6 +400,7 @@ struct rockchip_cpuclk_reg_data {
|
||||
u8 div_core_shift[ROCKCHIP_CPUCLK_MAX_CORES];
|
||||
u32 div_core_mask[ROCKCHIP_CPUCLK_MAX_CORES];
|
||||
int num_cores;
|
||||
+ int mux_core_reg;
|
||||
u8 mux_core_alt;
|
||||
u8 mux_core_main;
|
||||
u8 mux_core_shift;
|
||||
@@ -1,300 +0,0 @@
|
||||
From 8f6594494b1cb0ad14493795b436413cfe64a0f8 Mon Sep 17 00:00:00 2001
|
||||
From: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
Date: Tue, 18 Oct 2022 17:14:03 +0200
|
||||
Subject: [PATCH] clk: rockchip: add pll type for RK3588
|
||||
|
||||
Add RK3588 PLL support fully relying on lookup tables like
|
||||
the other upstream supported rockchip platforms.
|
||||
|
||||
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
[rebase and modify code to avoid PLL parameter calculation]
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20221018151407.63395-6-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk-pll.c | 218 ++++++++++++++++++++++++++++++++-
|
||||
drivers/clk/rockchip/clk.h | 18 +++
|
||||
2 files changed, 235 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk-pll.c
|
||||
+++ b/drivers/clk/rockchip/clk-pll.c
|
||||
@@ -843,6 +843,213 @@ static const struct clk_ops rockchip_rk3
|
||||
};
|
||||
|
||||
/*
|
||||
+ * PLL used in RK3588
|
||||
+ */
|
||||
+
|
||||
+#define RK3588_PLLCON(i) (i * 0x4)
|
||||
+#define RK3588_PLLCON0_M_MASK 0x3ff
|
||||
+#define RK3588_PLLCON0_M_SHIFT 0
|
||||
+#define RK3588_PLLCON1_P_MASK 0x3f
|
||||
+#define RK3588_PLLCON1_P_SHIFT 0
|
||||
+#define RK3588_PLLCON1_S_MASK 0x7
|
||||
+#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)
|
||||
+
|
||||
+static int rockchip_rk3588_pll_wait_lock(struct rockchip_clk_pll *pll)
|
||||
+{
|
||||
+ u32 pllcon;
|
||||
+ int ret;
|
||||
+
|
||||
+ /*
|
||||
+ * Lock time typical 250, max 500 input clock cycles @24MHz
|
||||
+ * So define a very safe maximum of 1000us, meaning 24000 cycles.
|
||||
+ */
|
||||
+ ret = readl_relaxed_poll_timeout(pll->reg_base + RK3588_PLLCON(6),
|
||||
+ pllcon,
|
||||
+ pllcon & RK3588_PLLCON6_LOCK_STATUS,
|
||||
+ 0, 1000);
|
||||
+ if (ret)
|
||||
+ pr_err("%s: timeout waiting for pll to lock\n", __func__);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void rockchip_rk3588_pll_get_params(struct rockchip_clk_pll *pll,
|
||||
+ struct rockchip_pll_rate_table *rate)
|
||||
+{
|
||||
+ u32 pllcon;
|
||||
+
|
||||
+ pllcon = readl_relaxed(pll->reg_base + RK3588_PLLCON(0));
|
||||
+ rate->m = ((pllcon >> RK3588_PLLCON0_M_SHIFT) & RK3588_PLLCON0_M_MASK);
|
||||
+
|
||||
+ pllcon = readl_relaxed(pll->reg_base + RK3588_PLLCON(1));
|
||||
+ rate->p = ((pllcon >> RK3588_PLLCON1_P_SHIFT) & RK3588_PLLCON1_P_MASK);
|
||||
+ rate->s = ((pllcon >> RK3588_PLLCON1_S_SHIFT) & RK3588_PLLCON1_S_MASK);
|
||||
+
|
||||
+ pllcon = readl_relaxed(pll->reg_base + RK3588_PLLCON(2));
|
||||
+ rate->k = ((pllcon >> RK3588_PLLCON2_K_SHIFT) & RK3588_PLLCON2_K_MASK);
|
||||
+}
|
||||
+
|
||||
+static unsigned long rockchip_rk3588_pll_recalc_rate(struct clk_hw *hw, unsigned long prate)
|
||||
+{
|
||||
+ struct rockchip_clk_pll *pll = to_rockchip_clk_pll(hw);
|
||||
+ struct rockchip_pll_rate_table cur;
|
||||
+ u64 rate64 = prate, postdiv;
|
||||
+
|
||||
+ rockchip_rk3588_pll_get_params(pll, &cur);
|
||||
+
|
||||
+ rate64 *= cur.m;
|
||||
+ do_div(rate64, cur.p);
|
||||
+
|
||||
+ if (cur.k) {
|
||||
+ /* fractional mode */
|
||||
+ u64 frac_rate64 = prate * cur.k;
|
||||
+
|
||||
+ postdiv = cur.p * 65535;
|
||||
+ do_div(frac_rate64, postdiv);
|
||||
+ rate64 += frac_rate64;
|
||||
+ }
|
||||
+ rate64 = rate64 >> cur.s;
|
||||
+
|
||||
+ return (unsigned long)rate64;
|
||||
+}
|
||||
+
|
||||
+static int rockchip_rk3588_pll_set_params(struct rockchip_clk_pll *pll,
|
||||
+ const struct rockchip_pll_rate_table *rate)
|
||||
+{
|
||||
+ const struct clk_ops *pll_mux_ops = pll->pll_mux_ops;
|
||||
+ struct clk_mux *pll_mux = &pll->pll_mux;
|
||||
+ struct rockchip_pll_rate_table cur;
|
||||
+ int rate_change_remuxed = 0;
|
||||
+ int cur_parent;
|
||||
+ int ret;
|
||||
+
|
||||
+ pr_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);
|
||||
+
|
||||
+ rockchip_rk3588_pll_get_params(pll, &cur);
|
||||
+ cur.rate = 0;
|
||||
+
|
||||
+ if (pll->type == pll_rk3588) {
|
||||
+ cur_parent = pll_mux_ops->get_parent(&pll_mux->hw);
|
||||
+ if (cur_parent == PLL_MODE_NORM) {
|
||||
+ pll_mux_ops->set_parent(&pll_mux->hw, PLL_MODE_SLOW);
|
||||
+ rate_change_remuxed = 1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* set pll power down */
|
||||
+ writel(HIWORD_UPDATE(RK3588_PLLCON1_PWRDOWN,
|
||||
+ RK3588_PLLCON1_PWRDOWN, 0),
|
||||
+ pll->reg_base + RK3399_PLLCON(1));
|
||||
+
|
||||
+ /* update pll values */
|
||||
+ writel_relaxed(HIWORD_UPDATE(rate->m, RK3588_PLLCON0_M_MASK, RK3588_PLLCON0_M_SHIFT),
|
||||
+ pll->reg_base + RK3399_PLLCON(0));
|
||||
+
|
||||
+ writel_relaxed(HIWORD_UPDATE(rate->p, RK3588_PLLCON1_P_MASK, RK3588_PLLCON1_P_SHIFT) |
|
||||
+ HIWORD_UPDATE(rate->s, RK3588_PLLCON1_S_MASK, RK3588_PLLCON1_S_SHIFT),
|
||||
+ pll->reg_base + RK3399_PLLCON(1));
|
||||
+
|
||||
+ writel_relaxed(HIWORD_UPDATE(rate->k, RK3588_PLLCON2_K_MASK, RK3588_PLLCON2_K_SHIFT),
|
||||
+ pll->reg_base + RK3399_PLLCON(2));
|
||||
+
|
||||
+ /* set pll power up */
|
||||
+ writel(HIWORD_UPDATE(0, RK3588_PLLCON1_PWRDOWN, 0),
|
||||
+ pll->reg_base + RK3588_PLLCON(1));
|
||||
+
|
||||
+ /* wait for the pll to lock */
|
||||
+ ret = rockchip_rk3588_pll_wait_lock(pll);
|
||||
+ if (ret) {
|
||||
+ pr_warn("%s: pll update unsuccessful, trying to restore old params\n",
|
||||
+ __func__);
|
||||
+ rockchip_rk3588_pll_set_params(pll, &cur);
|
||||
+ }
|
||||
+
|
||||
+ if ((pll->type == pll_rk3588) && rate_change_remuxed)
|
||||
+ pll_mux_ops->set_parent(&pll_mux->hw, PLL_MODE_NORM);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int rockchip_rk3588_pll_set_rate(struct clk_hw *hw, unsigned long drate,
|
||||
+ unsigned long prate)
|
||||
+{
|
||||
+ struct rockchip_clk_pll *pll = to_rockchip_clk_pll(hw);
|
||||
+ const struct rockchip_pll_rate_table *rate;
|
||||
+
|
||||
+ pr_debug("%s: changing %s to %lu with a parent rate of %lu\n",
|
||||
+ __func__, __clk_get_name(hw->clk), drate, prate);
|
||||
+
|
||||
+ /* Get required rate settings from table */
|
||||
+ rate = rockchip_get_pll_settings(pll, drate);
|
||||
+ if (!rate) {
|
||||
+ pr_err("%s: Invalid rate : %lu for pll clk %s\n", __func__,
|
||||
+ drate, __clk_get_name(hw->clk));
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ return rockchip_rk3588_pll_set_params(pll, rate);
|
||||
+}
|
||||
+
|
||||
+static int rockchip_rk3588_pll_enable(struct clk_hw *hw)
|
||||
+{
|
||||
+ struct rockchip_clk_pll *pll = to_rockchip_clk_pll(hw);
|
||||
+
|
||||
+ writel(HIWORD_UPDATE(0, RK3588_PLLCON1_PWRDOWN, 0),
|
||||
+ pll->reg_base + RK3588_PLLCON(1));
|
||||
+ rockchip_rk3588_pll_wait_lock(pll);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void rockchip_rk3588_pll_disable(struct clk_hw *hw)
|
||||
+{
|
||||
+ struct rockchip_clk_pll *pll = to_rockchip_clk_pll(hw);
|
||||
+
|
||||
+ writel(HIWORD_UPDATE(RK3588_PLLCON1_PWRDOWN, RK3588_PLLCON1_PWRDOWN, 0),
|
||||
+ pll->reg_base + RK3588_PLLCON(1));
|
||||
+}
|
||||
+
|
||||
+static int rockchip_rk3588_pll_is_enabled(struct clk_hw *hw)
|
||||
+{
|
||||
+ struct rockchip_clk_pll *pll = to_rockchip_clk_pll(hw);
|
||||
+ u32 pllcon = readl(pll->reg_base + RK3588_PLLCON(1));
|
||||
+
|
||||
+ return !(pllcon & RK3588_PLLCON1_PWRDOWN);
|
||||
+}
|
||||
+
|
||||
+static int rockchip_rk3588_pll_init(struct clk_hw *hw)
|
||||
+{
|
||||
+ struct rockchip_clk_pll *pll = to_rockchip_clk_pll(hw);
|
||||
+
|
||||
+ if (!(pll->flags & ROCKCHIP_PLL_SYNC_RATE))
|
||||
+ return 0;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct clk_ops rockchip_rk3588_pll_clk_norate_ops = {
|
||||
+ .recalc_rate = rockchip_rk3588_pll_recalc_rate,
|
||||
+ .enable = rockchip_rk3588_pll_enable,
|
||||
+ .disable = rockchip_rk3588_pll_disable,
|
||||
+ .is_enabled = rockchip_rk3588_pll_is_enabled,
|
||||
+};
|
||||
+
|
||||
+static const struct clk_ops rockchip_rk3588_pll_clk_ops = {
|
||||
+ .recalc_rate = rockchip_rk3588_pll_recalc_rate,
|
||||
+ .round_rate = rockchip_pll_round_rate,
|
||||
+ .set_rate = rockchip_rk3588_pll_set_rate,
|
||||
+ .enable = rockchip_rk3588_pll_enable,
|
||||
+ .disable = rockchip_rk3588_pll_disable,
|
||||
+ .is_enabled = rockchip_rk3588_pll_is_enabled,
|
||||
+ .init = rockchip_rk3588_pll_init,
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
* Common registering of pll clocks
|
||||
*/
|
||||
|
||||
@@ -890,7 +1097,8 @@ struct clk *rockchip_clk_register_pll(st
|
||||
if (pll_type == pll_rk3036 ||
|
||||
pll_type == pll_rk3066 ||
|
||||
pll_type == pll_rk3328 ||
|
||||
- pll_type == pll_rk3399)
|
||||
+ pll_type == pll_rk3399 ||
|
||||
+ pll_type == pll_rk3588)
|
||||
pll_mux->flags |= CLK_MUX_HIWORD_MASK;
|
||||
|
||||
/* the actual muxing is xin24m, pll-output, xin32k */
|
||||
@@ -957,6 +1165,14 @@ struct clk *rockchip_clk_register_pll(st
|
||||
else
|
||||
init.ops = &rockchip_rk3399_pll_clk_ops;
|
||||
break;
|
||||
+ case pll_rk3588:
|
||||
+ case pll_rk3588_core:
|
||||
+ if (!pll->rate_table)
|
||||
+ init.ops = &rockchip_rk3588_pll_clk_norate_ops;
|
||||
+ else
|
||||
+ init.ops = &rockchip_rk3588_pll_clk_ops;
|
||||
+ init.flags = flags;
|
||||
+ break;
|
||||
default:
|
||||
pr_warn("%s: Unknown pll type for pll clk %s\n",
|
||||
__func__, name);
|
||||
--- a/drivers/clk/rockchip/clk.h
|
||||
+++ b/drivers/clk/rockchip/clk.h
|
||||
@@ -240,6 +240,8 @@ enum rockchip_pll_type {
|
||||
pll_rk3066,
|
||||
pll_rk3328,
|
||||
pll_rk3399,
|
||||
+ pll_rk3588,
|
||||
+ pll_rk3588_core,
|
||||
};
|
||||
|
||||
#define RK3036_PLL_RATE(_rate, _refdiv, _fbdiv, _postdiv1, \
|
||||
@@ -272,6 +274,15 @@ enum rockchip_pll_type {
|
||||
.nb = _nb, \
|
||||
}
|
||||
|
||||
+#define RK3588_PLL_RATE(_rate, _p, _m, _s, _k) \
|
||||
+{ \
|
||||
+ .rate = _rate##U, \
|
||||
+ .p = _p, \
|
||||
+ .m = _m, \
|
||||
+ .s = _s, \
|
||||
+ .k = _k, \
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* struct rockchip_clk_provider - information about clock provider
|
||||
* @reg_base: virtual address for the register base.
|
||||
@@ -307,6 +318,13 @@ struct rockchip_pll_rate_table {
|
||||
unsigned int dsmpd;
|
||||
unsigned int frac;
|
||||
};
|
||||
+ struct {
|
||||
+ /* for RK3588 */
|
||||
+ unsigned int m;
|
||||
+ unsigned int p;
|
||||
+ unsigned int s;
|
||||
+ unsigned int k;
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,122 +0,0 @@
|
||||
From 2004b7b1803719eaaaee5fa6b089b1699a65d31d Mon Sep 17 00:00:00 2001
|
||||
From: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
Date: Tue, 18 Oct 2022 17:14:04 +0200
|
||||
Subject: [PATCH] clk: rockchip: allow additional mux options for cpu-clock
|
||||
frequency changes
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
In order to improve the main frequency of CPU, the clock path of CPU is
|
||||
simplified as follows:
|
||||
|--\
|
||||
| \ |--\
|
||||
--apll--|\ | \ | \
|
||||
| |--apll_core--| \ | \
|
||||
--24M---|/ |mux1 |--[gate]--|mux2|---clk_core
|
||||
| / | /
|
||||
--gpll--|\ | / |------| /
|
||||
| |--gpll_core--| / | |--/
|
||||
--24M---|/ |--/ |
|
||||
|
|
||||
-------apll_directly--------------|
|
||||
|
||||
When the CPU requests high frequency, we want to use MUX2 select the
|
||||
"apll_directly".
|
||||
At low frequencies use MUX1 to select “apll_core" and then MUX2 to
|
||||
select "apll_core_gate".
|
||||
|
||||
However, in this way, the CPU frequency conversion needs to be
|
||||
in the following order:
|
||||
1. MUX2 select to "apll_core_gate", MUX1 select "gpll_core"
|
||||
2. Apll sets slow_mode, sets APLL parameters, locks APLL, and then APLL
|
||||
sets normal_mode
|
||||
3. MUX1 select "apll_core", MUX2 select "apll_directly"
|
||||
|
||||
So add pre_mux and post_mux options to cover this special requirements.
|
||||
|
||||
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
|
||||
[rebase]
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20221018151407.63395-7-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk-cpu.c | 41 ++++++++++++++++++++++++++++++++++
|
||||
drivers/clk/rockchip/clk.h | 2 ++
|
||||
2 files changed, 43 insertions(+)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk-cpu.c
|
||||
+++ b/drivers/clk/rockchip/clk-cpu.c
|
||||
@@ -113,6 +113,42 @@ static void rockchip_cpuclk_set_dividers
|
||||
}
|
||||
}
|
||||
|
||||
+static void rockchip_cpuclk_set_pre_muxs(struct rockchip_cpuclk *cpuclk,
|
||||
+ const struct rockchip_cpuclk_rate_table *rate)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ /* alternate parent is active now. set the pre_muxs */
|
||||
+ for (i = 0; i < ARRAY_SIZE(rate->pre_muxs); i++) {
|
||||
+ const struct rockchip_cpuclk_clksel *clksel = &rate->pre_muxs[i];
|
||||
+
|
||||
+ if (!clksel->reg)
|
||||
+ break;
|
||||
+
|
||||
+ pr_debug("%s: setting reg 0x%x to 0x%x\n",
|
||||
+ __func__, clksel->reg, clksel->val);
|
||||
+ writel(clksel->val, cpuclk->reg_base + clksel->reg);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void rockchip_cpuclk_set_post_muxs(struct rockchip_cpuclk *cpuclk,
|
||||
+ const struct rockchip_cpuclk_rate_table *rate)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ /* alternate parent is active now. set the muxs */
|
||||
+ for (i = 0; i < ARRAY_SIZE(rate->post_muxs); i++) {
|
||||
+ const struct rockchip_cpuclk_clksel *clksel = &rate->post_muxs[i];
|
||||
+
|
||||
+ if (!clksel->reg)
|
||||
+ break;
|
||||
+
|
||||
+ pr_debug("%s: setting reg 0x%x to 0x%x\n",
|
||||
+ __func__, clksel->reg, clksel->val);
|
||||
+ writel(clksel->val, cpuclk->reg_base + clksel->reg);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static int rockchip_cpuclk_pre_rate_change(struct rockchip_cpuclk *cpuclk,
|
||||
struct clk_notifier_data *ndata)
|
||||
{
|
||||
@@ -165,6 +201,9 @@ static int rockchip_cpuclk_pre_rate_chan
|
||||
cpuclk->reg_base + reg_data->core_reg[i]);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ rockchip_cpuclk_set_pre_muxs(cpuclk, rate);
|
||||
+
|
||||
/* select alternate parent */
|
||||
if (reg_data->mux_core_reg)
|
||||
writel(HIWORD_UPDATE(reg_data->mux_core_alt,
|
||||
@@ -219,6 +258,8 @@ static int rockchip_cpuclk_post_rate_cha
|
||||
reg_data->mux_core_shift),
|
||||
cpuclk->reg_base + reg_data->core_reg[0]);
|
||||
|
||||
+ rockchip_cpuclk_set_post_muxs(cpuclk, rate);
|
||||
+
|
||||
/* remove dividers */
|
||||
for (i = 0; i < reg_data->num_cores; i++) {
|
||||
writel(HIWORD_UPDATE(0, reg_data->div_core_mask[i],
|
||||
--- a/drivers/clk/rockchip/clk.h
|
||||
+++ b/drivers/clk/rockchip/clk.h
|
||||
@@ -399,6 +399,8 @@ struct rockchip_cpuclk_clksel {
|
||||
struct rockchip_cpuclk_rate_table {
|
||||
unsigned long prate;
|
||||
struct rockchip_cpuclk_clksel divs[ROCKCHIP_CPUCLK_NUM_DIVIDERS];
|
||||
+ struct rockchip_cpuclk_clksel pre_muxs[ROCKCHIP_CPUCLK_NUM_DIVIDERS];
|
||||
+ struct rockchip_cpuclk_clksel post_muxs[ROCKCHIP_CPUCLK_NUM_DIVIDERS];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1,72 +0,0 @@
|
||||
From ff94c8660dac444081f2f650fae36a283c55b117 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Tue, 18 Oct 2022 17:14:05 +0200
|
||||
Subject: [PATCH] clk: rockchip: simplify rockchip_clk_add_lookup
|
||||
|
||||
rockchip_clk_add_lookup is only called from within the file,
|
||||
so it can be made static. The additional checks are removed
|
||||
with the following reasoning:
|
||||
|
||||
1. The data structure is initialized by rockchip_clk_init(),
|
||||
which is called by all rockchip platforms before the clocks
|
||||
are registered. Not doing so would result in an incomplete
|
||||
clock tree at the moment, which is a fatal error. In other
|
||||
parts of the kernel these kind of checks are usually
|
||||
omitted, so this was done here. The alternative is adding
|
||||
a pr_err to inform the kernel programmer adding a new platform
|
||||
about his incorrect code. Apart from that we are also not
|
||||
checking if the clock id is within the array boundings.
|
||||
|
||||
2. While not used so far by any rockchip platform, 0 is a valid
|
||||
clock identifier. To align rockchip closer to other ARM
|
||||
platforms we will start using it with rk3588.
|
||||
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20221018151407.63395-8-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk.c | 14 ++++++--------
|
||||
drivers/clk/rockchip/clk.h | 2 --
|
||||
2 files changed, 6 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk.c
|
||||
+++ b/drivers/clk/rockchip/clk.c
|
||||
@@ -198,6 +198,12 @@ static void rockchip_fractional_approxim
|
||||
clk_fractional_divider_general_approximation(hw, rate, parent_rate, m, n);
|
||||
}
|
||||
|
||||
+static void rockchip_clk_add_lookup(struct rockchip_clk_provider *ctx,
|
||||
+ struct clk *clk, unsigned int id)
|
||||
+{
|
||||
+ ctx->clk_data.clks[id] = clk;
|
||||
+}
|
||||
+
|
||||
static struct clk *rockchip_clk_register_frac_branch(
|
||||
struct rockchip_clk_provider *ctx, const char *name,
|
||||
const char *const *parent_names, u8 num_parents,
|
||||
@@ -401,14 +407,6 @@ void rockchip_clk_of_add_provider(struct
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rockchip_clk_of_add_provider);
|
||||
|
||||
-void rockchip_clk_add_lookup(struct rockchip_clk_provider *ctx,
|
||||
- struct clk *clk, unsigned int id)
|
||||
-{
|
||||
- if (ctx->clk_data.clks && id)
|
||||
- ctx->clk_data.clks[id] = clk;
|
||||
-}
|
||||
-EXPORT_SYMBOL_GPL(rockchip_clk_add_lookup);
|
||||
-
|
||||
void rockchip_clk_register_plls(struct rockchip_clk_provider *ctx,
|
||||
struct rockchip_pll_clock *list,
|
||||
unsigned int nr_pll, int grf_lock_offset)
|
||||
--- a/drivers/clk/rockchip/clk.h
|
||||
+++ b/drivers/clk/rockchip/clk.h
|
||||
@@ -928,8 +928,6 @@ struct rockchip_clk_provider *rockchip_c
|
||||
void __iomem *base, unsigned long nr_clks);
|
||||
void rockchip_clk_of_add_provider(struct device_node *np,
|
||||
struct rockchip_clk_provider *ctx);
|
||||
-void rockchip_clk_add_lookup(struct rockchip_clk_provider *ctx,
|
||||
- struct clk *clk, unsigned int id);
|
||||
void rockchip_clk_register_branches(struct rockchip_clk_provider *ctx,
|
||||
struct rockchip_clk_branch *list,
|
||||
unsigned int nr_clk);
|
||||
@@ -1,130 +0,0 @@
|
||||
From ada8f95ba04e8fe07289b7de157ae99bb96bc8cb Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Tue, 18 Oct 2022 17:14:06 +0200
|
||||
Subject: [PATCH] clk: rockchip: add lookup table support
|
||||
|
||||
Add support for mapping reset IDs to register offsets
|
||||
to support gapless continous platform reset IDs.
|
||||
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20221018151407.63395-9-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk.h | 21 +++++++++++++++------
|
||||
drivers/clk/rockchip/softrst.c | 34 +++++++++++++++++++++++++---------
|
||||
2 files changed, 40 insertions(+), 15 deletions(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk.h
|
||||
+++ b/drivers/clk/rockchip/clk.h
|
||||
@@ -958,15 +958,24 @@ struct clk *rockchip_clk_register_halfdi
|
||||
spinlock_t *lock);
|
||||
|
||||
#ifdef CONFIG_RESET_CONTROLLER
|
||||
-void rockchip_register_softrst(struct device_node *np,
|
||||
- unsigned int num_regs,
|
||||
- void __iomem *base, u8 flags);
|
||||
+void rockchip_register_softrst_lut(struct device_node *np,
|
||||
+ const int *lookup_table,
|
||||
+ unsigned int num_regs,
|
||||
+ void __iomem *base, u8 flags);
|
||||
#else
|
||||
-static inline void rockchip_register_softrst(struct device_node *np,
|
||||
- unsigned int num_regs,
|
||||
- void __iomem *base, u8 flags)
|
||||
+static inline void rockchip_register_softrst_lut(struct device_node *np,
|
||||
+ const int *lookup_table,
|
||||
+ unsigned int num_regs,
|
||||
+ void __iomem *base, u8 flags)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
+static inline void rockchip_register_softrst(struct device_node *np,
|
||||
+ unsigned int num_regs,
|
||||
+ void __iomem *base, u8 flags)
|
||||
+{
|
||||
+ return rockchip_register_softrst_lut(np, NULL, num_regs, base, flags);
|
||||
+}
|
||||
+
|
||||
#endif
|
||||
--- a/drivers/clk/rockchip/softrst.c
|
||||
+++ b/drivers/clk/rockchip/softrst.c
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
struct rockchip_softrst {
|
||||
struct reset_controller_dev rcdev;
|
||||
+ const int *lut;
|
||||
void __iomem *reg_base;
|
||||
int num_regs;
|
||||
int num_per_reg;
|
||||
@@ -25,8 +26,13 @@ static int rockchip_softrst_assert(struc
|
||||
struct rockchip_softrst *softrst = container_of(rcdev,
|
||||
struct rockchip_softrst,
|
||||
rcdev);
|
||||
- int bank = id / softrst->num_per_reg;
|
||||
- int offset = id % softrst->num_per_reg;
|
||||
+ int bank, offset;
|
||||
+
|
||||
+ if (softrst->lut)
|
||||
+ id = softrst->lut[id];
|
||||
+
|
||||
+ bank = id / softrst->num_per_reg;
|
||||
+ offset = id % softrst->num_per_reg;
|
||||
|
||||
if (softrst->flags & ROCKCHIP_SOFTRST_HIWORD_MASK) {
|
||||
writel(BIT(offset) | (BIT(offset) << 16),
|
||||
@@ -52,8 +58,13 @@ static int rockchip_softrst_deassert(str
|
||||
struct rockchip_softrst *softrst = container_of(rcdev,
|
||||
struct rockchip_softrst,
|
||||
rcdev);
|
||||
- int bank = id / softrst->num_per_reg;
|
||||
- int offset = id % softrst->num_per_reg;
|
||||
+ int bank, offset;
|
||||
+
|
||||
+ if (softrst->lut)
|
||||
+ id = softrst->lut[id];
|
||||
+
|
||||
+ bank = id / softrst->num_per_reg;
|
||||
+ offset = id % softrst->num_per_reg;
|
||||
|
||||
if (softrst->flags & ROCKCHIP_SOFTRST_HIWORD_MASK) {
|
||||
writel((BIT(offset) << 16), softrst->reg_base + (bank * 4));
|
||||
@@ -77,9 +88,10 @@ static const struct reset_control_ops ro
|
||||
.deassert = rockchip_softrst_deassert,
|
||||
};
|
||||
|
||||
-void rockchip_register_softrst(struct device_node *np,
|
||||
- unsigned int num_regs,
|
||||
- void __iomem *base, u8 flags)
|
||||
+void rockchip_register_softrst_lut(struct device_node *np,
|
||||
+ const int *lookup_table,
|
||||
+ unsigned int num_regs,
|
||||
+ void __iomem *base, u8 flags)
|
||||
{
|
||||
struct rockchip_softrst *softrst;
|
||||
int ret;
|
||||
@@ -91,13 +103,17 @@ void rockchip_register_softrst(struct de
|
||||
spin_lock_init(&softrst->lock);
|
||||
|
||||
softrst->reg_base = base;
|
||||
+ softrst->lut = lookup_table;
|
||||
softrst->flags = flags;
|
||||
softrst->num_regs = num_regs;
|
||||
softrst->num_per_reg = (flags & ROCKCHIP_SOFTRST_HIWORD_MASK) ? 16
|
||||
: 32;
|
||||
|
||||
softrst->rcdev.owner = THIS_MODULE;
|
||||
- softrst->rcdev.nr_resets = num_regs * softrst->num_per_reg;
|
||||
+ if (lookup_table)
|
||||
+ softrst->rcdev.nr_resets = num_regs;
|
||||
+ else
|
||||
+ softrst->rcdev.nr_resets = num_regs * softrst->num_per_reg;
|
||||
softrst->rcdev.ops = &rockchip_softrst_ops;
|
||||
softrst->rcdev.of_node = np;
|
||||
ret = reset_controller_register(&softrst->rcdev);
|
||||
@@ -107,4 +123,4 @@ void rockchip_register_softrst(struct de
|
||||
kfree(softrst);
|
||||
}
|
||||
};
|
||||
-EXPORT_SYMBOL_GPL(rockchip_register_softrst);
|
||||
+EXPORT_SYMBOL_GPL(rockchip_register_softrst_lut);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,30 +0,0 @@
|
||||
From 645a5198ddba6d6b2dea8346ca796064e931a0c3 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
|
||||
Date: Sun, 2 Apr 2023 11:42:06 +0200
|
||||
Subject: [PATCH] clk: rockchip: Remove values for mmask and nmask in struct
|
||||
clk_fractional_divider
|
||||
|
||||
Now that fractional_divider clk computes mmask and nmask when needed, there
|
||||
is no more need to provide them explicitly anymore.
|
||||
|
||||
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
|
||||
Link: https://lore.kernel.org/r/58e1950566e40e2fbb31004baee57a164ca6a390.1680423909.git.christophe.jaillet@wanadoo.fr
|
||||
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
|
||||
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
---
|
||||
drivers/clk/rockchip/clk.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk.c
|
||||
+++ b/drivers/clk/rockchip/clk.c
|
||||
@@ -245,10 +245,8 @@ static struct clk *rockchip_clk_register
|
||||
div->reg = base + muxdiv_offset;
|
||||
div->mshift = 16;
|
||||
div->mwidth = 16;
|
||||
- div->mmask = GENMASK(div->mwidth - 1, 0) << div->mshift;
|
||||
div->nshift = 0;
|
||||
div->nwidth = 16;
|
||||
- div->nmask = GENMASK(div->nwidth - 1, 0) << div->nshift;
|
||||
div->lock = lock;
|
||||
div->approximation = rockchip_fractional_approximation;
|
||||
div_ops = &clk_fractional_divider_ops;
|
||||
@@ -1,148 +0,0 @@
|
||||
From 64042c28c3bb6729df8e2fda89bc7ebbe3790907 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Mon, 3 Apr 2023 21:32:49 +0200
|
||||
Subject: [PATCH] clk: rockchip: rk3588: make gate linked clocks critical
|
||||
|
||||
RK3588 has a couple of hardware blocks called Native Interface Unit
|
||||
(NIU) that gate the clocks to devices behind them. Effectively this
|
||||
means that some clocks require two parent clocks being enabled.
|
||||
Downstream implemented this by using a separate clock driver
|
||||
("clk-link") for them, which enables the second clock using PM
|
||||
framework.
|
||||
|
||||
In the upstream kernel we are currently missing support for the second
|
||||
parent. The information about it is in the GATE_LINK() macro as
|
||||
linkname, but that is not used. Thus the second parent clock is not
|
||||
properly enabled. So far this did not really matter, since these clocks
|
||||
are mostly required for the more advanced IP blocks, that are not yet
|
||||
supported upstream. As this is about to change we need a fix. There
|
||||
are three options available:
|
||||
|
||||
1. Properly implement support for having two parent clocks in the
|
||||
clock framework.
|
||||
2. Mark the affected clocks CLK_IGNORE_UNUSED, so that they are not
|
||||
disabled. This wastes some power, but keeps the hack contained
|
||||
within the clock driver. Going from this to the first solution
|
||||
is easy once that has been implemented.
|
||||
3. Enabling the extra clock in the consumer driver. This leaks some
|
||||
implementation details into DT.
|
||||
|
||||
This patch implements the second option as an intermediate solution
|
||||
until the first one is available. I used an alias for CLK_IS_CRITICAL,
|
||||
so that it's easy to see which clocks are not really critical once
|
||||
the clock framework supports a better way to implement this.
|
||||
|
||||
Tested-by: Vincent Legoll <vincent.legoll@gmail.com>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230403193250.108693-2-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk-rk3588.c | 42 +++++++++++++++++++------------
|
||||
1 file changed, 26 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk-rk3588.c
|
||||
+++ b/drivers/clk/rockchip/clk-rk3588.c
|
||||
@@ -13,15 +13,25 @@
|
||||
#include "clk.h"
|
||||
|
||||
/*
|
||||
- * GATE with additional linked clock. Downstream enables the linked clock
|
||||
- * (via runtime PM) whenever the gate is enabled. The downstream implementation
|
||||
- * does this via separate clock nodes for each of the linked gate clocks,
|
||||
- * which leaks parts of the clock tree into DT. It is unclear why this is
|
||||
- * actually needed and things work without it for simple use cases. Thus
|
||||
- * the linked clock is ignored for now.
|
||||
+ * Recent Rockchip SoCs have a new hardware block called Native Interface
|
||||
+ * Unit (NIU), which gates clocks to devices behind them. These effectively
|
||||
+ * need two parent clocks.
|
||||
+ *
|
||||
+ * Downstream enables the linked clock via runtime PM whenever the gate is
|
||||
+ * enabled. This implementation uses separate clock nodes for each of the
|
||||
+ * linked gate clocks, which leaks parts of the clock tree into DT.
|
||||
+ *
|
||||
+ * The GATE_LINK macro instead takes the second parent via 'linkname', but
|
||||
+ * ignores the information. Once the clock framework is ready to handle it, the
|
||||
+ * information should be passed on here. But since these clocks are required to
|
||||
+ * access multiple relevant IP blocks, such as PCIe or USB, we mark all linked
|
||||
+ * clocks critical until a better solution is available. This will waste some
|
||||
+ * power, but avoids leaking implementation details into DT or hanging the
|
||||
+ * system.
|
||||
*/
|
||||
#define GATE_LINK(_id, cname, pname, linkname, f, o, b, gf) \
|
||||
GATE(_id, cname, pname, f, o, b, gf)
|
||||
+#define RK3588_LINKED_CLK CLK_IS_CRITICAL
|
||||
|
||||
|
||||
#define RK3588_GRF_SOC_STATUS0 0x600
|
||||
@@ -1446,7 +1456,7 @@ static struct rockchip_clk_branch rk3588
|
||||
COMPOSITE_NODIV(HCLK_NVM_ROOT, "hclk_nvm_root", mux_200m_100m_50m_24m_p, 0,
|
||||
RK3588_CLKSEL_CON(77), 0, 2, MFLAGS,
|
||||
RK3588_CLKGATE_CON(31), 0, GFLAGS),
|
||||
- COMPOSITE(ACLK_NVM_ROOT, "aclk_nvm_root", gpll_cpll_p, 0,
|
||||
+ COMPOSITE(ACLK_NVM_ROOT, "aclk_nvm_root", gpll_cpll_p, RK3588_LINKED_CLK,
|
||||
RK3588_CLKSEL_CON(77), 7, 1, MFLAGS, 2, 5, DFLAGS,
|
||||
RK3588_CLKGATE_CON(31), 1, GFLAGS),
|
||||
GATE(ACLK_EMMC, "aclk_emmc", "aclk_nvm_root", 0,
|
||||
@@ -1675,13 +1685,13 @@ static struct rockchip_clk_branch rk3588
|
||||
RK3588_CLKGATE_CON(42), 9, GFLAGS),
|
||||
|
||||
/* vdpu */
|
||||
- COMPOSITE(ACLK_VDPU_ROOT, "aclk_vdpu_root", gpll_cpll_aupll_p, 0,
|
||||
+ COMPOSITE(ACLK_VDPU_ROOT, "aclk_vdpu_root", gpll_cpll_aupll_p, RK3588_LINKED_CLK,
|
||||
RK3588_CLKSEL_CON(98), 5, 2, MFLAGS, 0, 5, DFLAGS,
|
||||
RK3588_CLKGATE_CON(44), 0, GFLAGS),
|
||||
COMPOSITE_NODIV(ACLK_VDPU_LOW_ROOT, "aclk_vdpu_low_root", mux_400m_200m_100m_24m_p, 0,
|
||||
RK3588_CLKSEL_CON(98), 7, 2, MFLAGS,
|
||||
RK3588_CLKGATE_CON(44), 1, GFLAGS),
|
||||
- COMPOSITE_NODIV(HCLK_VDPU_ROOT, "hclk_vdpu_root", mux_200m_100m_50m_24m_p, 0,
|
||||
+ COMPOSITE_NODIV(HCLK_VDPU_ROOT, "hclk_vdpu_root", mux_200m_100m_50m_24m_p, RK3588_LINKED_CLK,
|
||||
RK3588_CLKSEL_CON(98), 9, 2, MFLAGS,
|
||||
RK3588_CLKGATE_CON(44), 2, GFLAGS),
|
||||
COMPOSITE(ACLK_JPEG_DECODER_ROOT, "aclk_jpeg_decoder_root", gpll_cpll_aupll_spll_p, 0,
|
||||
@@ -1732,9 +1742,9 @@ static struct rockchip_clk_branch rk3588
|
||||
COMPOSITE(ACLK_RKVENC0_ROOT, "aclk_rkvenc0_root", gpll_cpll_npll_p, 0,
|
||||
RK3588_CLKSEL_CON(102), 7, 2, MFLAGS, 2, 5, DFLAGS,
|
||||
RK3588_CLKGATE_CON(47), 1, GFLAGS),
|
||||
- GATE(HCLK_RKVENC0, "hclk_rkvenc0", "hclk_rkvenc0_root", 0,
|
||||
+ GATE(HCLK_RKVENC0, "hclk_rkvenc0", "hclk_rkvenc0_root", RK3588_LINKED_CLK,
|
||||
RK3588_CLKGATE_CON(47), 4, GFLAGS),
|
||||
- GATE(ACLK_RKVENC0, "aclk_rkvenc0", "aclk_rkvenc0_root", 0,
|
||||
+ GATE(ACLK_RKVENC0, "aclk_rkvenc0", "aclk_rkvenc0_root", RK3588_LINKED_CLK,
|
||||
RK3588_CLKGATE_CON(47), 5, GFLAGS),
|
||||
COMPOSITE(CLK_RKVENC0_CORE, "clk_rkvenc0_core", gpll_cpll_aupll_npll_p, 0,
|
||||
RK3588_CLKSEL_CON(102), 14, 2, MFLAGS, 9, 5, DFLAGS,
|
||||
@@ -1744,10 +1754,10 @@ static struct rockchip_clk_branch rk3588
|
||||
RK3588_CLKGATE_CON(48), 6, GFLAGS),
|
||||
|
||||
/* vi */
|
||||
- COMPOSITE(ACLK_VI_ROOT, "aclk_vi_root", gpll_cpll_npll_aupll_spll_p, 0,
|
||||
+ COMPOSITE(ACLK_VI_ROOT, "aclk_vi_root", gpll_cpll_npll_aupll_spll_p, RK3588_LINKED_CLK,
|
||||
RK3588_CLKSEL_CON(106), 5, 3, MFLAGS, 0, 5, DFLAGS,
|
||||
RK3588_CLKGATE_CON(49), 0, GFLAGS),
|
||||
- COMPOSITE_NODIV(HCLK_VI_ROOT, "hclk_vi_root", mux_200m_100m_50m_24m_p, 0,
|
||||
+ COMPOSITE_NODIV(HCLK_VI_ROOT, "hclk_vi_root", mux_200m_100m_50m_24m_p, RK3588_LINKED_CLK,
|
||||
RK3588_CLKSEL_CON(106), 8, 2, MFLAGS,
|
||||
RK3588_CLKGATE_CON(49), 1, GFLAGS),
|
||||
COMPOSITE_NODIV(PCLK_VI_ROOT, "pclk_vi_root", mux_100m_50m_24m_p, 0,
|
||||
@@ -1919,10 +1929,10 @@ static struct rockchip_clk_branch rk3588
|
||||
COMPOSITE(ACLK_VOP_ROOT, "aclk_vop_root", gpll_cpll_dmyaupll_npll_spll_p, 0,
|
||||
RK3588_CLKSEL_CON(110), 5, 3, MFLAGS, 0, 5, DFLAGS,
|
||||
RK3588_CLKGATE_CON(52), 0, GFLAGS),
|
||||
- COMPOSITE_NODIV(ACLK_VOP_LOW_ROOT, "aclk_vop_low_root", mux_400m_200m_100m_24m_p, 0,
|
||||
+ COMPOSITE_NODIV(ACLK_VOP_LOW_ROOT, "aclk_vop_low_root", mux_400m_200m_100m_24m_p, RK3588_LINKED_CLK,
|
||||
RK3588_CLKSEL_CON(110), 8, 2, MFLAGS,
|
||||
RK3588_CLKGATE_CON(52), 1, GFLAGS),
|
||||
- COMPOSITE_NODIV(HCLK_VOP_ROOT, "hclk_vop_root", mux_200m_100m_50m_24m_p, 0,
|
||||
+ COMPOSITE_NODIV(HCLK_VOP_ROOT, "hclk_vop_root", mux_200m_100m_50m_24m_p, RK3588_LINKED_CLK,
|
||||
RK3588_CLKSEL_CON(110), 10, 2, MFLAGS,
|
||||
RK3588_CLKGATE_CON(52), 2, GFLAGS),
|
||||
COMPOSITE_NODIV(PCLK_VOP_ROOT, "pclk_vop_root", mux_100m_50m_24m_p, 0,
|
||||
@@ -2425,7 +2435,7 @@ static struct rockchip_clk_branch rk3588
|
||||
|
||||
GATE_LINK(ACLK_ISP1_PRE, "aclk_isp1_pre", "aclk_isp1_root", "aclk_vi_root", 0, RK3588_CLKGATE_CON(26), 6, GFLAGS),
|
||||
GATE_LINK(HCLK_ISP1_PRE, "hclk_isp1_pre", "hclk_isp1_root", "hclk_vi_root", 0, RK3588_CLKGATE_CON(26), 8, GFLAGS),
|
||||
- GATE_LINK(HCLK_NVM, "hclk_nvm", "hclk_nvm_root", "aclk_nvm_root", 0, RK3588_CLKGATE_CON(31), 2, GFLAGS),
|
||||
+ GATE_LINK(HCLK_NVM, "hclk_nvm", "hclk_nvm_root", "aclk_nvm_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(31), 2, GFLAGS),
|
||||
GATE_LINK(ACLK_USB, "aclk_usb", "aclk_usb_root", "aclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(42), 2, GFLAGS),
|
||||
GATE_LINK(HCLK_USB, "hclk_usb", "hclk_usb_root", "hclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(42), 3, GFLAGS),
|
||||
GATE_LINK(ACLK_JPEG_DECODER_PRE, "aclk_jpeg_decoder_pre", "aclk_jpeg_decoder_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(44), 7, GFLAGS),
|
||||
@@ -1,57 +0,0 @@
|
||||
From d54fb4b25a0261bf2f2bb7093fdf11a36718bf25 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Fri, 26 May 2023 19:10:56 +0200
|
||||
Subject: [PATCH] clk: composite: Fix handling of high clock rates
|
||||
|
||||
ULONG_MAX is used by a few drivers to figure out the highest available
|
||||
clock rate via clk_round_rate(clk, ULONG_MAX). Since abs() takes a
|
||||
signed value as input, the current logic effectively calculates with
|
||||
ULONG_MAX = -1, which results in the worst parent clock being chosen
|
||||
instead of the best one.
|
||||
|
||||
For example on Rockchip RK3588 the eMMC driver tries to figure out
|
||||
the highest available clock rate. There are three parent clocks
|
||||
available resulting in the following rate diffs with the existing
|
||||
logic:
|
||||
|
||||
GPLL: abs(18446744073709551615 - 1188000000) = 1188000001
|
||||
CPLL: abs(18446744073709551615 - 1500000000) = 1500000001
|
||||
XIN24M: abs(18446744073709551615 - 24000000) = 24000001
|
||||
|
||||
As a result the clock framework will promote a maximum supported
|
||||
clock rate of 24 MHz, even though 1.5GHz are possible. With the
|
||||
updated logic any casting between signed and unsigned is avoided
|
||||
and the numbers look like this instead:
|
||||
|
||||
GPLL: 18446744073709551615 - 1188000000 = 18446744072521551615
|
||||
CPLL: 18446744073709551615 - 1500000000 = 18446744072209551615
|
||||
XIN24M: 18446744073709551615 - 24000000 = 18446744073685551615
|
||||
|
||||
As a result the parent with the highest acceptable rate is chosen
|
||||
instead of the parent clock with the lowest one.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: 49502408007b ("mmc: sdhci-of-dwcmshc: properly determine max clock on Rockchip")
|
||||
Tested-by: Christopher Obbard <chris.obbard@collabora.com>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230526171057.66876-2-sebastian.reichel@collabora.com
|
||||
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
---
|
||||
drivers/clk/clk-composite.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/clk/clk-composite.c
|
||||
+++ b/drivers/clk/clk-composite.c
|
||||
@@ -119,7 +119,10 @@ static int clk_composite_determine_rate(
|
||||
if (ret)
|
||||
continue;
|
||||
|
||||
- rate_diff = abs(req->rate - tmp_req.rate);
|
||||
+ if (req->rate >= tmp_req.rate)
|
||||
+ rate_diff = req->rate - tmp_req.rate;
|
||||
+ else
|
||||
+ rate_diff = tmp_req.rate - req->rate;
|
||||
|
||||
if (!rate_diff || !req->best_parent_hw
|
||||
|| best_rate_diff > rate_diff) {
|
||||
@@ -1,78 +0,0 @@
|
||||
From 2dc66a5ab2c6fb532fbb16107ee7efcb0effbfa5 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Fri, 26 Jan 2024 19:18:22 +0100
|
||||
Subject: [PATCH] clk: rockchip: rk3588: fix CLK_NR_CLKS usage
|
||||
|
||||
CLK_NR_CLKS is not part of the DT bindings and needs to be removed
|
||||
from it, just like it recently happened for other platforms. This
|
||||
takes care of it by introducing a new function identifying the
|
||||
maximum used clock ID at runtime.
|
||||
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20240126182919.48402-2-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk-rk3588.c | 5 ++++-
|
||||
drivers/clk/rockchip/clk.c | 17 +++++++++++++++++
|
||||
drivers/clk/rockchip/clk.h | 2 ++
|
||||
3 files changed, 23 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk-rk3588.c
|
||||
+++ b/drivers/clk/rockchip/clk-rk3588.c
|
||||
@@ -2458,15 +2458,18 @@ static struct rockchip_clk_branch rk3588
|
||||
static void __init rk3588_clk_init(struct device_node *np)
|
||||
{
|
||||
struct rockchip_clk_provider *ctx;
|
||||
+ unsigned long clk_nr_clks;
|
||||
void __iomem *reg_base;
|
||||
|
||||
+ clk_nr_clks = rockchip_clk_find_max_clk_id(rk3588_clk_branches,
|
||||
+ ARRAY_SIZE(rk3588_clk_branches)) + 1;
|
||||
reg_base = of_iomap(np, 0);
|
||||
if (!reg_base) {
|
||||
pr_err("%s: could not map cru region\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
- ctx = rockchip_clk_init(np, reg_base, CLK_NR_CLKS);
|
||||
+ ctx = rockchip_clk_init(np, reg_base, clk_nr_clks);
|
||||
if (IS_ERR(ctx)) {
|
||||
pr_err("%s: rockchip clk init failed\n", __func__);
|
||||
iounmap(reg_base);
|
||||
--- a/drivers/clk/rockchip/clk.c
|
||||
+++ b/drivers/clk/rockchip/clk.c
|
||||
@@ -430,6 +430,23 @@ void rockchip_clk_register_plls(struct r
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rockchip_clk_register_plls);
|
||||
|
||||
+unsigned long rockchip_clk_find_max_clk_id(struct rockchip_clk_branch *list,
|
||||
+ unsigned int nr_clk)
|
||||
+{
|
||||
+ unsigned long max = 0;
|
||||
+ unsigned int idx;
|
||||
+
|
||||
+ for (idx = 0; idx < nr_clk; idx++, list++) {
|
||||
+ if (list->id > max)
|
||||
+ max = list->id;
|
||||
+ if (list->child && list->child->id > max)
|
||||
+ max = list->id;
|
||||
+ }
|
||||
+
|
||||
+ return max;
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(rockchip_clk_find_max_clk_id);
|
||||
+
|
||||
void rockchip_clk_register_branches(struct rockchip_clk_provider *ctx,
|
||||
struct rockchip_clk_branch *list,
|
||||
unsigned int nr_clk)
|
||||
--- a/drivers/clk/rockchip/clk.h
|
||||
+++ b/drivers/clk/rockchip/clk.h
|
||||
@@ -973,6 +973,8 @@ struct rockchip_clk_provider *rockchip_c
|
||||
void __iomem *base, unsigned long nr_clks);
|
||||
void rockchip_clk_of_add_provider(struct device_node *np,
|
||||
struct rockchip_clk_provider *ctx);
|
||||
+unsigned long rockchip_clk_find_max_clk_id(struct rockchip_clk_branch *list,
|
||||
+ unsigned int nr_clk);
|
||||
void rockchip_clk_register_branches(struct rockchip_clk_provider *ctx,
|
||||
struct rockchip_clk_branch *list,
|
||||
unsigned int nr_clk);
|
||||
@@ -1,27 +0,0 @@
|
||||
From 11a29dc2e41ead2be78cfa9d532edf924b461acc Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Fri, 26 Jan 2024 19:18:23 +0100
|
||||
Subject: [PATCH] dt-bindings: clock: rk3588: drop CLK_NR_CLKS
|
||||
|
||||
CLK_NR_CLKS should not be part of the binding. Let's drop it, since
|
||||
the kernel code no longer uses it either.
|
||||
|
||||
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20240126182919.48402-3-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
include/dt-bindings/clock/rockchip,rk3588-cru.h | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
--- a/include/dt-bindings/clock/rockchip,rk3588-cru.h
|
||||
+++ b/include/dt-bindings/clock/rockchip,rk3588-cru.h
|
||||
@@ -734,8 +734,6 @@
|
||||
#define PCLK_AV1_PRE 719
|
||||
#define HCLK_SDIO_PRE 720
|
||||
|
||||
-#define CLK_NR_CLKS (HCLK_SDIO_PRE + 1)
|
||||
-
|
||||
/* scmi-clocks indices */
|
||||
|
||||
#define SCMI_CLK_CPUL 0
|
||||
@@ -1,26 +0,0 @@
|
||||
From c81798cf9dd2f324934585b2b52a0398caefb88e Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Fri, 26 Jan 2024 19:18:24 +0100
|
||||
Subject: [PATCH] dt-bindings: clock: rk3588: add missing PCLK_VO1GRF
|
||||
|
||||
Add PCLK_VO1GRF to complement PCLK_VO0GRF. This will be needed
|
||||
for HDMI support.
|
||||
|
||||
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20240126182919.48402-4-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
include/dt-bindings/clock/rockchip,rk3588-cru.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/include/dt-bindings/clock/rockchip,rk3588-cru.h
|
||||
+++ b/include/dt-bindings/clock/rockchip,rk3588-cru.h
|
||||
@@ -733,6 +733,7 @@
|
||||
#define ACLK_AV1_PRE 718
|
||||
#define PCLK_AV1_PRE 719
|
||||
#define HCLK_SDIO_PRE 720
|
||||
+#define PCLK_VO1GRF 721
|
||||
|
||||
/* scmi-clocks indices */
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
From 326be62eaf2e89767b7b9223f88eaf3c041b98d2 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Fri, 26 Jan 2024 19:18:25 +0100
|
||||
Subject: [PATCH] clk: rockchip: rk3588: fix pclk_vo0grf and pclk_vo1grf
|
||||
|
||||
Currently pclk_vo1grf is not exposed, but it should be referenced
|
||||
from the vo1_grf syscon, which needs it enabled. That syscon is
|
||||
required for HDMI RX and TX functionality among other things.
|
||||
|
||||
Apart from that pclk_vo0grf and pclk_vo1grf are both linked gates
|
||||
and need the VO's hclk enabled in addition to their parent clock.
|
||||
|
||||
No Fixes tag has been added, since the logic requiring these clocks
|
||||
is not yet upstream anyways.
|
||||
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20240126182919.48402-5-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk-rk3588.c | 10 ++++------
|
||||
1 file changed, 4 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk-rk3588.c
|
||||
+++ b/drivers/clk/rockchip/clk-rk3588.c
|
||||
@@ -1851,8 +1851,6 @@ static struct rockchip_clk_branch rk3588
|
||||
RK3588_CLKGATE_CON(56), 0, GFLAGS),
|
||||
GATE(PCLK_TRNG0, "pclk_trng0", "pclk_vo0_root", 0,
|
||||
RK3588_CLKGATE_CON(56), 1, GFLAGS),
|
||||
- GATE(PCLK_VO0GRF, "pclk_vo0grf", "pclk_vo0_root", CLK_IGNORE_UNUSED,
|
||||
- RK3588_CLKGATE_CON(55), 10, GFLAGS),
|
||||
COMPOSITE(CLK_I2S4_8CH_TX_SRC, "clk_i2s4_8ch_tx_src", gpll_aupll_p, 0,
|
||||
RK3588_CLKSEL_CON(118), 5, 1, MFLAGS, 0, 5, DFLAGS,
|
||||
RK3588_CLKGATE_CON(56), 11, GFLAGS),
|
||||
@@ -1998,8 +1996,6 @@ static struct rockchip_clk_branch rk3588
|
||||
RK3588_CLKGATE_CON(60), 9, GFLAGS),
|
||||
GATE(PCLK_TRNG1, "pclk_trng1", "pclk_vo1_root", 0,
|
||||
RK3588_CLKGATE_CON(60), 10, GFLAGS),
|
||||
- GATE(0, "pclk_vo1grf", "pclk_vo1_root", CLK_IGNORE_UNUSED,
|
||||
- RK3588_CLKGATE_CON(59), 12, GFLAGS),
|
||||
GATE(PCLK_S_EDP0, "pclk_s_edp0", "pclk_vo1_s_root", 0,
|
||||
RK3588_CLKGATE_CON(59), 14, GFLAGS),
|
||||
GATE(PCLK_S_EDP1, "pclk_s_edp1", "pclk_vo1_s_root", 0,
|
||||
@@ -2447,12 +2443,14 @@ static struct rockchip_clk_branch rk3588
|
||||
GATE_LINK(HCLK_RKVDEC1_PRE, "hclk_rkvdec1_pre", "hclk_rkvdec1_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(41), 4, GFLAGS),
|
||||
GATE_LINK(ACLK_RKVDEC1_PRE, "aclk_rkvdec1_pre", "aclk_rkvdec1_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(41), 5, GFLAGS),
|
||||
GATE_LINK(ACLK_HDCP0_PRE, "aclk_hdcp0_pre", "aclk_vo0_root", "aclk_vop_low_root", 0, RK3588_CLKGATE_CON(55), 9, GFLAGS),
|
||||
- GATE_LINK(HCLK_VO0, "hclk_vo0", "hclk_vo0_root", "hclk_vop_root", 0, RK3588_CLKGATE_CON(55), 5, GFLAGS),
|
||||
+ GATE_LINK(HCLK_VO0, "hclk_vo0", "hclk_vo0_root", "hclk_vop_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(55), 5, GFLAGS),
|
||||
GATE_LINK(ACLK_HDCP1_PRE, "aclk_hdcp1_pre", "aclk_hdcp1_root", "aclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(59), 6, GFLAGS),
|
||||
- GATE_LINK(HCLK_VO1, "hclk_vo1", "hclk_vo1_root", "hclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(59), 9, GFLAGS),
|
||||
+ GATE_LINK(HCLK_VO1, "hclk_vo1", "hclk_vo1_root", "hclk_vo1usb_top_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(59), 9, GFLAGS),
|
||||
GATE_LINK(ACLK_AV1_PRE, "aclk_av1_pre", "aclk_av1_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(68), 1, GFLAGS),
|
||||
GATE_LINK(PCLK_AV1_PRE, "pclk_av1_pre", "pclk_av1_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(68), 4, GFLAGS),
|
||||
GATE_LINK(HCLK_SDIO_PRE, "hclk_sdio_pre", "hclk_sdio_root", "hclk_nvm", 0, RK3588_CLKGATE_CON(75), 1, GFLAGS),
|
||||
+ GATE_LINK(PCLK_VO0GRF, "pclk_vo0grf", "pclk_vo0_root", "hclk_vo0", CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(55), 10, GFLAGS),
|
||||
+ GATE_LINK(PCLK_VO1GRF, "pclk_vo1grf", "pclk_vo1_root", "hclk_vo1", CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(59), 12, GFLAGS),
|
||||
};
|
||||
|
||||
static void __init rk3588_clk_init(struct device_node *np)
|
||||
@@ -1,26 +0,0 @@
|
||||
From 2a6e4710672242281347103b64e01693aa823a29 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Fri, 26 Jan 2024 19:18:26 +0100
|
||||
Subject: [PATCH] clk: rockchip: rk3588: fix indent
|
||||
|
||||
pclk_mailbox2 is the only RK3588 clock indented with one tab instead of
|
||||
two tabs. Let's fix this.
|
||||
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20240126182919.48402-6-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk-rk3588.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk-rk3588.c
|
||||
+++ b/drivers/clk/rockchip/clk-rk3588.c
|
||||
@@ -1004,7 +1004,7 @@ static struct rockchip_clk_branch rk3588
|
||||
GATE(PCLK_MAILBOX1, "pclk_mailbox1", "pclk_top_root", 0,
|
||||
RK3588_CLKGATE_CON(16), 12, GFLAGS),
|
||||
GATE(PCLK_MAILBOX2, "pclk_mailbox2", "pclk_top_root", 0,
|
||||
- RK3588_CLKGATE_CON(16), 13, GFLAGS),
|
||||
+ RK3588_CLKGATE_CON(16), 13, GFLAGS),
|
||||
GATE(PCLK_PMU2, "pclk_pmu2", "pclk_top_root", CLK_IS_CRITICAL,
|
||||
RK3588_CLKGATE_CON(19), 3, GFLAGS),
|
||||
GATE(PCLK_PMUCM0_INTMUX, "pclk_pmucm0_intmux", "pclk_top_root", CLK_IS_CRITICAL,
|
||||
@@ -1,78 +0,0 @@
|
||||
From dae3e57000fb2d6f491e3ee2956f5918326d6b72 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Fri, 26 Jan 2024 19:18:27 +0100
|
||||
Subject: [PATCH] clk: rockchip: rk3588: use linked clock ID for GATE_LINK
|
||||
|
||||
In preparation for properly supporting GATE_LINK switch the unused
|
||||
linked clock argument from the clock's name to its ID. This allows
|
||||
easy and fast lookup of the 'struct clk'.
|
||||
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20240126182919.48402-7-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk-rk3588.c | 46 +++++++++++++++----------------
|
||||
1 file changed, 23 insertions(+), 23 deletions(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk-rk3588.c
|
||||
+++ b/drivers/clk/rockchip/clk-rk3588.c
|
||||
@@ -29,7 +29,7 @@
|
||||
* power, but avoids leaking implementation details into DT or hanging the
|
||||
* system.
|
||||
*/
|
||||
-#define GATE_LINK(_id, cname, pname, linkname, f, o, b, gf) \
|
||||
+#define GATE_LINK(_id, cname, pname, linkedclk, f, o, b, gf) \
|
||||
GATE(_id, cname, pname, f, o, b, gf)
|
||||
#define RK3588_LINKED_CLK CLK_IS_CRITICAL
|
||||
|
||||
@@ -2429,28 +2429,28 @@ static struct rockchip_clk_branch rk3588
|
||||
GATE(ACLK_AV1, "aclk_av1", "aclk_av1_pre", 0,
|
||||
RK3588_CLKGATE_CON(68), 2, GFLAGS),
|
||||
|
||||
- GATE_LINK(ACLK_ISP1_PRE, "aclk_isp1_pre", "aclk_isp1_root", "aclk_vi_root", 0, RK3588_CLKGATE_CON(26), 6, GFLAGS),
|
||||
- GATE_LINK(HCLK_ISP1_PRE, "hclk_isp1_pre", "hclk_isp1_root", "hclk_vi_root", 0, RK3588_CLKGATE_CON(26), 8, GFLAGS),
|
||||
- GATE_LINK(HCLK_NVM, "hclk_nvm", "hclk_nvm_root", "aclk_nvm_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(31), 2, GFLAGS),
|
||||
- GATE_LINK(ACLK_USB, "aclk_usb", "aclk_usb_root", "aclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(42), 2, GFLAGS),
|
||||
- GATE_LINK(HCLK_USB, "hclk_usb", "hclk_usb_root", "hclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(42), 3, GFLAGS),
|
||||
- GATE_LINK(ACLK_JPEG_DECODER_PRE, "aclk_jpeg_decoder_pre", "aclk_jpeg_decoder_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(44), 7, GFLAGS),
|
||||
- GATE_LINK(ACLK_VDPU_LOW_PRE, "aclk_vdpu_low_pre", "aclk_vdpu_low_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(44), 5, GFLAGS),
|
||||
- GATE_LINK(ACLK_RKVENC1_PRE, "aclk_rkvenc1_pre", "aclk_rkvenc1_root", "aclk_rkvenc0", 0, RK3588_CLKGATE_CON(48), 3, GFLAGS),
|
||||
- GATE_LINK(HCLK_RKVENC1_PRE, "hclk_rkvenc1_pre", "hclk_rkvenc1_root", "hclk_rkvenc0", 0, RK3588_CLKGATE_CON(48), 2, GFLAGS),
|
||||
- GATE_LINK(HCLK_RKVDEC0_PRE, "hclk_rkvdec0_pre", "hclk_rkvdec0_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(40), 5, GFLAGS),
|
||||
- GATE_LINK(ACLK_RKVDEC0_PRE, "aclk_rkvdec0_pre", "aclk_rkvdec0_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(40), 6, GFLAGS),
|
||||
- GATE_LINK(HCLK_RKVDEC1_PRE, "hclk_rkvdec1_pre", "hclk_rkvdec1_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(41), 4, GFLAGS),
|
||||
- GATE_LINK(ACLK_RKVDEC1_PRE, "aclk_rkvdec1_pre", "aclk_rkvdec1_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(41), 5, GFLAGS),
|
||||
- GATE_LINK(ACLK_HDCP0_PRE, "aclk_hdcp0_pre", "aclk_vo0_root", "aclk_vop_low_root", 0, RK3588_CLKGATE_CON(55), 9, GFLAGS),
|
||||
- GATE_LINK(HCLK_VO0, "hclk_vo0", "hclk_vo0_root", "hclk_vop_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(55), 5, GFLAGS),
|
||||
- GATE_LINK(ACLK_HDCP1_PRE, "aclk_hdcp1_pre", "aclk_hdcp1_root", "aclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(59), 6, GFLAGS),
|
||||
- GATE_LINK(HCLK_VO1, "hclk_vo1", "hclk_vo1_root", "hclk_vo1usb_top_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(59), 9, GFLAGS),
|
||||
- GATE_LINK(ACLK_AV1_PRE, "aclk_av1_pre", "aclk_av1_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(68), 1, GFLAGS),
|
||||
- GATE_LINK(PCLK_AV1_PRE, "pclk_av1_pre", "pclk_av1_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(68), 4, GFLAGS),
|
||||
- GATE_LINK(HCLK_SDIO_PRE, "hclk_sdio_pre", "hclk_sdio_root", "hclk_nvm", 0, RK3588_CLKGATE_CON(75), 1, GFLAGS),
|
||||
- GATE_LINK(PCLK_VO0GRF, "pclk_vo0grf", "pclk_vo0_root", "hclk_vo0", CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(55), 10, GFLAGS),
|
||||
- GATE_LINK(PCLK_VO1GRF, "pclk_vo1grf", "pclk_vo1_root", "hclk_vo1", CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(59), 12, GFLAGS),
|
||||
+ GATE_LINK(ACLK_ISP1_PRE, "aclk_isp1_pre", "aclk_isp1_root", ACLK_VI_ROOT, 0, RK3588_CLKGATE_CON(26), 6, GFLAGS),
|
||||
+ GATE_LINK(HCLK_ISP1_PRE, "hclk_isp1_pre", "hclk_isp1_root", HCLK_VI_ROOT, 0, RK3588_CLKGATE_CON(26), 8, GFLAGS),
|
||||
+ GATE_LINK(HCLK_NVM, "hclk_nvm", "hclk_nvm_root", ACLK_NVM_ROOT, RK3588_LINKED_CLK, RK3588_CLKGATE_CON(31), 2, GFLAGS),
|
||||
+ GATE_LINK(ACLK_USB, "aclk_usb", "aclk_usb_root", ACLK_VO1USB_TOP_ROOT, 0, RK3588_CLKGATE_CON(42), 2, GFLAGS),
|
||||
+ GATE_LINK(HCLK_USB, "hclk_usb", "hclk_usb_root", HCLK_VO1USB_TOP_ROOT, 0, RK3588_CLKGATE_CON(42), 3, GFLAGS),
|
||||
+ GATE_LINK(ACLK_JPEG_DECODER_PRE, "aclk_jpeg_decoder_pre", "aclk_jpeg_decoder_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(44), 7, GFLAGS),
|
||||
+ GATE_LINK(ACLK_VDPU_LOW_PRE, "aclk_vdpu_low_pre", "aclk_vdpu_low_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(44), 5, GFLAGS),
|
||||
+ GATE_LINK(ACLK_RKVENC1_PRE, "aclk_rkvenc1_pre", "aclk_rkvenc1_root", ACLK_RKVENC0, 0, RK3588_CLKGATE_CON(48), 3, GFLAGS),
|
||||
+ GATE_LINK(HCLK_RKVENC1_PRE, "hclk_rkvenc1_pre", "hclk_rkvenc1_root", HCLK_RKVENC0, 0, RK3588_CLKGATE_CON(48), 2, GFLAGS),
|
||||
+ GATE_LINK(HCLK_RKVDEC0_PRE, "hclk_rkvdec0_pre", "hclk_rkvdec0_root", HCLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(40), 5, GFLAGS),
|
||||
+ GATE_LINK(ACLK_RKVDEC0_PRE, "aclk_rkvdec0_pre", "aclk_rkvdec0_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(40), 6, GFLAGS),
|
||||
+ GATE_LINK(HCLK_RKVDEC1_PRE, "hclk_rkvdec1_pre", "hclk_rkvdec1_root", HCLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(41), 4, GFLAGS),
|
||||
+ GATE_LINK(ACLK_RKVDEC1_PRE, "aclk_rkvdec1_pre", "aclk_rkvdec1_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(41), 5, GFLAGS),
|
||||
+ GATE_LINK(ACLK_HDCP0_PRE, "aclk_hdcp0_pre", "aclk_vo0_root", ACLK_VOP_LOW_ROOT, 0, RK3588_CLKGATE_CON(55), 9, GFLAGS),
|
||||
+ GATE_LINK(HCLK_VO0, "hclk_vo0", "hclk_vo0_root", HCLK_VOP_ROOT, RK3588_LINKED_CLK, RK3588_CLKGATE_CON(55), 5, GFLAGS),
|
||||
+ GATE_LINK(ACLK_HDCP1_PRE, "aclk_hdcp1_pre", "aclk_hdcp1_root", ACLK_VO1USB_TOP_ROOT, 0, RK3588_CLKGATE_CON(59), 6, GFLAGS),
|
||||
+ GATE_LINK(HCLK_VO1, "hclk_vo1", "hclk_vo1_root", HCLK_VO1USB_TOP_ROOT, RK3588_LINKED_CLK, RK3588_CLKGATE_CON(59), 9, GFLAGS),
|
||||
+ GATE_LINK(ACLK_AV1_PRE, "aclk_av1_pre", "aclk_av1_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(68), 1, GFLAGS),
|
||||
+ GATE_LINK(PCLK_AV1_PRE, "pclk_av1_pre", "pclk_av1_root", HCLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(68), 4, GFLAGS),
|
||||
+ GATE_LINK(HCLK_SDIO_PRE, "hclk_sdio_pre", "hclk_sdio_root", HCLK_NVM, 0, RK3588_CLKGATE_CON(75), 1, GFLAGS),
|
||||
+ GATE_LINK(PCLK_VO0GRF, "pclk_vo0grf", "pclk_vo0_root", HCLK_VO0, CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(55), 10, GFLAGS),
|
||||
+ GATE_LINK(PCLK_VO1GRF, "pclk_vo1grf", "pclk_vo1_root", HCLK_VO1, CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(59), 12, GFLAGS),
|
||||
};
|
||||
|
||||
static void __init rk3588_clk_init(struct device_node *np)
|
||||
@@ -1,39 +0,0 @@
|
||||
From 8416360935b9b632a517503eac6e320cbd5f310a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <u.kleine-koenig@pengutronix.de>
|
||||
Date: Fri, 18 Nov 2022 23:43:07 +0100
|
||||
Subject: [PATCH] mfd: rk808: Convert to i2c's .probe_new()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The probe function doesn't make use of the i2c_device_id * parameter so it
|
||||
can be trivially converted.
|
||||
|
||||
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20221118224540.619276-454-uwe@kleine-koenig.org
|
||||
---
|
||||
drivers/mfd/rk808.c | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/mfd/rk808.c
|
||||
+++ b/drivers/mfd/rk808.c
|
||||
@@ -640,8 +640,7 @@ static const struct of_device_id rk808_o
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, rk808_of_match);
|
||||
|
||||
-static int rk808_probe(struct i2c_client *client,
|
||||
- const struct i2c_device_id *id)
|
||||
+static int rk808_probe(struct i2c_client *client)
|
||||
{
|
||||
struct device_node *np = client->dev.of_node;
|
||||
struct rk808 *rk808;
|
||||
@@ -861,7 +860,7 @@ static struct i2c_driver rk808_i2c_drive
|
||||
.of_match_table = rk808_of_match,
|
||||
.pm = &rk8xx_pm_ops,
|
||||
},
|
||||
- .probe = rk808_probe,
|
||||
+ .probe_new = rk808_probe,
|
||||
.remove = rk808_remove,
|
||||
.shutdown = rk8xx_shutdown,
|
||||
};
|
||||
@@ -1,96 +0,0 @@
|
||||
From 3633daacea2e54bf991d2f6b871efe9f83a0cac8 Mon Sep 17 00:00:00 2001
|
||||
From: Neil Armstrong <neil.armstrong@linaro.org>
|
||||
Date: Mon, 31 Oct 2022 17:05:07 +0100
|
||||
Subject: [PATCH] mfd: rk808: Permit having multiple PMIC instances
|
||||
|
||||
This set each cells id to PLATFORM_DEVID_NONE to allow multiple
|
||||
instances of each cell in case multiple PMICs handled by the rk808
|
||||
driver are probed.
|
||||
|
||||
This fixes probing a RK818 and a RK817 on the Odroid Go Ultra
|
||||
devices.
|
||||
|
||||
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20221025-rk808-multi-v2-0-d292d51ada81@linaro.org
|
||||
---
|
||||
drivers/mfd/rk808.c | 26 ++++++++++++++++----------
|
||||
1 file changed, 16 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/drivers/mfd/rk808.c
|
||||
+++ b/drivers/mfd/rk808.c
|
||||
@@ -137,58 +137,64 @@ static const struct resource rk817_charg
|
||||
};
|
||||
|
||||
static const struct mfd_cell rk805s[] = {
|
||||
- { .name = "rk808-clkout", },
|
||||
- { .name = "rk808-regulator", },
|
||||
- { .name = "rk805-pinctrl", },
|
||||
+ { .name = "rk808-clkout", .id = PLATFORM_DEVID_NONE, },
|
||||
+ { .name = "rk808-regulator", .id = PLATFORM_DEVID_NONE, },
|
||||
+ { .name = "rk805-pinctrl", .id = PLATFORM_DEVID_NONE, },
|
||||
{
|
||||
.name = "rk808-rtc",
|
||||
.num_resources = ARRAY_SIZE(rtc_resources),
|
||||
.resources = &rtc_resources[0],
|
||||
+ .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
{ .name = "rk805-pwrkey",
|
||||
.num_resources = ARRAY_SIZE(rk805_key_resources),
|
||||
.resources = &rk805_key_resources[0],
|
||||
+ .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct mfd_cell rk808s[] = {
|
||||
- { .name = "rk808-clkout", },
|
||||
- { .name = "rk808-regulator", },
|
||||
+ { .name = "rk808-clkout", .id = PLATFORM_DEVID_NONE, },
|
||||
+ { .name = "rk808-regulator", .id = PLATFORM_DEVID_NONE, },
|
||||
{
|
||||
.name = "rk808-rtc",
|
||||
.num_resources = ARRAY_SIZE(rtc_resources),
|
||||
.resources = rtc_resources,
|
||||
+ .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct mfd_cell rk817s[] = {
|
||||
- { .name = "rk808-clkout",},
|
||||
- { .name = "rk808-regulator",},
|
||||
+ { .name = "rk808-clkout", .id = PLATFORM_DEVID_NONE, },
|
||||
+ { .name = "rk808-regulator", .id = PLATFORM_DEVID_NONE, },
|
||||
{
|
||||
.name = "rk805-pwrkey",
|
||||
.num_resources = ARRAY_SIZE(rk817_pwrkey_resources),
|
||||
.resources = &rk817_pwrkey_resources[0],
|
||||
+ .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
{
|
||||
.name = "rk808-rtc",
|
||||
.num_resources = ARRAY_SIZE(rk817_rtc_resources),
|
||||
.resources = &rk817_rtc_resources[0],
|
||||
+ .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
- { .name = "rk817-codec",},
|
||||
+ { .name = "rk817-codec", .id = PLATFORM_DEVID_NONE, },
|
||||
{
|
||||
.name = "rk817-charger",
|
||||
.num_resources = ARRAY_SIZE(rk817_charger_resources),
|
||||
.resources = &rk817_charger_resources[0],
|
||||
+ .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct mfd_cell rk818s[] = {
|
||||
- { .name = "rk808-clkout", },
|
||||
- { .name = "rk808-regulator", },
|
||||
+ { .name = "rk808-regulator", .id = PLATFORM_DEVID_NONE, },
|
||||
{
|
||||
.name = "rk808-rtc",
|
||||
.num_resources = ARRAY_SIZE(rtc_resources),
|
||||
.resources = rtc_resources,
|
||||
+ .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
From 5d69b181cd0db10dc8327d28ce837b3623cd531a Mon Sep 17 00:00:00 2001
|
||||
From: Tom Fitzhenry <tom@tom-fitzhenry.me.uk>
|
||||
Date: Mon, 2 Jan 2023 22:11:47 +1100
|
||||
Subject: [PATCH] mfd: rk808: Re-add rk808-clkout to RK818
|
||||
|
||||
Fixes RK818 (e.g. on Pinephone Pro) to register its clock, without which
|
||||
dependent devices (e.g. wifi/BT, via sdio-wifi-pwrseq) fail to probe.
|
||||
|
||||
This line was removed in commit 3633daacea2e
|
||||
("mfd: rk808: Permit having multiple PMIC instances"), but only from RK818.
|
||||
|
||||
Fixes: 3633daacea2e ("mfd: rk808: Permit having multiple PMIC instances")
|
||||
Signed-off-by: Tom Fitzhenry <tom@tom-fitzhenry.me.uk>
|
||||
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
|
||||
Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20230102111147.2580861-1-tom@tom-fitzhenry.me.uk
|
||||
---
|
||||
drivers/mfd/rk808.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/mfd/rk808.c
|
||||
+++ b/drivers/mfd/rk808.c
|
||||
@@ -189,6 +189,7 @@ static const struct mfd_cell rk817s[] =
|
||||
};
|
||||
|
||||
static const struct mfd_cell rk818s[] = {
|
||||
+ { .name = "rk808-clkout", .id = PLATFORM_DEVID_NONE, },
|
||||
{ .name = "rk808-regulator", .id = PLATFORM_DEVID_NONE, },
|
||||
{
|
||||
.name = "rk808-rtc",
|
||||
@@ -1,215 +0,0 @@
|
||||
From 2e830ccc21eb67a4c2490279d907e5e9199e5156 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 20 Oct 2022 22:42:41 +0200
|
||||
Subject: [PATCH] rtc: rk808: reduce 'struct rk808' usage
|
||||
|
||||
Reduce usage of 'struct rk808' (driver data of the parent MFD), so
|
||||
that only the chip variant field is still being accessed directly.
|
||||
This allows restructuring the MFD driver to support SPI based
|
||||
PMICs.
|
||||
|
||||
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20221020204251.108565-4-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
---
|
||||
drivers/rtc/rtc-rk808.c | 47 ++++++++++++++++++-----------------------
|
||||
1 file changed, 20 insertions(+), 27 deletions(-)
|
||||
|
||||
--- a/drivers/rtc/rtc-rk808.c
|
||||
+++ b/drivers/rtc/rtc-rk808.c
|
||||
@@ -14,7 +14,6 @@
|
||||
#include <linux/bcd.h>
|
||||
#include <linux/mfd/rk808.h>
|
||||
#include <linux/platform_device.h>
|
||||
-#include <linux/i2c.h>
|
||||
|
||||
/* RTC_CTRL_REG bitfields */
|
||||
#define BIT_RTC_CTRL_REG_STOP_RTC_M BIT(0)
|
||||
@@ -51,7 +50,7 @@ struct rk_rtc_compat_reg {
|
||||
};
|
||||
|
||||
struct rk808_rtc {
|
||||
- struct rk808 *rk808;
|
||||
+ struct regmap *regmap;
|
||||
struct rtc_device *rtc;
|
||||
struct rk_rtc_compat_reg *creg;
|
||||
int irq;
|
||||
@@ -97,12 +96,11 @@ static void gregorian_to_rockchip(struct
|
||||
static int rk808_rtc_readtime(struct device *dev, struct rtc_time *tm)
|
||||
{
|
||||
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
|
||||
- struct rk808 *rk808 = rk808_rtc->rk808;
|
||||
u8 rtc_data[NUM_TIME_REGS];
|
||||
int ret;
|
||||
|
||||
/* Force an update of the shadowed registers right now */
|
||||
- ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->ctrl_reg,
|
||||
+ ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->ctrl_reg,
|
||||
BIT_RTC_CTRL_REG_RTC_GET_TIME,
|
||||
BIT_RTC_CTRL_REG_RTC_GET_TIME);
|
||||
if (ret) {
|
||||
@@ -116,7 +114,7 @@ static int rk808_rtc_readtime(struct dev
|
||||
* 32khz. If we clear the GET_TIME bit here, the time of i2c transfer
|
||||
* certainly more than 31.25us: 16 * 2.5us at 400kHz bus frequency.
|
||||
*/
|
||||
- ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->ctrl_reg,
|
||||
+ ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->ctrl_reg,
|
||||
BIT_RTC_CTRL_REG_RTC_GET_TIME,
|
||||
0);
|
||||
if (ret) {
|
||||
@@ -124,7 +122,7 @@ static int rk808_rtc_readtime(struct dev
|
||||
return ret;
|
||||
}
|
||||
|
||||
- ret = regmap_bulk_read(rk808->regmap, rk808_rtc->creg->seconds_reg,
|
||||
+ ret = regmap_bulk_read(rk808_rtc->regmap, rk808_rtc->creg->seconds_reg,
|
||||
rtc_data, NUM_TIME_REGS);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to bulk read rtc_data: %d\n", ret);
|
||||
@@ -148,7 +146,6 @@ static int rk808_rtc_readtime(struct dev
|
||||
static int rk808_rtc_set_time(struct device *dev, struct rtc_time *tm)
|
||||
{
|
||||
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
|
||||
- struct rk808 *rk808 = rk808_rtc->rk808;
|
||||
u8 rtc_data[NUM_TIME_REGS];
|
||||
int ret;
|
||||
|
||||
@@ -163,7 +160,7 @@ static int rk808_rtc_set_time(struct dev
|
||||
rtc_data[6] = bin2bcd(tm->tm_wday);
|
||||
|
||||
/* Stop RTC while updating the RTC registers */
|
||||
- ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->ctrl_reg,
|
||||
+ ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->ctrl_reg,
|
||||
BIT_RTC_CTRL_REG_STOP_RTC_M,
|
||||
BIT_RTC_CTRL_REG_STOP_RTC_M);
|
||||
if (ret) {
|
||||
@@ -171,14 +168,14 @@ static int rk808_rtc_set_time(struct dev
|
||||
return ret;
|
||||
}
|
||||
|
||||
- ret = regmap_bulk_write(rk808->regmap, rk808_rtc->creg->seconds_reg,
|
||||
+ ret = regmap_bulk_write(rk808_rtc->regmap, rk808_rtc->creg->seconds_reg,
|
||||
rtc_data, NUM_TIME_REGS);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to bull write rtc_data: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
/* Start RTC again */
|
||||
- ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->ctrl_reg,
|
||||
+ ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->ctrl_reg,
|
||||
BIT_RTC_CTRL_REG_STOP_RTC_M, 0);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to update RTC control: %d\n", ret);
|
||||
@@ -191,12 +188,11 @@ static int rk808_rtc_set_time(struct dev
|
||||
static int rk808_rtc_readalarm(struct device *dev, struct rtc_wkalrm *alrm)
|
||||
{
|
||||
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
|
||||
- struct rk808 *rk808 = rk808_rtc->rk808;
|
||||
u8 alrm_data[NUM_ALARM_REGS];
|
||||
uint32_t int_reg;
|
||||
int ret;
|
||||
|
||||
- ret = regmap_bulk_read(rk808->regmap,
|
||||
+ ret = regmap_bulk_read(rk808_rtc->regmap,
|
||||
rk808_rtc->creg->alarm_seconds_reg,
|
||||
alrm_data, NUM_ALARM_REGS);
|
||||
if (ret) {
|
||||
@@ -212,7 +208,7 @@ static int rk808_rtc_readalarm(struct de
|
||||
alrm->time.tm_year = (bcd2bin(alrm_data[5] & YEARS_REG_MSK)) + 100;
|
||||
rockchip_to_gregorian(&alrm->time);
|
||||
|
||||
- ret = regmap_read(rk808->regmap, rk808_rtc->creg->int_reg, &int_reg);
|
||||
+ ret = regmap_read(rk808_rtc->regmap, rk808_rtc->creg->int_reg, &int_reg);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to read RTC INT REG: %d\n", ret);
|
||||
return ret;
|
||||
@@ -228,10 +224,9 @@ static int rk808_rtc_readalarm(struct de
|
||||
|
||||
static int rk808_rtc_stop_alarm(struct rk808_rtc *rk808_rtc)
|
||||
{
|
||||
- struct rk808 *rk808 = rk808_rtc->rk808;
|
||||
int ret;
|
||||
|
||||
- ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->int_reg,
|
||||
+ ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->int_reg,
|
||||
BIT_RTC_INTERRUPTS_REG_IT_ALARM_M, 0);
|
||||
|
||||
return ret;
|
||||
@@ -239,10 +234,9 @@ static int rk808_rtc_stop_alarm(struct r
|
||||
|
||||
static int rk808_rtc_start_alarm(struct rk808_rtc *rk808_rtc)
|
||||
{
|
||||
- struct rk808 *rk808 = rk808_rtc->rk808;
|
||||
int ret;
|
||||
|
||||
- ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->int_reg,
|
||||
+ ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->int_reg,
|
||||
BIT_RTC_INTERRUPTS_REG_IT_ALARM_M,
|
||||
BIT_RTC_INTERRUPTS_REG_IT_ALARM_M);
|
||||
|
||||
@@ -252,7 +246,6 @@ static int rk808_rtc_start_alarm(struct
|
||||
static int rk808_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
|
||||
{
|
||||
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
|
||||
- struct rk808 *rk808 = rk808_rtc->rk808;
|
||||
u8 alrm_data[NUM_ALARM_REGS];
|
||||
int ret;
|
||||
|
||||
@@ -272,7 +265,7 @@ static int rk808_rtc_setalarm(struct dev
|
||||
alrm_data[4] = bin2bcd(alrm->time.tm_mon + 1);
|
||||
alrm_data[5] = bin2bcd(alrm->time.tm_year - 100);
|
||||
|
||||
- ret = regmap_bulk_write(rk808->regmap,
|
||||
+ ret = regmap_bulk_write(rk808_rtc->regmap,
|
||||
rk808_rtc->creg->alarm_seconds_reg,
|
||||
alrm_data, NUM_ALARM_REGS);
|
||||
if (ret) {
|
||||
@@ -313,20 +306,18 @@ static int rk808_rtc_alarm_irq_enable(st
|
||||
static irqreturn_t rk808_alarm_irq(int irq, void *data)
|
||||
{
|
||||
struct rk808_rtc *rk808_rtc = data;
|
||||
- struct rk808 *rk808 = rk808_rtc->rk808;
|
||||
- struct i2c_client *client = rk808->i2c;
|
||||
int ret;
|
||||
|
||||
- ret = regmap_write(rk808->regmap, rk808_rtc->creg->status_reg,
|
||||
+ ret = regmap_write(rk808_rtc->regmap, rk808_rtc->creg->status_reg,
|
||||
RTC_STATUS_MASK);
|
||||
if (ret) {
|
||||
- dev_err(&client->dev,
|
||||
+ dev_err(&rk808_rtc->rtc->dev,
|
||||
"%s:Failed to update RTC status: %d\n", __func__, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
rtc_update_irq(rk808_rtc->rtc, 1, RTC_IRQF | RTC_AF);
|
||||
- dev_dbg(&client->dev,
|
||||
+ dev_dbg(&rk808_rtc->rtc->dev,
|
||||
"%s:irq=%d\n", __func__, irq);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
@@ -404,10 +395,12 @@ static int rk808_rtc_probe(struct platfo
|
||||
break;
|
||||
}
|
||||
platform_set_drvdata(pdev, rk808_rtc);
|
||||
- rk808_rtc->rk808 = rk808;
|
||||
+ rk808_rtc->regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
||||
+ if (!rk808_rtc->regmap)
|
||||
+ return -ENODEV;
|
||||
|
||||
/* start rtc running by default, and use shadowed timer. */
|
||||
- ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->ctrl_reg,
|
||||
+ ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->ctrl_reg,
|
||||
BIT_RTC_CTRL_REG_STOP_RTC_M |
|
||||
BIT_RTC_CTRL_REG_RTC_READSEL_M,
|
||||
BIT_RTC_CTRL_REG_RTC_READSEL_M);
|
||||
@@ -417,7 +410,7 @@ static int rk808_rtc_probe(struct platfo
|
||||
return ret;
|
||||
}
|
||||
|
||||
- ret = regmap_write(rk808->regmap, rk808_rtc->creg->status_reg,
|
||||
+ ret = regmap_write(rk808_rtc->regmap, rk808_rtc->creg->status_reg,
|
||||
RTC_STATUS_MASK);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev,
|
||||
@@ -1,132 +0,0 @@
|
||||
From 2dc51ca822e4633e244e7f7bdc51e76a77dca939 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:05 +0200
|
||||
Subject: [PATCH] clk: RK808: Reduce 'struct rk808' usage
|
||||
|
||||
Reduce usage of 'struct rk808' (driver data of the parent MFD), so
|
||||
that only the chip variant field is still being accessed directly.
|
||||
This allows restructuring the MFD driver to support SPI based
|
||||
PMICs.
|
||||
|
||||
Acked-by: Stephen Boyd <sboyd@kernel.org>
|
||||
Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock64, Quartz64 Model A + B
|
||||
Tested-by: Vincent Legoll <vincent.legoll@gmail.com> # Pine64 QuartzPro64
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-2-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/clk/clk-rk808.c | 34 ++++++++++++++++------------------
|
||||
1 file changed, 16 insertions(+), 18 deletions(-)
|
||||
|
||||
--- a/drivers/clk/clk-rk808.c
|
||||
+++ b/drivers/clk/clk-rk808.c
|
||||
@@ -12,10 +12,9 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/mfd/rk808.h>
|
||||
-#include <linux/i2c.h>
|
||||
|
||||
struct rk808_clkout {
|
||||
- struct rk808 *rk808;
|
||||
+ struct regmap *regmap;
|
||||
struct clk_hw clkout1_hw;
|
||||
struct clk_hw clkout2_hw;
|
||||
};
|
||||
@@ -31,9 +30,8 @@ static int rk808_clkout2_enable(struct c
|
||||
struct rk808_clkout *rk808_clkout = container_of(hw,
|
||||
struct rk808_clkout,
|
||||
clkout2_hw);
|
||||
- struct rk808 *rk808 = rk808_clkout->rk808;
|
||||
|
||||
- return regmap_update_bits(rk808->regmap, RK808_CLK32OUT_REG,
|
||||
+ return regmap_update_bits(rk808_clkout->regmap, RK808_CLK32OUT_REG,
|
||||
CLK32KOUT2_EN, enable ? CLK32KOUT2_EN : 0);
|
||||
}
|
||||
|
||||
@@ -52,10 +50,9 @@ static int rk808_clkout2_is_prepared(str
|
||||
struct rk808_clkout *rk808_clkout = container_of(hw,
|
||||
struct rk808_clkout,
|
||||
clkout2_hw);
|
||||
- struct rk808 *rk808 = rk808_clkout->rk808;
|
||||
uint32_t val;
|
||||
|
||||
- int ret = regmap_read(rk808->regmap, RK808_CLK32OUT_REG, &val);
|
||||
+ int ret = regmap_read(rk808_clkout->regmap, RK808_CLK32OUT_REG, &val);
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@@ -93,9 +90,8 @@ static int rk817_clkout2_enable(struct c
|
||||
struct rk808_clkout *rk808_clkout = container_of(hw,
|
||||
struct rk808_clkout,
|
||||
clkout2_hw);
|
||||
- struct rk808 *rk808 = rk808_clkout->rk808;
|
||||
|
||||
- return regmap_update_bits(rk808->regmap, RK817_SYS_CFG(1),
|
||||
+ return regmap_update_bits(rk808_clkout->regmap, RK817_SYS_CFG(1),
|
||||
RK817_CLK32KOUT2_EN,
|
||||
enable ? RK817_CLK32KOUT2_EN : 0);
|
||||
}
|
||||
@@ -115,10 +111,9 @@ static int rk817_clkout2_is_prepared(str
|
||||
struct rk808_clkout *rk808_clkout = container_of(hw,
|
||||
struct rk808_clkout,
|
||||
clkout2_hw);
|
||||
- struct rk808 *rk808 = rk808_clkout->rk808;
|
||||
unsigned int val;
|
||||
|
||||
- int ret = regmap_read(rk808->regmap, RK817_SYS_CFG(1), &val);
|
||||
+ int ret = regmap_read(rk808_clkout->regmap, RK817_SYS_CFG(1), &val);
|
||||
|
||||
if (ret < 0)
|
||||
return 0;
|
||||
@@ -153,18 +148,21 @@ static const struct clk_ops *rkpmic_get_
|
||||
static int rk808_clkout_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent);
|
||||
- struct i2c_client *client = rk808->i2c;
|
||||
- struct device_node *node = client->dev.of_node;
|
||||
+ struct device *dev = &pdev->dev;
|
||||
struct clk_init_data init = {};
|
||||
struct rk808_clkout *rk808_clkout;
|
||||
int ret;
|
||||
|
||||
- rk808_clkout = devm_kzalloc(&client->dev,
|
||||
+ dev->of_node = pdev->dev.parent->of_node;
|
||||
+
|
||||
+ rk808_clkout = devm_kzalloc(dev,
|
||||
sizeof(*rk808_clkout), GFP_KERNEL);
|
||||
if (!rk808_clkout)
|
||||
return -ENOMEM;
|
||||
|
||||
- rk808_clkout->rk808 = rk808;
|
||||
+ rk808_clkout->regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
||||
+ if (!rk808_clkout->regmap)
|
||||
+ return -ENODEV;
|
||||
|
||||
init.parent_names = NULL;
|
||||
init.num_parents = 0;
|
||||
@@ -173,10 +171,10 @@ static int rk808_clkout_probe(struct pla
|
||||
rk808_clkout->clkout1_hw.init = &init;
|
||||
|
||||
/* optional override of the clockname */
|
||||
- of_property_read_string_index(node, "clock-output-names",
|
||||
+ of_property_read_string_index(dev->of_node, "clock-output-names",
|
||||
0, &init.name);
|
||||
|
||||
- ret = devm_clk_hw_register(&client->dev, &rk808_clkout->clkout1_hw);
|
||||
+ ret = devm_clk_hw_register(dev, &rk808_clkout->clkout1_hw);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -185,10 +183,10 @@ static int rk808_clkout_probe(struct pla
|
||||
rk808_clkout->clkout2_hw.init = &init;
|
||||
|
||||
/* optional override of the clockname */
|
||||
- of_property_read_string_index(node, "clock-output-names",
|
||||
+ of_property_read_string_index(dev->of_node, "clock-output-names",
|
||||
1, &init.name);
|
||||
|
||||
- ret = devm_clk_hw_register(&client->dev, &rk808_clkout->clkout2_hw);
|
||||
+ ret = devm_clk_hw_register(dev, &rk808_clkout->clkout2_hw);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -1,151 +0,0 @@
|
||||
From 4fec8a5a85c495851007084e632b7f3f87cb7bdb Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:06 +0200
|
||||
Subject: [PATCH] mfd: rk808: Convert to device managed resources
|
||||
|
||||
Fully convert the driver to device managed resources.
|
||||
|
||||
Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock64, Quartz64 Model A + B
|
||||
Tested-by: Vincent Legoll <vincent.legoll@gmail.com> # Pine64 QuartzPro64
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-3-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/mfd/rk808.c | 64 ++++++++++++++++-----------------------------
|
||||
1 file changed, 22 insertions(+), 42 deletions(-)
|
||||
|
||||
--- a/drivers/mfd/rk808.c
|
||||
+++ b/drivers/mfd/rk808.c
|
||||
@@ -548,13 +548,11 @@ static const struct regmap_irq_chip rk81
|
||||
.init_ack_masked = true,
|
||||
};
|
||||
|
||||
-static struct i2c_client *rk808_i2c_client;
|
||||
-
|
||||
-static void rk808_pm_power_off(void)
|
||||
+static int rk808_power_off(struct sys_off_data *data)
|
||||
{
|
||||
+ struct rk808 *rk808 = data->cb_data;
|
||||
int ret;
|
||||
unsigned int reg, bit;
|
||||
- struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client);
|
||||
|
||||
switch (rk808->variant) {
|
||||
case RK805_ID:
|
||||
@@ -575,16 +573,18 @@ static void rk808_pm_power_off(void)
|
||||
bit = DEV_OFF;
|
||||
break;
|
||||
default:
|
||||
- return;
|
||||
+ return NOTIFY_DONE;
|
||||
}
|
||||
ret = regmap_update_bits(rk808->regmap, reg, bit, bit);
|
||||
if (ret)
|
||||
- dev_err(&rk808_i2c_client->dev, "Failed to shutdown device!\n");
|
||||
+ dev_err(&rk808->i2c->dev, "Failed to shutdown device!\n");
|
||||
+
|
||||
+ return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
-static int rk808_restart_notify(struct notifier_block *this, unsigned long mode, void *cmd)
|
||||
+static int rk808_restart(struct sys_off_data *data)
|
||||
{
|
||||
- struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client);
|
||||
+ struct rk808 *rk808 = data->cb_data;
|
||||
unsigned int reg, bit;
|
||||
int ret;
|
||||
|
||||
@@ -600,16 +600,11 @@ static int rk808_restart_notify(struct n
|
||||
}
|
||||
ret = regmap_update_bits(rk808->regmap, reg, bit, bit);
|
||||
if (ret)
|
||||
- dev_err(&rk808_i2c_client->dev, "Failed to restart device!\n");
|
||||
+ dev_err(&rk808->i2c->dev, "Failed to restart device!\n");
|
||||
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
-static struct notifier_block rk808_restart_handler = {
|
||||
- .notifier_call = rk808_restart_notify,
|
||||
- .priority = 192,
|
||||
-};
|
||||
-
|
||||
static void rk8xx_shutdown(struct i2c_client *client)
|
||||
{
|
||||
struct rk808 *rk808 = i2c_get_clientdata(client);
|
||||
@@ -745,9 +740,9 @@ static int rk808_probe(struct i2c_client
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- ret = regmap_add_irq_chip(rk808->regmap, client->irq,
|
||||
- IRQF_ONESHOT, -1,
|
||||
- rk808->regmap_irq_chip, &rk808->irq_data);
|
||||
+ ret = devm_regmap_add_irq_chip(&client->dev, rk808->regmap, client->irq,
|
||||
+ IRQF_ONESHOT, -1,
|
||||
+ rk808->regmap_irq_chip, &rk808->irq_data);
|
||||
if (ret) {
|
||||
dev_err(&client->dev, "Failed to add irq_chip %d\n", ret);
|
||||
return ret;
|
||||
@@ -771,17 +766,23 @@ static int rk808_probe(struct i2c_client
|
||||
regmap_irq_get_domain(rk808->irq_data));
|
||||
if (ret) {
|
||||
dev_err(&client->dev, "failed to add MFD devices %d\n", ret);
|
||||
- goto err_irq;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
if (of_property_read_bool(np, "rockchip,system-power-controller")) {
|
||||
- rk808_i2c_client = client;
|
||||
- pm_power_off = rk808_pm_power_off;
|
||||
+ ret = devm_register_sys_off_handler(&client->dev,
|
||||
+ SYS_OFF_MODE_POWER_OFF_PREPARE, SYS_OFF_PRIO_HIGH,
|
||||
+ &rk808_power_off, rk808);
|
||||
+ if (ret)
|
||||
+ return dev_err_probe(&client->dev, ret,
|
||||
+ "failed to register poweroff handler\n");
|
||||
|
||||
switch (rk808->variant) {
|
||||
case RK809_ID:
|
||||
case RK817_ID:
|
||||
- ret = register_restart_handler(&rk808_restart_handler);
|
||||
+ ret = devm_register_sys_off_handler(&client->dev,
|
||||
+ SYS_OFF_MODE_RESTART, SYS_OFF_PRIO_HIGH,
|
||||
+ &rk808_restart, rk808);
|
||||
if (ret)
|
||||
dev_warn(&client->dev, "failed to register rst handler, %d\n", ret);
|
||||
break;
|
||||
@@ -792,26 +793,6 @@ static int rk808_probe(struct i2c_client
|
||||
}
|
||||
|
||||
return 0;
|
||||
-
|
||||
-err_irq:
|
||||
- regmap_del_irq_chip(client->irq, rk808->irq_data);
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static void rk808_remove(struct i2c_client *client)
|
||||
-{
|
||||
- struct rk808 *rk808 = i2c_get_clientdata(client);
|
||||
-
|
||||
- regmap_del_irq_chip(client->irq, rk808->irq_data);
|
||||
-
|
||||
- /**
|
||||
- * pm_power_off may points to a function from another module.
|
||||
- * Check if the pointer is set by us and only then overwrite it.
|
||||
- */
|
||||
- if (pm_power_off == rk808_pm_power_off)
|
||||
- pm_power_off = NULL;
|
||||
-
|
||||
- unregister_restart_handler(&rk808_restart_handler);
|
||||
}
|
||||
|
||||
static int __maybe_unused rk8xx_suspend(struct device *dev)
|
||||
@@ -868,7 +849,6 @@ static struct i2c_driver rk808_i2c_drive
|
||||
.pm = &rk8xx_pm_ops,
|
||||
},
|
||||
.probe_new = rk808_probe,
|
||||
- .remove = rk808_remove,
|
||||
.shutdown = rk8xx_shutdown,
|
||||
};
|
||||
|
||||
@@ -1,103 +0,0 @@
|
||||
From e714b50bdf3cf45076c601276e9e3da00ea05319 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:07 +0200
|
||||
Subject: [PATCH] mfd: rk808: Use dev_err_probe
|
||||
|
||||
Use dev_err_probe instead of dev_err in probe function,
|
||||
which simplifies code a little bit and prints the error
|
||||
code.
|
||||
|
||||
Also drop possibly incorrect printing of chip id registers
|
||||
while touching the error message.
|
||||
|
||||
Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock64, Quartz64 Model A + B
|
||||
Tested-by: Vincent Legoll <vincent.legoll@gmail.com> # Pine64 QuartzPro64
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-4-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/mfd/rk808.c | 48 +++++++++++++++------------------------------
|
||||
1 file changed, 16 insertions(+), 32 deletions(-)
|
||||
|
||||
--- a/drivers/mfd/rk808.c
|
||||
+++ b/drivers/mfd/rk808.c
|
||||
@@ -670,18 +670,12 @@ static int rk808_probe(struct i2c_client
|
||||
|
||||
/* Read chip variant */
|
||||
msb = i2c_smbus_read_byte_data(client, pmic_id_msb);
|
||||
- if (msb < 0) {
|
||||
- dev_err(&client->dev, "failed to read the chip id at 0x%x\n",
|
||||
- RK808_ID_MSB);
|
||||
- return msb;
|
||||
- }
|
||||
+ if (msb < 0)
|
||||
+ return dev_err_probe(&client->dev, msb, "failed to read the chip id MSB\n");
|
||||
|
||||
lsb = i2c_smbus_read_byte_data(client, pmic_id_lsb);
|
||||
- if (lsb < 0) {
|
||||
- dev_err(&client->dev, "failed to read the chip id at 0x%x\n",
|
||||
- RK808_ID_LSB);
|
||||
- return lsb;
|
||||
- }
|
||||
+ if (lsb < 0)
|
||||
+ return dev_err_probe(&client->dev, lsb, "failed to read the chip id LSB\n");
|
||||
|
||||
rk808->variant = ((msb << 8) | lsb) & RK8XX_ID_MSK;
|
||||
dev_info(&client->dev, "chip id: 0x%x\n", (unsigned int)rk808->variant);
|
||||
@@ -730,44 +724,34 @@ static int rk808_probe(struct i2c_client
|
||||
i2c_set_clientdata(client, rk808);
|
||||
|
||||
rk808->regmap = devm_regmap_init_i2c(client, rk808->regmap_cfg);
|
||||
- if (IS_ERR(rk808->regmap)) {
|
||||
- dev_err(&client->dev, "regmap initialization failed\n");
|
||||
- return PTR_ERR(rk808->regmap);
|
||||
- }
|
||||
+ if (IS_ERR(rk808->regmap))
|
||||
+ return dev_err_probe(&client->dev, PTR_ERR(rk808->regmap),
|
||||
+ "regmap initialization failed\n");
|
||||
|
||||
- if (!client->irq) {
|
||||
- dev_err(&client->dev, "No interrupt support, no core IRQ\n");
|
||||
- return -EINVAL;
|
||||
- }
|
||||
+ if (!client->irq)
|
||||
+ return dev_err_probe(&client->dev, -EINVAL, "No interrupt support, no core IRQ\n");
|
||||
|
||||
ret = devm_regmap_add_irq_chip(&client->dev, rk808->regmap, client->irq,
|
||||
IRQF_ONESHOT, -1,
|
||||
rk808->regmap_irq_chip, &rk808->irq_data);
|
||||
- if (ret) {
|
||||
- dev_err(&client->dev, "Failed to add irq_chip %d\n", ret);
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret)
|
||||
+ return dev_err_probe(&client->dev, ret, "Failed to add irq_chip\n");
|
||||
|
||||
for (i = 0; i < nr_pre_init_regs; i++) {
|
||||
ret = regmap_update_bits(rk808->regmap,
|
||||
pre_init_reg[i].addr,
|
||||
pre_init_reg[i].mask,
|
||||
pre_init_reg[i].value);
|
||||
- if (ret) {
|
||||
- dev_err(&client->dev,
|
||||
- "0x%x write err\n",
|
||||
- pre_init_reg[i].addr);
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret)
|
||||
+ return dev_err_probe(&client->dev, ret, "0x%x write err\n",
|
||||
+ pre_init_reg[i].addr);
|
||||
}
|
||||
|
||||
ret = devm_mfd_add_devices(&client->dev, PLATFORM_DEVID_NONE,
|
||||
cells, nr_cells, NULL, 0,
|
||||
regmap_irq_get_domain(rk808->irq_data));
|
||||
- if (ret) {
|
||||
- dev_err(&client->dev, "failed to add MFD devices %d\n", ret);
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret)
|
||||
+ return dev_err_probe(&client->dev, ret, "failed to add MFD devices\n");
|
||||
|
||||
if (of_property_read_bool(np, "rockchip,system-power-controller")) {
|
||||
ret = devm_register_sys_off_handler(&client->dev,
|
||||
@@ -1,59 +0,0 @@
|
||||
From 049449976f549605a6913d468b61356a9950a6a2 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:08 +0200
|
||||
Subject: [PATCH] mfd: rk808: Replace 'struct i2c_client' with 'struct device'
|
||||
|
||||
Put 'struct device' pointer into the MFD platform_data instead
|
||||
of the 'struct i2c_client' pointer. This simplifies the code
|
||||
and prepares the MFD for SPI support.
|
||||
|
||||
Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock64, Quartz64 Model A + B
|
||||
Tested-by: Vincent Legoll <vincent.legoll@gmail.com> # Pine64 QuartzPro64
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-5-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/mfd/rk808.c | 6 +++---
|
||||
include/linux/mfd/rk808.h | 2 +-
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/mfd/rk808.c
|
||||
+++ b/drivers/mfd/rk808.c
|
||||
@@ -577,7 +577,7 @@ static int rk808_power_off(struct sys_of
|
||||
}
|
||||
ret = regmap_update_bits(rk808->regmap, reg, bit, bit);
|
||||
if (ret)
|
||||
- dev_err(&rk808->i2c->dev, "Failed to shutdown device!\n");
|
||||
+ dev_err(rk808->dev, "Failed to shutdown device!\n");
|
||||
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
@@ -600,7 +600,7 @@ static int rk808_restart(struct sys_off_
|
||||
}
|
||||
ret = regmap_update_bits(rk808->regmap, reg, bit, bit);
|
||||
if (ret)
|
||||
- dev_err(&rk808->i2c->dev, "Failed to restart device!\n");
|
||||
+ dev_err(rk808->dev, "Failed to restart device!\n");
|
||||
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
@@ -720,7 +720,7 @@ static int rk808_probe(struct i2c_client
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- rk808->i2c = client;
|
||||
+ rk808->dev = &client->dev;
|
||||
i2c_set_clientdata(client, rk808);
|
||||
|
||||
rk808->regmap = devm_regmap_init_i2c(client, rk808->regmap_cfg);
|
||||
--- a/include/linux/mfd/rk808.h
|
||||
+++ b/include/linux/mfd/rk808.h
|
||||
@@ -787,7 +787,7 @@ enum {
|
||||
};
|
||||
|
||||
struct rk808 {
|
||||
- struct i2c_client *i2c;
|
||||
+ struct device *dev;
|
||||
struct regmap_irq_chip_data *irq_data;
|
||||
struct regmap *regmap;
|
||||
long variant;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,158 +0,0 @@
|
||||
From 74413bd611b4fd21fdf90e369780b2f8543447a4 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:10 +0200
|
||||
Subject: [PATCH] mfd: rk8xx-i2c: Use device_get_match_data
|
||||
|
||||
Simplify the device identification logic by supplying the relevant
|
||||
information via of_match_data. This also removes the dev_info()
|
||||
printing the chip version, since that's supplied by the match data
|
||||
now.
|
||||
|
||||
Due to lack of hardware this change is compile-tested only.
|
||||
|
||||
Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock64, Quartz64 Model A + B
|
||||
Tested-by: Vincent Legoll <vincent.legoll@gmail.com> # Pine64 QuartzPro64
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-7-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/mfd/rk8xx-core.c | 2 -
|
||||
drivers/mfd/rk8xx-i2c.c | 89 +++++++++++++++++-----------------------
|
||||
2 files changed, 37 insertions(+), 54 deletions(-)
|
||||
|
||||
--- a/drivers/mfd/rk8xx-core.c
|
||||
+++ b/drivers/mfd/rk8xx-core.c
|
||||
@@ -597,8 +597,6 @@ int rk8xx_probe(struct device *dev, int
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- dev_info(dev, "chip id: 0x%x\n", (unsigned int)rk808->variant);
|
||||
-
|
||||
if (!irq)
|
||||
return dev_err_probe(dev, -EINVAL, "No interrupt support, no core IRQ\n");
|
||||
|
||||
--- a/drivers/mfd/rk8xx-i2c.c
|
||||
+++ b/drivers/mfd/rk8xx-i2c.c
|
||||
@@ -16,6 +16,11 @@
|
||||
#include <linux/of.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
+struct rk8xx_i2c_platform_data {
|
||||
+ const struct regmap_config *regmap_cfg;
|
||||
+ int variant;
|
||||
+};
|
||||
+
|
||||
static bool rk808_is_volatile_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
/*
|
||||
@@ -103,66 +108,46 @@ static const struct regmap_config rk817_
|
||||
.volatile_reg = rk817_is_volatile_reg,
|
||||
};
|
||||
|
||||
-static int rk8xx_i2c_get_variant(struct i2c_client *client)
|
||||
-{
|
||||
- u8 pmic_id_msb, pmic_id_lsb;
|
||||
- int msb, lsb;
|
||||
+static const struct rk8xx_i2c_platform_data rk805_data = {
|
||||
+ .regmap_cfg = &rk805_regmap_config,
|
||||
+ .variant = RK805_ID,
|
||||
+};
|
||||
|
||||
- if (of_device_is_compatible(client->dev.of_node, "rockchip,rk817") ||
|
||||
- of_device_is_compatible(client->dev.of_node, "rockchip,rk809")) {
|
||||
- pmic_id_msb = RK817_ID_MSB;
|
||||
- pmic_id_lsb = RK817_ID_LSB;
|
||||
- } else {
|
||||
- pmic_id_msb = RK808_ID_MSB;
|
||||
- pmic_id_lsb = RK808_ID_LSB;
|
||||
- }
|
||||
+static const struct rk8xx_i2c_platform_data rk808_data = {
|
||||
+ .regmap_cfg = &rk808_regmap_config,
|
||||
+ .variant = RK808_ID,
|
||||
+};
|
||||
|
||||
- /* Read chip variant */
|
||||
- msb = i2c_smbus_read_byte_data(client, pmic_id_msb);
|
||||
- if (msb < 0)
|
||||
- return dev_err_probe(&client->dev, msb, "failed to read the chip id MSB\n");
|
||||
-
|
||||
- lsb = i2c_smbus_read_byte_data(client, pmic_id_lsb);
|
||||
- if (lsb < 0)
|
||||
- return dev_err_probe(&client->dev, lsb, "failed to read the chip id LSB\n");
|
||||
+static const struct rk8xx_i2c_platform_data rk809_data = {
|
||||
+ .regmap_cfg = &rk817_regmap_config,
|
||||
+ .variant = RK809_ID,
|
||||
+};
|
||||
|
||||
- return ((msb << 8) | lsb) & RK8XX_ID_MSK;
|
||||
-}
|
||||
+static const struct rk8xx_i2c_platform_data rk817_data = {
|
||||
+ .regmap_cfg = &rk817_regmap_config,
|
||||
+ .variant = RK817_ID,
|
||||
+};
|
||||
+
|
||||
+static const struct rk8xx_i2c_platform_data rk818_data = {
|
||||
+ .regmap_cfg = &rk818_regmap_config,
|
||||
+ .variant = RK818_ID,
|
||||
+};
|
||||
|
||||
static int rk8xx_i2c_probe(struct i2c_client *client)
|
||||
{
|
||||
- const struct regmap_config *regmap_cfg;
|
||||
+ const struct rk8xx_i2c_platform_data *data;
|
||||
struct regmap *regmap;
|
||||
- int variant;
|
||||
|
||||
- variant = rk8xx_i2c_get_variant(client);
|
||||
- if (variant < 0)
|
||||
- return variant;
|
||||
-
|
||||
- switch (variant) {
|
||||
- case RK805_ID:
|
||||
- regmap_cfg = &rk805_regmap_config;
|
||||
- break;
|
||||
- case RK808_ID:
|
||||
- regmap_cfg = &rk808_regmap_config;
|
||||
- break;
|
||||
- case RK818_ID:
|
||||
- regmap_cfg = &rk818_regmap_config;
|
||||
- break;
|
||||
- case RK809_ID:
|
||||
- case RK817_ID:
|
||||
- regmap_cfg = &rk817_regmap_config;
|
||||
- break;
|
||||
- default:
|
||||
- return dev_err_probe(&client->dev, -EINVAL, "Unsupported RK8XX ID %x\n", variant);
|
||||
- }
|
||||
+ data = device_get_match_data(&client->dev);
|
||||
+ if (!data)
|
||||
+ return -ENODEV;
|
||||
|
||||
- regmap = devm_regmap_init_i2c(client, regmap_cfg);
|
||||
+ regmap = devm_regmap_init_i2c(client, data->regmap_cfg);
|
||||
if (IS_ERR(regmap))
|
||||
return dev_err_probe(&client->dev, PTR_ERR(regmap),
|
||||
"regmap initialization failed\n");
|
||||
|
||||
- return rk8xx_probe(&client->dev, variant, client->irq, regmap);
|
||||
+ return rk8xx_probe(&client->dev, data->variant, client->irq, regmap);
|
||||
}
|
||||
|
||||
static void rk8xx_i2c_shutdown(struct i2c_client *client)
|
||||
@@ -173,11 +158,11 @@ static void rk8xx_i2c_shutdown(struct i2
|
||||
static SIMPLE_DEV_PM_OPS(rk8xx_i2c_pm_ops, rk8xx_suspend, rk8xx_resume);
|
||||
|
||||
static const struct of_device_id rk8xx_i2c_of_match[] = {
|
||||
- { .compatible = "rockchip,rk805" },
|
||||
- { .compatible = "rockchip,rk808" },
|
||||
- { .compatible = "rockchip,rk809" },
|
||||
- { .compatible = "rockchip,rk817" },
|
||||
- { .compatible = "rockchip,rk818" },
|
||||
+ { .compatible = "rockchip,rk805", .data = &rk805_data },
|
||||
+ { .compatible = "rockchip,rk808", .data = &rk808_data },
|
||||
+ { .compatible = "rockchip,rk809", .data = &rk809_data },
|
||||
+ { .compatible = "rockchip,rk817", .data = &rk817_data },
|
||||
+ { .compatible = "rockchip,rk818", .data = &rk818_data },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, rk8xx_i2c_of_match);
|
||||
@@ -1,743 +0,0 @@
|
||||
From 210f418f8ace9f056c337f7945e0ae3e242b3389 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:12 +0200
|
||||
Subject: [PATCH] mfd: rk8xx: Add rk806 support
|
||||
|
||||
Add support for SPI connected rk806, which is used by the RK3588
|
||||
evaluation boards. The PMIC is advertised to support I2C and SPI,
|
||||
but the evaluation boards all use SPI. Thus only SPI support is
|
||||
added here.
|
||||
|
||||
Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock64, Quartz64 Model A + B
|
||||
Tested-by: Vincent Legoll <vincent.legoll@gmail.com> # Pine64 QuartzPro64
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-9-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/mfd/Kconfig | 14 ++
|
||||
drivers/mfd/Makefile | 1 +
|
||||
drivers/mfd/rk8xx-core.c | 69 ++++++-
|
||||
drivers/mfd/rk8xx-spi.c | 124 ++++++++++++
|
||||
include/linux/mfd/rk808.h | 409 ++++++++++++++++++++++++++++++++++++++
|
||||
5 files changed, 614 insertions(+), 3 deletions(-)
|
||||
create mode 100644 drivers/mfd/rk8xx-spi.c
|
||||
|
||||
--- a/drivers/mfd/Kconfig
|
||||
+++ b/drivers/mfd/Kconfig
|
||||
@@ -1220,6 +1220,20 @@ config MFD_RK8XX_I2C
|
||||
through I2C interface. The device supports multiple sub-devices
|
||||
including interrupts, RTC, LDO & DCDC regulators, and onkey.
|
||||
|
||||
+config MFD_RK8XX_SPI
|
||||
+ tristate "Rockchip RK806 Power Management Chip"
|
||||
+ depends on SPI && OF
|
||||
+ select MFD_CORE
|
||||
+ select REGMAP_SPI
|
||||
+ select REGMAP_IRQ
|
||||
+ select MFD_RK8XX
|
||||
+ help
|
||||
+ If you say yes here you get support for the RK806 Power Management
|
||||
+ chip.
|
||||
+ This driver provides common support for accessing the device
|
||||
+ through an SPI interface. The device supports multiple sub-devices
|
||||
+ including interrupts, LDO & DCDC regulators, and power on-key.
|
||||
+
|
||||
config MFD_RN5T618
|
||||
tristate "Ricoh RN5T567/618 PMIC"
|
||||
depends on I2C
|
||||
--- a/drivers/mfd/Makefile
|
||||
+++ b/drivers/mfd/Makefile
|
||||
@@ -225,6 +225,7 @@ obj-$(CONFIG_MFD_NTXEC) += ntxec.o
|
||||
obj-$(CONFIG_MFD_RC5T583) += rc5t583.o rc5t583-irq.o
|
||||
obj-$(CONFIG_MFD_RK8XX) += rk8xx-core.o
|
||||
obj-$(CONFIG_MFD_RK8XX_I2C) += rk8xx-i2c.o
|
||||
+obj-$(CONFIG_MFD_RK8XX_SPI) += rk8xx-spi.o
|
||||
obj-$(CONFIG_MFD_RN5T618) += rn5t618.o
|
||||
obj-$(CONFIG_MFD_SEC_CORE) += sec-core.o sec-irq.o
|
||||
obj-$(CONFIG_MFD_SYSCON) += syscon.o
|
||||
--- a/drivers/mfd/rk8xx-core.c
|
||||
+++ b/drivers/mfd/rk8xx-core.c
|
||||
@@ -37,6 +37,11 @@ static const struct resource rk805_key_r
|
||||
DEFINE_RES_IRQ(RK805_IRQ_PWRON_FALL),
|
||||
};
|
||||
|
||||
+static struct resource rk806_pwrkey_resources[] = {
|
||||
+ DEFINE_RES_IRQ(RK806_IRQ_PWRON_FALL),
|
||||
+ DEFINE_RES_IRQ(RK806_IRQ_PWRON_RISE),
|
||||
+};
|
||||
+
|
||||
static const struct resource rk817_pwrkey_resources[] = {
|
||||
DEFINE_RES_IRQ(RK817_IRQ_PWRON_RISE),
|
||||
DEFINE_RES_IRQ(RK817_IRQ_PWRON_FALL),
|
||||
@@ -64,6 +69,17 @@ static const struct mfd_cell rk805s[] =
|
||||
},
|
||||
};
|
||||
|
||||
+static const struct mfd_cell rk806s[] = {
|
||||
+ { .name = "rk805-pinctrl", .id = PLATFORM_DEVID_AUTO, },
|
||||
+ { .name = "rk808-regulator", .id = PLATFORM_DEVID_AUTO, },
|
||||
+ {
|
||||
+ .name = "rk805-pwrkey",
|
||||
+ .resources = rk806_pwrkey_resources,
|
||||
+ .num_resources = ARRAY_SIZE(rk806_pwrkey_resources),
|
||||
+ .id = PLATFORM_DEVID_AUTO,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
static const struct mfd_cell rk808s[] = {
|
||||
{ .name = "rk808-clkout", .id = PLATFORM_DEVID_NONE, },
|
||||
{ .name = "rk808-regulator", .id = PLATFORM_DEVID_NONE, },
|
||||
@@ -123,6 +139,12 @@ static const struct rk808_reg_data rk805
|
||||
{RK805_THERMAL_REG, TEMP_HOTDIE_MSK, TEMP115C},
|
||||
};
|
||||
|
||||
+static const struct rk808_reg_data rk806_pre_init_reg[] = {
|
||||
+ { RK806_GPIO_INT_CONFIG, RK806_INT_POL_MSK, RK806_INT_POL_L },
|
||||
+ { RK806_SYS_CFG3, RK806_SLAVE_RESTART_FUN_MSK, RK806_SLAVE_RESTART_FUN_EN },
|
||||
+ { RK806_SYS_OPTION, RK806_SYS_ENB2_2M_MSK, RK806_SYS_ENB2_2M_EN },
|
||||
+};
|
||||
+
|
||||
static const struct rk808_reg_data rk808_pre_init_reg[] = {
|
||||
{ RK808_BUCK3_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_150MA },
|
||||
{ RK808_BUCK4_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_200MA },
|
||||
@@ -273,6 +295,27 @@ static const struct regmap_irq rk805_irq
|
||||
},
|
||||
};
|
||||
|
||||
+static const struct regmap_irq rk806_irqs[] = {
|
||||
+ /* INT_STS0 IRQs */
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_PWRON_FALL, 0, RK806_INT_STS_PWRON_FALL),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_PWRON_RISE, 0, RK806_INT_STS_PWRON_RISE),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_PWRON, 0, RK806_INT_STS_PWRON),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_PWRON_LP, 0, RK806_INT_STS_PWRON_LP),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_HOTDIE, 0, RK806_INT_STS_HOTDIE),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_VDC_RISE, 0, RK806_INT_STS_VDC_RISE),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_VDC_FALL, 0, RK806_INT_STS_VDC_FALL),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_VB_LO, 0, RK806_INT_STS_VB_LO),
|
||||
+ /* INT_STS1 IRQs */
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_REV0, 1, RK806_INT_STS_REV0),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_REV1, 1, RK806_INT_STS_REV1),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_REV2, 1, RK806_INT_STS_REV2),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_CRC_ERROR, 1, RK806_INT_STS_CRC_ERROR),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_SLP3_GPIO, 1, RK806_INT_STS_SLP3_GPIO),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_SLP2_GPIO, 1, RK806_INT_STS_SLP2_GPIO),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_SLP1_GPIO, 1, RK806_INT_STS_SLP1_GPIO),
|
||||
+ REGMAP_IRQ_REG(RK806_IRQ_WDT, 1, RK806_INT_STS_WDT),
|
||||
+};
|
||||
+
|
||||
static const struct regmap_irq rk808_irqs[] = {
|
||||
/* INT_STS */
|
||||
[RK808_IRQ_VOUT_LO] = {
|
||||
@@ -423,6 +466,18 @@ static struct regmap_irq_chip rk805_irq_
|
||||
.init_ack_masked = true,
|
||||
};
|
||||
|
||||
+static struct regmap_irq_chip rk806_irq_chip = {
|
||||
+ .name = "rk806",
|
||||
+ .irqs = rk806_irqs,
|
||||
+ .num_irqs = ARRAY_SIZE(rk806_irqs),
|
||||
+ .num_regs = 2,
|
||||
+ .irq_reg_stride = 2,
|
||||
+ .mask_base = RK806_INT_MSK0,
|
||||
+ .status_base = RK806_INT_STS0,
|
||||
+ .ack_base = RK806_INT_STS0,
|
||||
+ .init_ack_masked = true,
|
||||
+};
|
||||
+
|
||||
static const struct regmap_irq_chip rk808_irq_chip = {
|
||||
.name = "rk808",
|
||||
.irqs = rk808_irqs,
|
||||
@@ -549,6 +604,7 @@ int rk8xx_probe(struct device *dev, int
|
||||
struct rk808 *rk808;
|
||||
const struct rk808_reg_data *pre_init_reg;
|
||||
const struct mfd_cell *cells;
|
||||
+ int dual_support = 0;
|
||||
int nr_pre_init_regs;
|
||||
int nr_cells;
|
||||
int ret;
|
||||
@@ -570,6 +626,14 @@ int rk8xx_probe(struct device *dev, int
|
||||
cells = rk805s;
|
||||
nr_cells = ARRAY_SIZE(rk805s);
|
||||
break;
|
||||
+ case RK806_ID:
|
||||
+ rk808->regmap_irq_chip = &rk806_irq_chip;
|
||||
+ pre_init_reg = rk806_pre_init_reg;
|
||||
+ nr_pre_init_regs = ARRAY_SIZE(rk806_pre_init_reg);
|
||||
+ cells = rk806s;
|
||||
+ nr_cells = ARRAY_SIZE(rk806s);
|
||||
+ dual_support = IRQF_SHARED;
|
||||
+ break;
|
||||
case RK808_ID:
|
||||
rk808->regmap_irq_chip = &rk808_irq_chip;
|
||||
pre_init_reg = rk808_pre_init_reg;
|
||||
@@ -601,7 +665,7 @@ int rk8xx_probe(struct device *dev, int
|
||||
return dev_err_probe(dev, -EINVAL, "No interrupt support, no core IRQ\n");
|
||||
|
||||
ret = devm_regmap_add_irq_chip(dev, rk808->regmap, irq,
|
||||
- IRQF_ONESHOT, -1,
|
||||
+ IRQF_ONESHOT | dual_support, -1,
|
||||
rk808->regmap_irq_chip, &rk808->irq_data);
|
||||
if (ret)
|
||||
return dev_err_probe(dev, ret, "Failed to add irq_chip\n");
|
||||
@@ -616,8 +680,7 @@ int rk8xx_probe(struct device *dev, int
|
||||
pre_init_reg[i].addr);
|
||||
}
|
||||
|
||||
- ret = devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE,
|
||||
- cells, nr_cells, NULL, 0,
|
||||
+ ret = devm_mfd_add_devices(dev, 0, cells, nr_cells, NULL, 0,
|
||||
regmap_irq_get_domain(rk808->irq_data));
|
||||
if (ret)
|
||||
return dev_err_probe(dev, ret, "failed to add MFD devices\n");
|
||||
--- /dev/null
|
||||
+++ b/drivers/mfd/rk8xx-spi.c
|
||||
@@ -0,0 +1,124 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Rockchip RK806 Core (SPI) driver
|
||||
+ *
|
||||
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
|
||||
+ * Copyright (c) 2023 Collabora Ltd.
|
||||
+ *
|
||||
+ * Author: Xu Shengfei <xsf@rock-chips.com>
|
||||
+ * Author: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
+ */
|
||||
+
|
||||
+#include <linux/interrupt.h>
|
||||
+#include <linux/mfd/core.h>
|
||||
+#include <linux/mfd/rk808.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/regmap.h>
|
||||
+#include <linux/spi/spi.h>
|
||||
+
|
||||
+#define RK806_ADDR_SIZE 2
|
||||
+#define RK806_CMD_WITH_SIZE(CMD, VALUE_BYTES) \
|
||||
+ (RK806_CMD_##CMD | RK806_CMD_CRC_DIS | (VALUE_BYTES - 1))
|
||||
+
|
||||
+static const struct regmap_range rk806_volatile_ranges[] = {
|
||||
+ regmap_reg_range(RK806_POWER_EN0, RK806_POWER_EN5),
|
||||
+ regmap_reg_range(RK806_DVS_START_CTRL, RK806_INT_MSK1),
|
||||
+};
|
||||
+
|
||||
+static const struct regmap_access_table rk806_volatile_table = {
|
||||
+ .yes_ranges = rk806_volatile_ranges,
|
||||
+ .n_yes_ranges = ARRAY_SIZE(rk806_volatile_ranges),
|
||||
+};
|
||||
+
|
||||
+static const struct regmap_config rk806_regmap_config_spi = {
|
||||
+ .reg_bits = 16,
|
||||
+ .val_bits = 8,
|
||||
+ .max_register = RK806_BUCK_RSERVE_REG5,
|
||||
+ .cache_type = REGCACHE_RBTREE,
|
||||
+ .volatile_table = &rk806_volatile_table,
|
||||
+};
|
||||
+
|
||||
+static int rk806_spi_bus_write(void *context, const void *vdata, size_t count)
|
||||
+{
|
||||
+ struct device *dev = context;
|
||||
+ struct spi_device *spi = to_spi_device(dev);
|
||||
+ struct spi_transfer xfer[2] = { 0 };
|
||||
+ /* data and thus count includes the register address */
|
||||
+ size_t val_size = count - RK806_ADDR_SIZE;
|
||||
+ char cmd;
|
||||
+
|
||||
+ if (val_size < 1 || val_size > (RK806_CMD_LEN_MSK + 1))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ cmd = RK806_CMD_WITH_SIZE(WRITE, val_size);
|
||||
+
|
||||
+ xfer[0].tx_buf = &cmd;
|
||||
+ xfer[0].len = sizeof(cmd);
|
||||
+ xfer[1].tx_buf = vdata;
|
||||
+ xfer[1].len = count;
|
||||
+
|
||||
+ return spi_sync_transfer(spi, xfer, ARRAY_SIZE(xfer));
|
||||
+}
|
||||
+
|
||||
+static int rk806_spi_bus_read(void *context, const void *vreg, size_t reg_size,
|
||||
+ void *val, size_t val_size)
|
||||
+{
|
||||
+ struct device *dev = context;
|
||||
+ struct spi_device *spi = to_spi_device(dev);
|
||||
+ char txbuf[3] = { 0 };
|
||||
+
|
||||
+ if (reg_size != RK806_ADDR_SIZE ||
|
||||
+ val_size < 1 || val_size > (RK806_CMD_LEN_MSK + 1))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ /* TX buffer contains command byte followed by two address bytes */
|
||||
+ txbuf[0] = RK806_CMD_WITH_SIZE(READ, val_size);
|
||||
+ memcpy(txbuf+1, vreg, reg_size);
|
||||
+
|
||||
+ return spi_write_then_read(spi, txbuf, sizeof(txbuf), val, val_size);
|
||||
+}
|
||||
+
|
||||
+static const struct regmap_bus rk806_regmap_bus_spi = {
|
||||
+ .write = rk806_spi_bus_write,
|
||||
+ .read = rk806_spi_bus_read,
|
||||
+ .reg_format_endian_default = REGMAP_ENDIAN_LITTLE,
|
||||
+};
|
||||
+
|
||||
+static int rk8xx_spi_probe(struct spi_device *spi)
|
||||
+{
|
||||
+ struct regmap *regmap;
|
||||
+
|
||||
+ regmap = devm_regmap_init(&spi->dev, &rk806_regmap_bus_spi,
|
||||
+ &spi->dev, &rk806_regmap_config_spi);
|
||||
+ if (IS_ERR(regmap))
|
||||
+ return dev_err_probe(&spi->dev, PTR_ERR(regmap),
|
||||
+ "Failed to init regmap\n");
|
||||
+
|
||||
+ return rk8xx_probe(&spi->dev, RK806_ID, spi->irq, regmap);
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id rk8xx_spi_of_match[] = {
|
||||
+ { .compatible = "rockchip,rk806", },
|
||||
+ { }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, rk8xx_spi_of_match);
|
||||
+
|
||||
+static const struct spi_device_id rk8xx_spi_id_table[] = {
|
||||
+ { "rk806", 0 },
|
||||
+ { }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(spi, rk8xx_spi_id_table);
|
||||
+
|
||||
+static struct spi_driver rk8xx_spi_driver = {
|
||||
+ .driver = {
|
||||
+ .name = "rk8xx-spi",
|
||||
+ .of_match_table = rk8xx_spi_of_match,
|
||||
+ },
|
||||
+ .probe = rk8xx_spi_probe,
|
||||
+ .id_table = rk8xx_spi_id_table,
|
||||
+};
|
||||
+module_spi_driver(rk8xx_spi_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("Xu Shengfei <xsf@rock-chips.com>");
|
||||
+MODULE_DESCRIPTION("RK8xx SPI PMIC driver");
|
||||
+MODULE_LICENSE("GPL");
|
||||
--- a/include/linux/mfd/rk808.h
|
||||
+++ b/include/linux/mfd/rk808.h
|
||||
@@ -289,6 +289,414 @@ enum rk805_reg {
|
||||
#define RK805_INT_ALARM_EN (1 << 3)
|
||||
#define RK805_INT_TIMER_EN (1 << 2)
|
||||
|
||||
+/* RK806 */
|
||||
+#define RK806_POWER_EN0 0x0
|
||||
+#define RK806_POWER_EN1 0x1
|
||||
+#define RK806_POWER_EN2 0x2
|
||||
+#define RK806_POWER_EN3 0x3
|
||||
+#define RK806_POWER_EN4 0x4
|
||||
+#define RK806_POWER_EN5 0x5
|
||||
+#define RK806_POWER_SLP_EN0 0x6
|
||||
+#define RK806_POWER_SLP_EN1 0x7
|
||||
+#define RK806_POWER_SLP_EN2 0x8
|
||||
+#define RK806_POWER_DISCHRG_EN0 0x9
|
||||
+#define RK806_POWER_DISCHRG_EN1 0xA
|
||||
+#define RK806_POWER_DISCHRG_EN2 0xB
|
||||
+#define RK806_BUCK_FB_CONFIG 0xC
|
||||
+#define RK806_SLP_LP_CONFIG 0xD
|
||||
+#define RK806_POWER_FPWM_EN0 0xE
|
||||
+#define RK806_POWER_FPWM_EN1 0xF
|
||||
+#define RK806_BUCK1_CONFIG 0x10
|
||||
+#define RK806_BUCK2_CONFIG 0x11
|
||||
+#define RK806_BUCK3_CONFIG 0x12
|
||||
+#define RK806_BUCK4_CONFIG 0x13
|
||||
+#define RK806_BUCK5_CONFIG 0x14
|
||||
+#define RK806_BUCK6_CONFIG 0x15
|
||||
+#define RK806_BUCK7_CONFIG 0x16
|
||||
+#define RK806_BUCK8_CONFIG 0x17
|
||||
+#define RK806_BUCK9_CONFIG 0x18
|
||||
+#define RK806_BUCK10_CONFIG 0x19
|
||||
+#define RK806_BUCK1_ON_VSEL 0x1A
|
||||
+#define RK806_BUCK2_ON_VSEL 0x1B
|
||||
+#define RK806_BUCK3_ON_VSEL 0x1C
|
||||
+#define RK806_BUCK4_ON_VSEL 0x1D
|
||||
+#define RK806_BUCK5_ON_VSEL 0x1E
|
||||
+#define RK806_BUCK6_ON_VSEL 0x1F
|
||||
+#define RK806_BUCK7_ON_VSEL 0x20
|
||||
+#define RK806_BUCK8_ON_VSEL 0x21
|
||||
+#define RK806_BUCK9_ON_VSEL 0x22
|
||||
+#define RK806_BUCK10_ON_VSEL 0x23
|
||||
+#define RK806_BUCK1_SLP_VSEL 0x24
|
||||
+#define RK806_BUCK2_SLP_VSEL 0x25
|
||||
+#define RK806_BUCK3_SLP_VSEL 0x26
|
||||
+#define RK806_BUCK4_SLP_VSEL 0x27
|
||||
+#define RK806_BUCK5_SLP_VSEL 0x28
|
||||
+#define RK806_BUCK6_SLP_VSEL 0x29
|
||||
+#define RK806_BUCK7_SLP_VSEL 0x2A
|
||||
+#define RK806_BUCK8_SLP_VSEL 0x2B
|
||||
+#define RK806_BUCK9_SLP_VSEL 0x2D
|
||||
+#define RK806_BUCK10_SLP_VSEL 0x2E
|
||||
+#define RK806_BUCK_DEBUG1 0x30
|
||||
+#define RK806_BUCK_DEBUG2 0x31
|
||||
+#define RK806_BUCK_DEBUG3 0x32
|
||||
+#define RK806_BUCK_DEBUG4 0x33
|
||||
+#define RK806_BUCK_DEBUG5 0x34
|
||||
+#define RK806_BUCK_DEBUG6 0x35
|
||||
+#define RK806_BUCK_DEBUG7 0x36
|
||||
+#define RK806_BUCK_DEBUG8 0x37
|
||||
+#define RK806_BUCK_DEBUG9 0x38
|
||||
+#define RK806_BUCK_DEBUG10 0x39
|
||||
+#define RK806_BUCK_DEBUG11 0x3A
|
||||
+#define RK806_BUCK_DEBUG12 0x3B
|
||||
+#define RK806_BUCK_DEBUG13 0x3C
|
||||
+#define RK806_BUCK_DEBUG14 0x3D
|
||||
+#define RK806_BUCK_DEBUG15 0x3E
|
||||
+#define RK806_BUCK_DEBUG16 0x3F
|
||||
+#define RK806_BUCK_DEBUG17 0x40
|
||||
+#define RK806_BUCK_DEBUG18 0x41
|
||||
+#define RK806_NLDO_IMAX 0x42
|
||||
+#define RK806_NLDO1_ON_VSEL 0x43
|
||||
+#define RK806_NLDO2_ON_VSEL 0x44
|
||||
+#define RK806_NLDO3_ON_VSEL 0x45
|
||||
+#define RK806_NLDO4_ON_VSEL 0x46
|
||||
+#define RK806_NLDO5_ON_VSEL 0x47
|
||||
+#define RK806_NLDO1_SLP_VSEL 0x48
|
||||
+#define RK806_NLDO2_SLP_VSEL 0x49
|
||||
+#define RK806_NLDO3_SLP_VSEL 0x4A
|
||||
+#define RK806_NLDO4_SLP_VSEL 0x4B
|
||||
+#define RK806_NLDO5_SLP_VSEL 0x4C
|
||||
+#define RK806_PLDO_IMAX 0x4D
|
||||
+#define RK806_PLDO1_ON_VSEL 0x4E
|
||||
+#define RK806_PLDO2_ON_VSEL 0x4F
|
||||
+#define RK806_PLDO3_ON_VSEL 0x50
|
||||
+#define RK806_PLDO4_ON_VSEL 0x51
|
||||
+#define RK806_PLDO5_ON_VSEL 0x52
|
||||
+#define RK806_PLDO6_ON_VSEL 0x53
|
||||
+#define RK806_PLDO1_SLP_VSEL 0x54
|
||||
+#define RK806_PLDO2_SLP_VSEL 0x55
|
||||
+#define RK806_PLDO3_SLP_VSEL 0x56
|
||||
+#define RK806_PLDO4_SLP_VSEL 0x57
|
||||
+#define RK806_PLDO5_SLP_VSEL 0x58
|
||||
+#define RK806_PLDO6_SLP_VSEL 0x59
|
||||
+#define RK806_CHIP_NAME 0x5A
|
||||
+#define RK806_CHIP_VER 0x5B
|
||||
+#define RK806_OTP_VER 0x5C
|
||||
+#define RK806_SYS_STS 0x5D
|
||||
+#define RK806_SYS_CFG0 0x5E
|
||||
+#define RK806_SYS_CFG1 0x5F
|
||||
+#define RK806_SYS_OPTION 0x61
|
||||
+#define RK806_SLEEP_CONFIG0 0x62
|
||||
+#define RK806_SLEEP_CONFIG1 0x63
|
||||
+#define RK806_SLEEP_CTR_SEL0 0x64
|
||||
+#define RK806_SLEEP_CTR_SEL1 0x65
|
||||
+#define RK806_SLEEP_CTR_SEL2 0x66
|
||||
+#define RK806_SLEEP_CTR_SEL3 0x67
|
||||
+#define RK806_SLEEP_CTR_SEL4 0x68
|
||||
+#define RK806_SLEEP_CTR_SEL5 0x69
|
||||
+#define RK806_DVS_CTRL_SEL0 0x6A
|
||||
+#define RK806_DVS_CTRL_SEL1 0x6B
|
||||
+#define RK806_DVS_CTRL_SEL2 0x6C
|
||||
+#define RK806_DVS_CTRL_SEL3 0x6D
|
||||
+#define RK806_DVS_CTRL_SEL4 0x6E
|
||||
+#define RK806_DVS_CTRL_SEL5 0x6F
|
||||
+#define RK806_DVS_START_CTRL 0x70
|
||||
+#define RK806_SLEEP_GPIO 0x71
|
||||
+#define RK806_SYS_CFG3 0x72
|
||||
+#define RK806_ON_SOURCE 0x74
|
||||
+#define RK806_OFF_SOURCE 0x75
|
||||
+#define RK806_PWRON_KEY 0x76
|
||||
+#define RK806_INT_STS0 0x77
|
||||
+#define RK806_INT_MSK0 0x78
|
||||
+#define RK806_INT_STS1 0x79
|
||||
+#define RK806_INT_MSK1 0x7A
|
||||
+#define RK806_GPIO_INT_CONFIG 0x7B
|
||||
+#define RK806_DATA_REG0 0x7C
|
||||
+#define RK806_DATA_REG1 0x7D
|
||||
+#define RK806_DATA_REG2 0x7E
|
||||
+#define RK806_DATA_REG3 0x7F
|
||||
+#define RK806_DATA_REG4 0x80
|
||||
+#define RK806_DATA_REG5 0x81
|
||||
+#define RK806_DATA_REG6 0x82
|
||||
+#define RK806_DATA_REG7 0x83
|
||||
+#define RK806_DATA_REG8 0x84
|
||||
+#define RK806_DATA_REG9 0x85
|
||||
+#define RK806_DATA_REG10 0x86
|
||||
+#define RK806_DATA_REG11 0x87
|
||||
+#define RK806_DATA_REG12 0x88
|
||||
+#define RK806_DATA_REG13 0x89
|
||||
+#define RK806_DATA_REG14 0x8A
|
||||
+#define RK806_DATA_REG15 0x8B
|
||||
+#define RK806_TM_REG 0x8C
|
||||
+#define RK806_OTP_EN_REG 0x8D
|
||||
+#define RK806_FUNC_OTP_EN_REG 0x8E
|
||||
+#define RK806_TEST_REG1 0x8F
|
||||
+#define RK806_TEST_REG2 0x90
|
||||
+#define RK806_TEST_REG3 0x91
|
||||
+#define RK806_TEST_REG4 0x92
|
||||
+#define RK806_TEST_REG5 0x93
|
||||
+#define RK806_BUCK_VSEL_OTP_REG0 0x94
|
||||
+#define RK806_BUCK_VSEL_OTP_REG1 0x95
|
||||
+#define RK806_BUCK_VSEL_OTP_REG2 0x96
|
||||
+#define RK806_BUCK_VSEL_OTP_REG3 0x97
|
||||
+#define RK806_BUCK_VSEL_OTP_REG4 0x98
|
||||
+#define RK806_BUCK_VSEL_OTP_REG5 0x99
|
||||
+#define RK806_BUCK_VSEL_OTP_REG6 0x9A
|
||||
+#define RK806_BUCK_VSEL_OTP_REG7 0x9B
|
||||
+#define RK806_BUCK_VSEL_OTP_REG8 0x9C
|
||||
+#define RK806_BUCK_VSEL_OTP_REG9 0x9D
|
||||
+#define RK806_NLDO1_VSEL_OTP_REG0 0x9E
|
||||
+#define RK806_NLDO1_VSEL_OTP_REG1 0x9F
|
||||
+#define RK806_NLDO1_VSEL_OTP_REG2 0xA0
|
||||
+#define RK806_NLDO1_VSEL_OTP_REG3 0xA1
|
||||
+#define RK806_NLDO1_VSEL_OTP_REG4 0xA2
|
||||
+#define RK806_PLDO_VSEL_OTP_REG0 0xA3
|
||||
+#define RK806_PLDO_VSEL_OTP_REG1 0xA4
|
||||
+#define RK806_PLDO_VSEL_OTP_REG2 0xA5
|
||||
+#define RK806_PLDO_VSEL_OTP_REG3 0xA6
|
||||
+#define RK806_PLDO_VSEL_OTP_REG4 0xA7
|
||||
+#define RK806_PLDO_VSEL_OTP_REG5 0xA8
|
||||
+#define RK806_BUCK_EN_OTP_REG1 0xA9
|
||||
+#define RK806_NLDO_EN_OTP_REG1 0xAA
|
||||
+#define RK806_PLDO_EN_OTP_REG1 0xAB
|
||||
+#define RK806_BUCK_FB_RES_OTP_REG1 0xAC
|
||||
+#define RK806_OTP_RESEV_REG0 0xAD
|
||||
+#define RK806_OTP_RESEV_REG1 0xAE
|
||||
+#define RK806_OTP_RESEV_REG2 0xAF
|
||||
+#define RK806_OTP_RESEV_REG3 0xB0
|
||||
+#define RK806_OTP_RESEV_REG4 0xB1
|
||||
+#define RK806_BUCK_SEQ_REG0 0xB2
|
||||
+#define RK806_BUCK_SEQ_REG1 0xB3
|
||||
+#define RK806_BUCK_SEQ_REG2 0xB4
|
||||
+#define RK806_BUCK_SEQ_REG3 0xB5
|
||||
+#define RK806_BUCK_SEQ_REG4 0xB6
|
||||
+#define RK806_BUCK_SEQ_REG5 0xB7
|
||||
+#define RK806_BUCK_SEQ_REG6 0xB8
|
||||
+#define RK806_BUCK_SEQ_REG7 0xB9
|
||||
+#define RK806_BUCK_SEQ_REG8 0xBA
|
||||
+#define RK806_BUCK_SEQ_REG9 0xBB
|
||||
+#define RK806_BUCK_SEQ_REG10 0xBC
|
||||
+#define RK806_BUCK_SEQ_REG11 0xBD
|
||||
+#define RK806_BUCK_SEQ_REG12 0xBE
|
||||
+#define RK806_BUCK_SEQ_REG13 0xBF
|
||||
+#define RK806_BUCK_SEQ_REG14 0xC0
|
||||
+#define RK806_BUCK_SEQ_REG15 0xC1
|
||||
+#define RK806_BUCK_SEQ_REG16 0xC2
|
||||
+#define RK806_BUCK_SEQ_REG17 0xC3
|
||||
+#define RK806_HK_TRIM_REG1 0xC4
|
||||
+#define RK806_HK_TRIM_REG2 0xC5
|
||||
+#define RK806_BUCK_REF_TRIM_REG1 0xC6
|
||||
+#define RK806_BUCK_REF_TRIM_REG2 0xC7
|
||||
+#define RK806_BUCK_REF_TRIM_REG3 0xC8
|
||||
+#define RK806_BUCK_REF_TRIM_REG4 0xC9
|
||||
+#define RK806_BUCK_REF_TRIM_REG5 0xCA
|
||||
+#define RK806_BUCK_OSC_TRIM_REG1 0xCB
|
||||
+#define RK806_BUCK_OSC_TRIM_REG2 0xCC
|
||||
+#define RK806_BUCK_OSC_TRIM_REG3 0xCD
|
||||
+#define RK806_BUCK_OSC_TRIM_REG4 0xCE
|
||||
+#define RK806_BUCK_OSC_TRIM_REG5 0xCF
|
||||
+#define RK806_BUCK_TRIM_ZCDIOS_REG1 0xD0
|
||||
+#define RK806_BUCK_TRIM_ZCDIOS_REG2 0xD1
|
||||
+#define RK806_NLDO_TRIM_REG1 0xD2
|
||||
+#define RK806_NLDO_TRIM_REG2 0xD3
|
||||
+#define RK806_NLDO_TRIM_REG3 0xD4
|
||||
+#define RK806_PLDO_TRIM_REG1 0xD5
|
||||
+#define RK806_PLDO_TRIM_REG2 0xD6
|
||||
+#define RK806_PLDO_TRIM_REG3 0xD7
|
||||
+#define RK806_TRIM_ICOMP_REG1 0xD8
|
||||
+#define RK806_TRIM_ICOMP_REG2 0xD9
|
||||
+#define RK806_EFUSE_CONTROL_REGH 0xDA
|
||||
+#define RK806_FUSE_PROG_REG 0xDB
|
||||
+#define RK806_MAIN_FSM_STS_REG 0xDD
|
||||
+#define RK806_FSM_REG 0xDE
|
||||
+#define RK806_TOP_RESEV_OFFR 0xEC
|
||||
+#define RK806_TOP_RESEV_POR 0xED
|
||||
+#define RK806_BUCK_VRSN_REG1 0xEE
|
||||
+#define RK806_BUCK_VRSN_REG2 0xEF
|
||||
+#define RK806_NLDO_RLOAD_SEL_REG1 0xF0
|
||||
+#define RK806_PLDO_RLOAD_SEL_REG1 0xF1
|
||||
+#define RK806_PLDO_RLOAD_SEL_REG2 0xF2
|
||||
+#define RK806_BUCK_CMIN_MX_REG1 0xF3
|
||||
+#define RK806_BUCK_CMIN_MX_REG2 0xF4
|
||||
+#define RK806_BUCK_FREQ_SET_REG1 0xF5
|
||||
+#define RK806_BUCK_FREQ_SET_REG2 0xF6
|
||||
+#define RK806_BUCK_RS_MEABS_REG1 0xF7
|
||||
+#define RK806_BUCK_RS_MEABS_REG2 0xF8
|
||||
+#define RK806_BUCK_RS_ZDLEB_REG1 0xF9
|
||||
+#define RK806_BUCK_RS_ZDLEB_REG2 0xFA
|
||||
+#define RK806_BUCK_RSERVE_REG1 0xFB
|
||||
+#define RK806_BUCK_RSERVE_REG2 0xFC
|
||||
+#define RK806_BUCK_RSERVE_REG3 0xFD
|
||||
+#define RK806_BUCK_RSERVE_REG4 0xFE
|
||||
+#define RK806_BUCK_RSERVE_REG5 0xFF
|
||||
+
|
||||
+/* INT_STS Register field definitions */
|
||||
+#define RK806_INT_STS_PWRON_FALL BIT(0)
|
||||
+#define RK806_INT_STS_PWRON_RISE BIT(1)
|
||||
+#define RK806_INT_STS_PWRON BIT(2)
|
||||
+#define RK806_INT_STS_PWRON_LP BIT(3)
|
||||
+#define RK806_INT_STS_HOTDIE BIT(4)
|
||||
+#define RK806_INT_STS_VDC_RISE BIT(5)
|
||||
+#define RK806_INT_STS_VDC_FALL BIT(6)
|
||||
+#define RK806_INT_STS_VB_LO BIT(7)
|
||||
+#define RK806_INT_STS_REV0 BIT(0)
|
||||
+#define RK806_INT_STS_REV1 BIT(1)
|
||||
+#define RK806_INT_STS_REV2 BIT(2)
|
||||
+#define RK806_INT_STS_CRC_ERROR BIT(3)
|
||||
+#define RK806_INT_STS_SLP3_GPIO BIT(4)
|
||||
+#define RK806_INT_STS_SLP2_GPIO BIT(5)
|
||||
+#define RK806_INT_STS_SLP1_GPIO BIT(6)
|
||||
+#define RK806_INT_STS_WDT BIT(7)
|
||||
+
|
||||
+/* SPI command */
|
||||
+#define RK806_CMD_READ 0
|
||||
+#define RK806_CMD_WRITE BIT(7)
|
||||
+#define RK806_CMD_CRC_EN BIT(6)
|
||||
+#define RK806_CMD_CRC_DIS 0
|
||||
+#define RK806_CMD_LEN_MSK 0x0f
|
||||
+#define RK806_REG_H 0x00
|
||||
+
|
||||
+#define VERSION_AB 0x01
|
||||
+
|
||||
+enum rk806_reg_id {
|
||||
+ RK806_ID_DCDC1 = 0,
|
||||
+ RK806_ID_DCDC2,
|
||||
+ RK806_ID_DCDC3,
|
||||
+ RK806_ID_DCDC4,
|
||||
+ RK806_ID_DCDC5,
|
||||
+ RK806_ID_DCDC6,
|
||||
+ RK806_ID_DCDC7,
|
||||
+ RK806_ID_DCDC8,
|
||||
+ RK806_ID_DCDC9,
|
||||
+ RK806_ID_DCDC10,
|
||||
+
|
||||
+ RK806_ID_NLDO1,
|
||||
+ RK806_ID_NLDO2,
|
||||
+ RK806_ID_NLDO3,
|
||||
+ RK806_ID_NLDO4,
|
||||
+ RK806_ID_NLDO5,
|
||||
+
|
||||
+ RK806_ID_PLDO1,
|
||||
+ RK806_ID_PLDO2,
|
||||
+ RK806_ID_PLDO3,
|
||||
+ RK806_ID_PLDO4,
|
||||
+ RK806_ID_PLDO5,
|
||||
+ RK806_ID_PLDO6,
|
||||
+ RK806_ID_END,
|
||||
+};
|
||||
+
|
||||
+/* Define the RK806 IRQ numbers */
|
||||
+enum rk806_irqs {
|
||||
+ /* INT_STS0 registers */
|
||||
+ RK806_IRQ_PWRON_FALL,
|
||||
+ RK806_IRQ_PWRON_RISE,
|
||||
+ RK806_IRQ_PWRON,
|
||||
+ RK806_IRQ_PWRON_LP,
|
||||
+ RK806_IRQ_HOTDIE,
|
||||
+ RK806_IRQ_VDC_RISE,
|
||||
+ RK806_IRQ_VDC_FALL,
|
||||
+ RK806_IRQ_VB_LO,
|
||||
+
|
||||
+ /* INT_STS0 registers */
|
||||
+ RK806_IRQ_REV0,
|
||||
+ RK806_IRQ_REV1,
|
||||
+ RK806_IRQ_REV2,
|
||||
+ RK806_IRQ_CRC_ERROR,
|
||||
+ RK806_IRQ_SLP3_GPIO,
|
||||
+ RK806_IRQ_SLP2_GPIO,
|
||||
+ RK806_IRQ_SLP1_GPIO,
|
||||
+ RK806_IRQ_WDT,
|
||||
+};
|
||||
+
|
||||
+/* VCC1 Low Voltage Threshold */
|
||||
+enum rk806_lv_sel {
|
||||
+ VB_LO_SEL_2800,
|
||||
+ VB_LO_SEL_2900,
|
||||
+ VB_LO_SEL_3000,
|
||||
+ VB_LO_SEL_3100,
|
||||
+ VB_LO_SEL_3200,
|
||||
+ VB_LO_SEL_3300,
|
||||
+ VB_LO_SEL_3400,
|
||||
+ VB_LO_SEL_3500,
|
||||
+};
|
||||
+
|
||||
+/* System Shutdown Voltage Select */
|
||||
+enum rk806_uv_sel {
|
||||
+ VB_UV_SEL_2700,
|
||||
+ VB_UV_SEL_2800,
|
||||
+ VB_UV_SEL_2900,
|
||||
+ VB_UV_SEL_3000,
|
||||
+ VB_UV_SEL_3100,
|
||||
+ VB_UV_SEL_3200,
|
||||
+ VB_UV_SEL_3300,
|
||||
+ VB_UV_SEL_3400,
|
||||
+};
|
||||
+
|
||||
+/* Pin Function */
|
||||
+enum rk806_pwrctrl_fun {
|
||||
+ PWRCTRL_NULL_FUN,
|
||||
+ PWRCTRL_SLP_FUN,
|
||||
+ PWRCTRL_POWOFF_FUN,
|
||||
+ PWRCTRL_RST_FUN,
|
||||
+ PWRCTRL_DVS_FUN,
|
||||
+ PWRCTRL_GPIO_FUN,
|
||||
+};
|
||||
+
|
||||
+/* Pin Polarity */
|
||||
+enum rk806_pin_level {
|
||||
+ POL_LOW,
|
||||
+ POL_HIGH,
|
||||
+};
|
||||
+
|
||||
+enum rk806_vsel_ctr_sel {
|
||||
+ CTR_BY_NO_EFFECT,
|
||||
+ CTR_BY_PWRCTRL1,
|
||||
+ CTR_BY_PWRCTRL2,
|
||||
+ CTR_BY_PWRCTRL3,
|
||||
+};
|
||||
+
|
||||
+enum rk806_dvs_ctr_sel {
|
||||
+ CTR_SEL_NO_EFFECT,
|
||||
+ CTR_SEL_DVS_START1,
|
||||
+ CTR_SEL_DVS_START2,
|
||||
+ CTR_SEL_DVS_START3,
|
||||
+};
|
||||
+
|
||||
+enum rk806_pin_dr_sel {
|
||||
+ RK806_PIN_INPUT,
|
||||
+ RK806_PIN_OUTPUT,
|
||||
+};
|
||||
+
|
||||
+#define RK806_INT_POL_MSK BIT(1)
|
||||
+#define RK806_INT_POL_H BIT(1)
|
||||
+#define RK806_INT_POL_L 0
|
||||
+
|
||||
+#define RK806_SLAVE_RESTART_FUN_MSK BIT(1)
|
||||
+#define RK806_SLAVE_RESTART_FUN_EN BIT(1)
|
||||
+#define RK806_SLAVE_RESTART_FUN_OFF 0
|
||||
+
|
||||
+#define RK806_SYS_ENB2_2M_MSK BIT(1)
|
||||
+#define RK806_SYS_ENB2_2M_EN BIT(1)
|
||||
+#define RK806_SYS_ENB2_2M_OFF 0
|
||||
+
|
||||
+enum rk806_int_fun {
|
||||
+ RK806_INT_ONLY,
|
||||
+ RK806_INT_ADN_WKUP,
|
||||
+};
|
||||
+
|
||||
+enum rk806_dvs_mode {
|
||||
+ RK806_DVS_NOT_SUPPORT,
|
||||
+ RK806_DVS_START1,
|
||||
+ RK806_DVS_START2,
|
||||
+ RK806_DVS_START3,
|
||||
+ RK806_DVS_PWRCTRL1,
|
||||
+ RK806_DVS_PWRCTRL2,
|
||||
+ RK806_DVS_PWRCTRL3,
|
||||
+ RK806_DVS_START_PWRCTR1,
|
||||
+ RK806_DVS_START_PWRCTR2,
|
||||
+ RK806_DVS_START_PWRCTR3,
|
||||
+ RK806_DVS_END,
|
||||
+};
|
||||
+
|
||||
/* RK808 IRQ Definitions */
|
||||
#define RK808_IRQ_VOUT_LO 0
|
||||
#define RK808_IRQ_VB_LO 1
|
||||
@@ -780,6 +1188,7 @@ enum {
|
||||
|
||||
enum {
|
||||
RK805_ID = 0x8050,
|
||||
+ RK806_ID = 0x8060,
|
||||
RK808_ID = 0x0000,
|
||||
RK809_ID = 0x8090,
|
||||
RK817_ID = 0x8170,
|
||||
@@ -1,338 +0,0 @@
|
||||
From 924764aa5f2e705f46f548611e6a9d6b986ae880 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:13 +0200
|
||||
Subject: [PATCH] pinctrl: rk805: Add rk806 pinctrl support
|
||||
|
||||
Add support for rk806 dvs pinctrl to the existing rk805
|
||||
driver.
|
||||
|
||||
This has been implemented using shengfei Xu's rk806
|
||||
specific driver from the vendor tree as reference.
|
||||
|
||||
Co-developed-by: shengfei Xu <xsf@rock-chips.com>
|
||||
Signed-off-by: shengfei Xu <xsf@rock-chips.com>
|
||||
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
Acked-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock64, Quartz64 Model A + B
|
||||
Tested-by: Vincent Legoll <vincent.legoll@gmail.com> # Pine64 QuartzPro64
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-10-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/pinctrl/pinctrl-rk805.c | 189 ++++++++++++++++++++++++++++----
|
||||
1 file changed, 168 insertions(+), 21 deletions(-)
|
||||
|
||||
--- a/drivers/pinctrl/pinctrl-rk805.c
|
||||
+++ b/drivers/pinctrl/pinctrl-rk805.c
|
||||
@@ -1,10 +1,12 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
- * Pinctrl driver for Rockchip RK805 PMIC
|
||||
+ * Pinctrl driver for Rockchip RK805/RK806 PMIC
|
||||
*
|
||||
* Copyright (c) 2017, Fuzhou Rockchip Electronics Co., Ltd
|
||||
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
|
||||
*
|
||||
* Author: Joseph Chen <chenjh@rock-chips.com>
|
||||
+ * Author: Xu Shengfei <xsf@rock-chips.com>
|
||||
*
|
||||
* Based on the pinctrl-as3722 driver
|
||||
*/
|
||||
@@ -44,6 +46,7 @@ struct rk805_pin_group {
|
||||
|
||||
/*
|
||||
* @reg: gpio setting register;
|
||||
+ * @fun_reg: functions select register;
|
||||
* @fun_mask: functions select mask value, when set is gpio;
|
||||
* @dir_mask: input or output mask value, when set is output, otherwise input;
|
||||
* @val_mask: gpio set value, when set is level high, otherwise low;
|
||||
@@ -56,6 +59,7 @@ struct rk805_pin_group {
|
||||
*/
|
||||
struct rk805_pin_config {
|
||||
u8 reg;
|
||||
+ u8 fun_reg;
|
||||
u8 fun_msk;
|
||||
u8 dir_msk;
|
||||
u8 val_msk;
|
||||
@@ -80,22 +84,50 @@ enum rk805_pinmux_option {
|
||||
RK805_PINMUX_GPIO,
|
||||
};
|
||||
|
||||
+enum rk806_pinmux_option {
|
||||
+ RK806_PINMUX_FUN0 = 0,
|
||||
+ RK806_PINMUX_FUN1,
|
||||
+ RK806_PINMUX_FUN2,
|
||||
+ RK806_PINMUX_FUN3,
|
||||
+ RK806_PINMUX_FUN4,
|
||||
+ RK806_PINMUX_FUN5,
|
||||
+};
|
||||
+
|
||||
enum {
|
||||
RK805_GPIO0,
|
||||
RK805_GPIO1,
|
||||
};
|
||||
|
||||
+enum {
|
||||
+ RK806_GPIO_DVS1,
|
||||
+ RK806_GPIO_DVS2,
|
||||
+ RK806_GPIO_DVS3
|
||||
+};
|
||||
+
|
||||
static const char *const rk805_gpio_groups[] = {
|
||||
"gpio0",
|
||||
"gpio1",
|
||||
};
|
||||
|
||||
+static const char *const rk806_gpio_groups[] = {
|
||||
+ "gpio_pwrctrl1",
|
||||
+ "gpio_pwrctrl2",
|
||||
+ "gpio_pwrctrl3",
|
||||
+};
|
||||
+
|
||||
/* RK805: 2 output only GPIOs */
|
||||
static const struct pinctrl_pin_desc rk805_pins_desc[] = {
|
||||
PINCTRL_PIN(RK805_GPIO0, "gpio0"),
|
||||
PINCTRL_PIN(RK805_GPIO1, "gpio1"),
|
||||
};
|
||||
|
||||
+/* RK806 */
|
||||
+static const struct pinctrl_pin_desc rk806_pins_desc[] = {
|
||||
+ PINCTRL_PIN(RK806_GPIO_DVS1, "gpio_pwrctrl1"),
|
||||
+ PINCTRL_PIN(RK806_GPIO_DVS2, "gpio_pwrctrl2"),
|
||||
+ PINCTRL_PIN(RK806_GPIO_DVS3, "gpio_pwrctrl3"),
|
||||
+};
|
||||
+
|
||||
static const struct rk805_pin_function rk805_pin_functions[] = {
|
||||
{
|
||||
.name = "gpio",
|
||||
@@ -105,6 +137,45 @@ static const struct rk805_pin_function r
|
||||
},
|
||||
};
|
||||
|
||||
+static const struct rk805_pin_function rk806_pin_functions[] = {
|
||||
+ {
|
||||
+ .name = "pin_fun0",
|
||||
+ .groups = rk806_gpio_groups,
|
||||
+ .ngroups = ARRAY_SIZE(rk806_gpio_groups),
|
||||
+ .mux_option = RK806_PINMUX_FUN0,
|
||||
+ },
|
||||
+ {
|
||||
+ .name = "pin_fun1",
|
||||
+ .groups = rk806_gpio_groups,
|
||||
+ .ngroups = ARRAY_SIZE(rk806_gpio_groups),
|
||||
+ .mux_option = RK806_PINMUX_FUN1,
|
||||
+ },
|
||||
+ {
|
||||
+ .name = "pin_fun2",
|
||||
+ .groups = rk806_gpio_groups,
|
||||
+ .ngroups = ARRAY_SIZE(rk806_gpio_groups),
|
||||
+ .mux_option = RK806_PINMUX_FUN2,
|
||||
+ },
|
||||
+ {
|
||||
+ .name = "pin_fun3",
|
||||
+ .groups = rk806_gpio_groups,
|
||||
+ .ngroups = ARRAY_SIZE(rk806_gpio_groups),
|
||||
+ .mux_option = RK806_PINMUX_FUN3,
|
||||
+ },
|
||||
+ {
|
||||
+ .name = "pin_fun4",
|
||||
+ .groups = rk806_gpio_groups,
|
||||
+ .ngroups = ARRAY_SIZE(rk806_gpio_groups),
|
||||
+ .mux_option = RK806_PINMUX_FUN4,
|
||||
+ },
|
||||
+ {
|
||||
+ .name = "pin_fun5",
|
||||
+ .groups = rk806_gpio_groups,
|
||||
+ .ngroups = ARRAY_SIZE(rk806_gpio_groups),
|
||||
+ .mux_option = RK806_PINMUX_FUN5,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
static const struct rk805_pin_group rk805_pin_groups[] = {
|
||||
{
|
||||
.name = "gpio0",
|
||||
@@ -118,6 +189,24 @@ static const struct rk805_pin_group rk80
|
||||
},
|
||||
};
|
||||
|
||||
+static const struct rk805_pin_group rk806_pin_groups[] = {
|
||||
+ {
|
||||
+ .name = "gpio_pwrctrl1",
|
||||
+ .pins = { RK806_GPIO_DVS1 },
|
||||
+ .npins = 1,
|
||||
+ },
|
||||
+ {
|
||||
+ .name = "gpio_pwrctrl2",
|
||||
+ .pins = { RK806_GPIO_DVS2 },
|
||||
+ .npins = 1,
|
||||
+ },
|
||||
+ {
|
||||
+ .name = "gpio_pwrctrl3",
|
||||
+ .pins = { RK806_GPIO_DVS3 },
|
||||
+ .npins = 1,
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
#define RK805_GPIO0_VAL_MSK BIT(0)
|
||||
#define RK805_GPIO1_VAL_MSK BIT(1)
|
||||
|
||||
@@ -132,6 +221,40 @@ static const struct rk805_pin_config rk8
|
||||
},
|
||||
};
|
||||
|
||||
+#define RK806_PWRCTRL1_DR BIT(0)
|
||||
+#define RK806_PWRCTRL2_DR BIT(1)
|
||||
+#define RK806_PWRCTRL3_DR BIT(2)
|
||||
+#define RK806_PWRCTRL1_DATA BIT(4)
|
||||
+#define RK806_PWRCTRL2_DATA BIT(5)
|
||||
+#define RK806_PWRCTRL3_DATA BIT(6)
|
||||
+#define RK806_PWRCTRL1_FUN GENMASK(2, 0)
|
||||
+#define RK806_PWRCTRL2_FUN GENMASK(6, 4)
|
||||
+#define RK806_PWRCTRL3_FUN GENMASK(2, 0)
|
||||
+
|
||||
+static struct rk805_pin_config rk806_gpio_cfgs[] = {
|
||||
+ {
|
||||
+ .fun_reg = RK806_SLEEP_CONFIG0,
|
||||
+ .fun_msk = RK806_PWRCTRL1_FUN,
|
||||
+ .reg = RK806_SLEEP_GPIO,
|
||||
+ .val_msk = RK806_PWRCTRL1_DATA,
|
||||
+ .dir_msk = RK806_PWRCTRL1_DR,
|
||||
+ },
|
||||
+ {
|
||||
+ .fun_reg = RK806_SLEEP_CONFIG0,
|
||||
+ .fun_msk = RK806_PWRCTRL2_FUN,
|
||||
+ .reg = RK806_SLEEP_GPIO,
|
||||
+ .val_msk = RK806_PWRCTRL2_DATA,
|
||||
+ .dir_msk = RK806_PWRCTRL2_DR,
|
||||
+ },
|
||||
+ {
|
||||
+ .fun_reg = RK806_SLEEP_CONFIG1,
|
||||
+ .fun_msk = RK806_PWRCTRL3_FUN,
|
||||
+ .reg = RK806_SLEEP_GPIO,
|
||||
+ .val_msk = RK806_PWRCTRL3_DATA,
|
||||
+ .dir_msk = RK806_PWRCTRL3_DR,
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
/* generic gpio chip */
|
||||
static int rk805_gpio_get(struct gpio_chip *chip, unsigned int offset)
|
||||
{
|
||||
@@ -289,19 +412,13 @@ static int _rk805_pinctrl_set_mux(struct
|
||||
if (!pci->pin_cfg[offset].fun_msk)
|
||||
return 0;
|
||||
|
||||
- if (mux == RK805_PINMUX_GPIO) {
|
||||
- ret = regmap_update_bits(pci->rk808->regmap,
|
||||
- pci->pin_cfg[offset].reg,
|
||||
- pci->pin_cfg[offset].fun_msk,
|
||||
- pci->pin_cfg[offset].fun_msk);
|
||||
- if (ret) {
|
||||
- dev_err(pci->dev, "set gpio%d GPIO failed\n", offset);
|
||||
- return ret;
|
||||
- }
|
||||
- } else {
|
||||
- dev_err(pci->dev, "Couldn't find function mux %d\n", mux);
|
||||
- return -EINVAL;
|
||||
- }
|
||||
+ mux <<= ffs(pci->pin_cfg[offset].fun_msk) - 1;
|
||||
+ ret = regmap_update_bits(pci->rk808->regmap,
|
||||
+ pci->pin_cfg[offset].fun_reg,
|
||||
+ pci->pin_cfg[offset].fun_msk, mux);
|
||||
+
|
||||
+ if (ret)
|
||||
+ dev_err(pci->dev, "set gpio%d func%d failed\n", offset, mux);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -317,6 +434,22 @@ static int rk805_pinctrl_set_mux(struct
|
||||
return _rk805_pinctrl_set_mux(pctldev, offset, mux);
|
||||
}
|
||||
|
||||
+static int rk805_pinctrl_gpio_request_enable(struct pinctrl_dev *pctldev,
|
||||
+ struct pinctrl_gpio_range *range,
|
||||
+ unsigned int offset)
|
||||
+{
|
||||
+ struct rk805_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
|
||||
+
|
||||
+ switch (pci->rk808->variant) {
|
||||
+ case RK805_ID:
|
||||
+ return _rk805_pinctrl_set_mux(pctldev, offset, RK805_PINMUX_GPIO);
|
||||
+ case RK806_ID:
|
||||
+ return _rk805_pinctrl_set_mux(pctldev, offset, RK806_PINMUX_FUN5);
|
||||
+ }
|
||||
+
|
||||
+ return -ENOTSUPP;
|
||||
+}
|
||||
+
|
||||
static int rk805_pmx_gpio_set_direction(struct pinctrl_dev *pctldev,
|
||||
struct pinctrl_gpio_range *range,
|
||||
unsigned int offset, bool input)
|
||||
@@ -324,13 +457,6 @@ static int rk805_pmx_gpio_set_direction(
|
||||
struct rk805_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
|
||||
int ret;
|
||||
|
||||
- /* switch to gpio function */
|
||||
- ret = _rk805_pinctrl_set_mux(pctldev, offset, RK805_PINMUX_GPIO);
|
||||
- if (ret) {
|
||||
- dev_err(pci->dev, "set gpio%d mux failed\n", offset);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
/* set direction */
|
||||
if (!pci->pin_cfg[offset].dir_msk)
|
||||
return 0;
|
||||
@@ -352,6 +478,7 @@ static const struct pinmux_ops rk805_pin
|
||||
.get_function_name = rk805_pinctrl_get_func_name,
|
||||
.get_function_groups = rk805_pinctrl_get_func_groups,
|
||||
.set_mux = rk805_pinctrl_set_mux,
|
||||
+ .gpio_request_enable = rk805_pinctrl_gpio_request_enable,
|
||||
.gpio_set_direction = rk805_pmx_gpio_set_direction,
|
||||
};
|
||||
|
||||
@@ -364,6 +491,7 @@ static int rk805_pinconf_get(struct pinc
|
||||
|
||||
switch (param) {
|
||||
case PIN_CONFIG_OUTPUT:
|
||||
+ case PIN_CONFIG_INPUT_ENABLE:
|
||||
arg = rk805_gpio_get(&pci->gpio_chip, pin);
|
||||
break;
|
||||
default:
|
||||
@@ -393,6 +521,12 @@ static int rk805_pinconf_set(struct pinc
|
||||
rk805_gpio_set(&pci->gpio_chip, pin, arg);
|
||||
rk805_pmx_gpio_set_direction(pctldev, NULL, pin, false);
|
||||
break;
|
||||
+ case PIN_CONFIG_INPUT_ENABLE:
|
||||
+ if (pci->rk808->variant != RK805_ID && arg) {
|
||||
+ rk805_pmx_gpio_set_direction(pctldev, NULL, pin, true);
|
||||
+ break;
|
||||
+ }
|
||||
+ fallthrough;
|
||||
default:
|
||||
dev_err(pci->dev, "Properties not supported\n");
|
||||
return -ENOTSUPP;
|
||||
@@ -448,6 +582,18 @@ static int rk805_pinctrl_probe(struct pl
|
||||
pci->pin_cfg = rk805_gpio_cfgs;
|
||||
pci->gpio_chip.ngpio = ARRAY_SIZE(rk805_gpio_cfgs);
|
||||
break;
|
||||
+ case RK806_ID:
|
||||
+ pci->pins = rk806_pins_desc;
|
||||
+ pci->num_pins = ARRAY_SIZE(rk806_pins_desc);
|
||||
+ pci->functions = rk806_pin_functions;
|
||||
+ pci->num_functions = ARRAY_SIZE(rk806_pin_functions);
|
||||
+ pci->groups = rk806_pin_groups;
|
||||
+ pci->num_pin_groups = ARRAY_SIZE(rk806_pin_groups);
|
||||
+ pci->pinctrl_desc.pins = rk806_pins_desc;
|
||||
+ pci->pinctrl_desc.npins = ARRAY_SIZE(rk806_pins_desc);
|
||||
+ pci->pin_cfg = rk806_gpio_cfgs;
|
||||
+ pci->gpio_chip.ngpio = ARRAY_SIZE(rk806_gpio_cfgs);
|
||||
+ break;
|
||||
default:
|
||||
dev_err(&pdev->dev, "unsupported RK805 ID %lu\n",
|
||||
pci->rk808->variant);
|
||||
@@ -488,5 +634,6 @@ static struct platform_driver rk805_pinc
|
||||
module_platform_driver(rk805_pinctrl_driver);
|
||||
|
||||
MODULE_DESCRIPTION("RK805 pin control and GPIO driver");
|
||||
+MODULE_AUTHOR("Xu Shengfei <xsf@rock-chips.com>");
|
||||
MODULE_AUTHOR("Joseph Chen <chenjh@rock-chips.com>");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
@@ -1,28 +0,0 @@
|
||||
From 2a46cd97f401a669d71b3d36b78bd6653f8424ee Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Jirman <megi@xff.cz>
|
||||
Date: Thu, 19 Oct 2023 18:57:25 +0200
|
||||
Subject: [PATCH] mfd: rk8xx: Add support for standard system-power-controller
|
||||
property
|
||||
|
||||
DT property rockchip,system-power-controller is now deprecated.
|
||||
|
||||
Signed-off-by: Ondrej Jirman <megi@xff.cz>
|
||||
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20231019165732.3818789-4-megi@xff.cz
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/mfd/rk8xx-core.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/mfd/rk8xx-core.c
|
||||
+++ b/drivers/mfd/rk8xx-core.c
|
||||
@@ -685,7 +685,8 @@ int rk8xx_probe(struct device *dev, int
|
||||
if (ret)
|
||||
return dev_err_probe(dev, ret, "failed to add MFD devices\n");
|
||||
|
||||
- if (device_property_read_bool(dev, "rockchip,system-power-controller")) {
|
||||
+ if (device_property_read_bool(dev, "rockchip,system-power-controller") ||
|
||||
+ device_property_read_bool(dev, "system-power-controller")) {
|
||||
ret = devm_register_sys_off_handler(dev,
|
||||
SYS_OFF_MODE_POWER_OFF_PREPARE, SYS_OFF_PRIO_HIGH,
|
||||
&rk808_power_off, rk808);
|
||||
@@ -1,29 +0,0 @@
|
||||
From b0227e7081404448a0059b8698fdffd2dec280d2 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Jirman <megi@xff.cz>
|
||||
Date: Thu, 19 Oct 2023 18:57:26 +0200
|
||||
Subject: [PATCH] mfd: rk8xx: Add support for RK806 power off
|
||||
|
||||
Use DEV_OFF bit to power off the RK806 PMIC, when system-power-controller
|
||||
is used in DTS.
|
||||
|
||||
Signed-off-by: Ondrej Jirman <megi@xff.cz>
|
||||
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20231019165732.3818789-5-megi@xff.cz
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/mfd/rk8xx-core.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/drivers/mfd/rk8xx-core.c
|
||||
+++ b/drivers/mfd/rk8xx-core.c
|
||||
@@ -525,6 +525,10 @@ static int rk808_power_off(struct sys_of
|
||||
reg = RK805_DEV_CTRL_REG;
|
||||
bit = DEV_OFF;
|
||||
break;
|
||||
+ case RK806_ID:
|
||||
+ reg = RK806_SYS_CFG3;
|
||||
+ bit = DEV_OFF;
|
||||
+ break;
|
||||
case RK808_ID:
|
||||
reg = RK808_DEVCTRL_REG,
|
||||
bit = DEV_OFF_RST;
|
||||
@@ -1,164 +0,0 @@
|
||||
From 4aedcd4aa61d536ca17e67ecd5bc5d42529164f4 Mon Sep 17 00:00:00 2001
|
||||
From: Neil Armstrong <neil.armstrong@linaro.org>
|
||||
Date: Thu, 16 Nov 2023 15:05:13 +0100
|
||||
Subject: [PATCH] mfd: rk8xx: fixup devices registration with
|
||||
PLATFORM_DEVID_AUTO
|
||||
|
||||
Since commit 210f418f8ace ("mfd: rk8xx: Add rk806 support"), devices are
|
||||
registered with "0" as id, causing devices to not have an automatic device id
|
||||
and prevents having multiple RK8xx PMICs on the same system.
|
||||
|
||||
Properly pass PLATFORM_DEVID_AUTO to devm_mfd_add_devices() and since
|
||||
it will ignore the cells .id with this special value, also cleanup
|
||||
by removing all now ignored cells .id values.
|
||||
|
||||
Now we have the same behaviour as before rk806 introduction and rk806
|
||||
retains the intended behavior.
|
||||
|
||||
This fixes a regression while booting the Odroid Go Ultra on v6.6.1:
|
||||
sysfs: cannot create duplicate filename '/bus/platform/devices/rk808-clkout'
|
||||
CPU: 3 PID: 97 Comm: kworker/u12:2 Not tainted 6.6.1 #1
|
||||
Hardware name: Hardkernel ODROID-GO-Ultra (DT)
|
||||
Workqueue: events_unbound deferred_probe_work_func
|
||||
Call trace:
|
||||
dump_backtrace+0x9c/0x11c
|
||||
show_stack+0x18/0x24
|
||||
dump_stack_lvl+0x78/0xc4
|
||||
dump_stack+0x18/0x24
|
||||
sysfs_warn_dup+0x64/0x80
|
||||
sysfs_do_create_link_sd+0xf0/0xf8
|
||||
sysfs_create_link+0x20/0x40
|
||||
bus_add_device+0x114/0x160
|
||||
device_add+0x3f0/0x7cc
|
||||
platform_device_add+0x180/0x270
|
||||
mfd_add_device+0x390/0x4a8
|
||||
devm_mfd_add_devices+0xb0/0x150
|
||||
rk8xx_probe+0x26c/0x410
|
||||
rk8xx_i2c_probe+0x64/0x98
|
||||
i2c_device_probe+0x104/0x2e8
|
||||
really_probe+0x184/0x3c8
|
||||
__driver_probe_device+0x7c/0x16c
|
||||
driver_probe_device+0x3c/0x10c
|
||||
__device_attach_driver+0xbc/0x158
|
||||
bus_for_each_drv+0x80/0xdc
|
||||
__device_attach+0x9c/0x1ac
|
||||
device_initial_probe+0x14/0x20
|
||||
bus_probe_device+0xac/0xb0
|
||||
deferred_probe_work_func+0xa0/0xf4
|
||||
process_one_work+0x1bc/0x378
|
||||
worker_thread+0x1dc/0x3d4
|
||||
kthread+0x104/0x118
|
||||
ret_from_fork+0x10/0x20
|
||||
rk8xx-i2c 0-001c: error -EEXIST: failed to add MFD devices
|
||||
rk8xx-i2c: probe of 0-001c failed with error -17
|
||||
|
||||
Fixes: 210f418f8ace ("mfd: rk8xx: Add rk806 support")
|
||||
Reported-by: Adam Green <greena88@gmail.com>
|
||||
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
|
||||
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20231116-topic-amlogic-upstream-fix-rk8xx-devid-auto-v2-1-3f1bad68ab9d@linaro.org
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/mfd/rk8xx-core.c | 34 +++++++++++++---------------------
|
||||
1 file changed, 13 insertions(+), 21 deletions(-)
|
||||
|
||||
--- a/drivers/mfd/rk8xx-core.c
|
||||
+++ b/drivers/mfd/rk8xx-core.c
|
||||
@@ -53,76 +53,68 @@ static const struct resource rk817_charg
|
||||
};
|
||||
|
||||
static const struct mfd_cell rk805s[] = {
|
||||
- { .name = "rk808-clkout", .id = PLATFORM_DEVID_NONE, },
|
||||
- { .name = "rk808-regulator", .id = PLATFORM_DEVID_NONE, },
|
||||
- { .name = "rk805-pinctrl", .id = PLATFORM_DEVID_NONE, },
|
||||
+ { .name = "rk808-clkout", },
|
||||
+ { .name = "rk808-regulator", },
|
||||
+ { .name = "rk805-pinctrl", },
|
||||
{
|
||||
.name = "rk808-rtc",
|
||||
.num_resources = ARRAY_SIZE(rtc_resources),
|
||||
.resources = &rtc_resources[0],
|
||||
- .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
{ .name = "rk805-pwrkey",
|
||||
.num_resources = ARRAY_SIZE(rk805_key_resources),
|
||||
.resources = &rk805_key_resources[0],
|
||||
- .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct mfd_cell rk806s[] = {
|
||||
- { .name = "rk805-pinctrl", .id = PLATFORM_DEVID_AUTO, },
|
||||
- { .name = "rk808-regulator", .id = PLATFORM_DEVID_AUTO, },
|
||||
+ { .name = "rk805-pinctrl", },
|
||||
+ { .name = "rk808-regulator", },
|
||||
{
|
||||
.name = "rk805-pwrkey",
|
||||
.resources = rk806_pwrkey_resources,
|
||||
.num_resources = ARRAY_SIZE(rk806_pwrkey_resources),
|
||||
- .id = PLATFORM_DEVID_AUTO,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct mfd_cell rk808s[] = {
|
||||
- { .name = "rk808-clkout", .id = PLATFORM_DEVID_NONE, },
|
||||
- { .name = "rk808-regulator", .id = PLATFORM_DEVID_NONE, },
|
||||
+ { .name = "rk808-clkout", },
|
||||
+ { .name = "rk808-regulator", },
|
||||
{
|
||||
.name = "rk808-rtc",
|
||||
.num_resources = ARRAY_SIZE(rtc_resources),
|
||||
.resources = rtc_resources,
|
||||
- .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct mfd_cell rk817s[] = {
|
||||
- { .name = "rk808-clkout", .id = PLATFORM_DEVID_NONE, },
|
||||
- { .name = "rk808-regulator", .id = PLATFORM_DEVID_NONE, },
|
||||
+ { .name = "rk808-clkout", },
|
||||
+ { .name = "rk808-regulator", },
|
||||
{
|
||||
.name = "rk805-pwrkey",
|
||||
.num_resources = ARRAY_SIZE(rk817_pwrkey_resources),
|
||||
.resources = &rk817_pwrkey_resources[0],
|
||||
- .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
{
|
||||
.name = "rk808-rtc",
|
||||
.num_resources = ARRAY_SIZE(rk817_rtc_resources),
|
||||
.resources = &rk817_rtc_resources[0],
|
||||
- .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
- { .name = "rk817-codec", .id = PLATFORM_DEVID_NONE, },
|
||||
+ { .name = "rk817-codec", },
|
||||
{
|
||||
.name = "rk817-charger",
|
||||
.num_resources = ARRAY_SIZE(rk817_charger_resources),
|
||||
.resources = &rk817_charger_resources[0],
|
||||
- .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct mfd_cell rk818s[] = {
|
||||
- { .name = "rk808-clkout", .id = PLATFORM_DEVID_NONE, },
|
||||
- { .name = "rk808-regulator", .id = PLATFORM_DEVID_NONE, },
|
||||
+ { .name = "rk808-clkout", },
|
||||
+ { .name = "rk808-regulator", },
|
||||
{
|
||||
.name = "rk808-rtc",
|
||||
.num_resources = ARRAY_SIZE(rtc_resources),
|
||||
.resources = rtc_resources,
|
||||
- .id = PLATFORM_DEVID_NONE,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -684,7 +676,7 @@ int rk8xx_probe(struct device *dev, int
|
||||
pre_init_reg[i].addr);
|
||||
}
|
||||
|
||||
- ret = devm_mfd_add_devices(dev, 0, cells, nr_cells, NULL, 0,
|
||||
+ ret = devm_mfd_add_devices(dev, PLATFORM_DEVID_AUTO, cells, nr_cells, NULL, 0,
|
||||
regmap_irq_get_domain(rk808->irq_data));
|
||||
if (ret)
|
||||
return dev_err_probe(dev, ret, "failed to add MFD devices\n");
|
||||
@@ -1,82 +0,0 @@
|
||||
From 647e57351f8ebc37d8e12cbc0f4bf7471754a0cc Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 20 Oct 2022 22:42:40 +0200
|
||||
Subject: [PATCH] regulator: rk808: reduce 'struct rk808' usage
|
||||
|
||||
Reduce usage of 'struct rk808' (driver data of the parent MFD), so
|
||||
that only the chip variant field is still being accessed directly.
|
||||
This allows restructuring the MFD driver to support SPI based
|
||||
PMICs.
|
||||
|
||||
Acked-by: Mark Brown <broonie@kernel.org>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20221020204251.108565-3-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/rk808-regulator.c | 20 ++++++++++++--------
|
||||
1 file changed, 12 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/rk808-regulator.c
|
||||
+++ b/drivers/regulator/rk808-regulator.c
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio.h>
|
||||
-#include <linux/i2c.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_gpio.h>
|
||||
@@ -1286,19 +1285,23 @@ dt_parse_end:
|
||||
static int rk808_regulator_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent);
|
||||
- struct i2c_client *client = rk808->i2c;
|
||||
struct regulator_config config = {};
|
||||
struct regulator_dev *rk808_rdev;
|
||||
struct rk808_regulator_data *pdata;
|
||||
const struct regulator_desc *regulators;
|
||||
+ struct regmap *regmap;
|
||||
int ret, i, nregulators;
|
||||
|
||||
+ regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
||||
+ if (!regmap)
|
||||
+ return -ENODEV;
|
||||
+
|
||||
pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
|
||||
if (!pdata)
|
||||
return -ENOMEM;
|
||||
|
||||
- ret = rk808_regulator_dt_parse_pdata(&pdev->dev, &client->dev,
|
||||
- rk808->regmap, pdata);
|
||||
+ ret = rk808_regulator_dt_parse_pdata(&pdev->dev, pdev->dev.parent,
|
||||
+ regmap, pdata);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@@ -1326,21 +1329,22 @@ static int rk808_regulator_probe(struct
|
||||
nregulators = RK818_NUM_REGULATORS;
|
||||
break;
|
||||
default:
|
||||
- dev_err(&client->dev, "unsupported RK8XX ID %lu\n",
|
||||
+ dev_err(&pdev->dev, "unsupported RK8XX ID %lu\n",
|
||||
rk808->variant);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- config.dev = &client->dev;
|
||||
+ config.dev = &pdev->dev;
|
||||
+ config.dev->of_node = pdev->dev.parent->of_node;
|
||||
config.driver_data = pdata;
|
||||
- config.regmap = rk808->regmap;
|
||||
+ config.regmap = regmap;
|
||||
|
||||
/* Instantiate the regulators */
|
||||
for (i = 0; i < nregulators; i++) {
|
||||
rk808_rdev = devm_regulator_register(&pdev->dev,
|
||||
®ulators[i], &config);
|
||||
if (IS_ERR(rk808_rdev)) {
|
||||
- dev_err(&client->dev,
|
||||
+ dev_err(&pdev->dev,
|
||||
"failed to register %d regulator\n", i);
|
||||
return PTR_ERR(rk808_rdev);
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
From f39f8709c217d82aabbf51d8669731137ce09aea Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 20 Oct 2022 22:42:49 +0200
|
||||
Subject: [PATCH] regulator: rk808: Use dev_err_probe
|
||||
|
||||
Print error message for potential EPROBE_DEFER error using
|
||||
dev_err_probe, which captures the reason in
|
||||
/sys/kernel/debug/devices_deferred and otherwise silences
|
||||
the message.
|
||||
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20221020204251.108565-12-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/rk808-regulator.c | 8 +++-----
|
||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/rk808-regulator.c
|
||||
+++ b/drivers/regulator/rk808-regulator.c
|
||||
@@ -1343,11 +1343,9 @@ static int rk808_regulator_probe(struct
|
||||
for (i = 0; i < nregulators; i++) {
|
||||
rk808_rdev = devm_regulator_register(&pdev->dev,
|
||||
®ulators[i], &config);
|
||||
- if (IS_ERR(rk808_rdev)) {
|
||||
- dev_err(&pdev->dev,
|
||||
- "failed to register %d regulator\n", i);
|
||||
- return PTR_ERR(rk808_rdev);
|
||||
- }
|
||||
+ if (IS_ERR(rk808_rdev))
|
||||
+ return dev_err_probe(&pdev->dev, PTR_ERR(rk808_rdev),
|
||||
+ "failed to register %d regulator\n", i);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -1,76 +0,0 @@
|
||||
From 431cb97b763133fba8b1c68c1ed089315f25e4dd Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:14 +0200
|
||||
Subject: [PATCH] regulator: expose regulator_find_closest_bigger
|
||||
|
||||
Expose and document the table lookup logic used by
|
||||
regulator_set_ramp_delay_regmap, so that it can be
|
||||
reused for devices that cannot be configured via
|
||||
regulator_set_ramp_delay_regmap.
|
||||
|
||||
Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock64, Quartz64 Model A + B
|
||||
Tested-by: Vincent Legoll <vincent.legoll@gmail.com> # Pine64 QuartzPro64
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-11-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/helpers.c | 22 ++++++++++++++++++----
|
||||
include/linux/regulator/driver.h | 2 ++
|
||||
2 files changed, 20 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/helpers.c
|
||||
+++ b/drivers/regulator/helpers.c
|
||||
@@ -902,8 +902,21 @@ bool regulator_is_equal(struct regulator
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(regulator_is_equal);
|
||||
|
||||
-static int find_closest_bigger(unsigned int target, const unsigned int *table,
|
||||
- unsigned int num_sel, unsigned int *sel)
|
||||
+/**
|
||||
+ * regulator_find_closest_bigger - helper to find offset in ramp delay table
|
||||
+ *
|
||||
+ * @target: targeted ramp_delay
|
||||
+ * @table: table with supported ramp delays
|
||||
+ * @num_sel: number of entries in the table
|
||||
+ * @sel: Pointer to store table offset
|
||||
+ *
|
||||
+ * This is the internal helper used by regulator_set_ramp_delay_regmap to
|
||||
+ * map ramp delay to register value. It should only be used directly if
|
||||
+ * regulator_set_ramp_delay_regmap cannot handle a specific device setup
|
||||
+ * (e.g. because the value is split over multiple registers).
|
||||
+ */
|
||||
+int regulator_find_closest_bigger(unsigned int target, const unsigned int *table,
|
||||
+ unsigned int num_sel, unsigned int *sel)
|
||||
{
|
||||
unsigned int s, tmp, max, maxsel = 0;
|
||||
bool found = false;
|
||||
@@ -933,6 +946,7 @@ static int find_closest_bigger(unsigned
|
||||
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(regulator_find_closest_bigger);
|
||||
|
||||
/**
|
||||
* regulator_set_ramp_delay_regmap - set_ramp_delay() helper
|
||||
@@ -951,8 +965,8 @@ int regulator_set_ramp_delay_regmap(stru
|
||||
if (WARN_ON(!rdev->desc->n_ramp_values || !rdev->desc->ramp_delay_table))
|
||||
return -EINVAL;
|
||||
|
||||
- ret = find_closest_bigger(ramp_delay, rdev->desc->ramp_delay_table,
|
||||
- rdev->desc->n_ramp_values, &sel);
|
||||
+ ret = regulator_find_closest_bigger(ramp_delay, rdev->desc->ramp_delay_table,
|
||||
+ rdev->desc->n_ramp_values, &sel);
|
||||
|
||||
if (ret) {
|
||||
dev_warn(rdev_get_dev(rdev),
|
||||
--- a/include/linux/regulator/driver.h
|
||||
+++ b/include/linux/regulator/driver.h
|
||||
@@ -758,6 +758,8 @@ int regulator_set_current_limit_regmap(s
|
||||
int min_uA, int max_uA);
|
||||
int regulator_get_current_limit_regmap(struct regulator_dev *rdev);
|
||||
void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data);
|
||||
+int regulator_find_closest_bigger(unsigned int target, const unsigned int *table,
|
||||
+ unsigned int num_sel, unsigned int *sel);
|
||||
int regulator_set_ramp_delay_regmap(struct regulator_dev *rdev, int ramp_delay);
|
||||
int regulator_sync_voltage_rdev(struct regulator_dev *rdev);
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
From 1b9e86d445a0f5c6d8dcbaf11508cb5dfb5848a8 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:15 +0200
|
||||
Subject: [PATCH] regulator: rk808: fix asynchronous probing
|
||||
|
||||
If the probe routine fails with -EPROBE_DEFER after taking over the
|
||||
OF node from its parent driver, reprobing triggers pinctrl_bind_pins()
|
||||
and that will fail. Fix this by setting of_node_reused, so that the
|
||||
device does not try to setup pin muxing.
|
||||
|
||||
For me this always happens once the driver is marked to prefer async
|
||||
probing and never happens without that flag.
|
||||
|
||||
Fixes: 259b93b21a9f ("regulator: Set PROBE_PREFER_ASYNCHRONOUS for drivers that existed in 4.14")
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-12-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/rk808-regulator.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/regulator/rk808-regulator.c
|
||||
+++ b/drivers/regulator/rk808-regulator.c
|
||||
@@ -1336,6 +1336,7 @@ static int rk808_regulator_probe(struct
|
||||
|
||||
config.dev = &pdev->dev;
|
||||
config.dev->of_node = pdev->dev.parent->of_node;
|
||||
+ config.dev->of_node_reused = true;
|
||||
config.driver_data = pdata;
|
||||
config.regmap = regmap;
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
From 5111c931f36cebe77d4ce66964c348e6eb4afca0 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:16 +0200
|
||||
Subject: [PATCH] regulator: rk808: cleanup parent device usage
|
||||
|
||||
By overridering the device's of_node a bit earlier we can
|
||||
get the GPIOs and any other DT properties from our own
|
||||
device instead of relying on the parent device.
|
||||
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-13-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/rk808-regulator.c | 13 ++++++-------
|
||||
1 file changed, 6 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/rk808-regulator.c
|
||||
+++ b/drivers/regulator/rk808-regulator.c
|
||||
@@ -1245,20 +1245,19 @@ static const struct regulator_desc rk818
|
||||
};
|
||||
|
||||
static int rk808_regulator_dt_parse_pdata(struct device *dev,
|
||||
- struct device *client_dev,
|
||||
struct regmap *map,
|
||||
struct rk808_regulator_data *pdata)
|
||||
{
|
||||
struct device_node *np;
|
||||
int tmp, ret = 0, i;
|
||||
|
||||
- np = of_get_child_by_name(client_dev->of_node, "regulators");
|
||||
+ np = of_get_child_by_name(dev->of_node, "regulators");
|
||||
if (!np)
|
||||
return -ENXIO;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(pdata->dvs_gpio); i++) {
|
||||
pdata->dvs_gpio[i] =
|
||||
- devm_gpiod_get_index_optional(client_dev, "dvs", i,
|
||||
+ devm_gpiod_get_index_optional(dev, "dvs", i,
|
||||
GPIOD_OUT_LOW);
|
||||
if (IS_ERR(pdata->dvs_gpio[i])) {
|
||||
ret = PTR_ERR(pdata->dvs_gpio[i]);
|
||||
@@ -1292,6 +1291,9 @@ static int rk808_regulator_probe(struct
|
||||
struct regmap *regmap;
|
||||
int ret, i, nregulators;
|
||||
|
||||
+ pdev->dev.of_node = pdev->dev.parent->of_node;
|
||||
+ pdev->dev.of_node_reused = true;
|
||||
+
|
||||
regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
||||
if (!regmap)
|
||||
return -ENODEV;
|
||||
@@ -1300,8 +1302,7 @@ static int rk808_regulator_probe(struct
|
||||
if (!pdata)
|
||||
return -ENOMEM;
|
||||
|
||||
- ret = rk808_regulator_dt_parse_pdata(&pdev->dev, pdev->dev.parent,
|
||||
- regmap, pdata);
|
||||
+ ret = rk808_regulator_dt_parse_pdata(&pdev->dev, regmap, pdata);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@@ -1335,8 +1336,6 @@ static int rk808_regulator_probe(struct
|
||||
}
|
||||
|
||||
config.dev = &pdev->dev;
|
||||
- config.dev->of_node = pdev->dev.parent->of_node;
|
||||
- config.dev->of_node_reused = true;
|
||||
config.driver_data = pdata;
|
||||
config.regmap = regmap;
|
||||
|
||||
@@ -1,482 +0,0 @@
|
||||
From f991a220a44726c54c2332569a2a80bf074aa775 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Thu, 4 May 2023 19:36:18 +0200
|
||||
Subject: [PATCH] regulator: rk808: add rk806 support
|
||||
|
||||
Add rk806 support to the existing rk808 regulator
|
||||
driver.
|
||||
|
||||
This has been implemented using shengfei Xu's rk806
|
||||
specific driver from the vendor tree as reference.
|
||||
|
||||
Co-developed-by: shengfei Xu <xsf@rock-chips.com>
|
||||
Signed-off-by: shengfei Xu <xsf@rock-chips.com>
|
||||
Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
|
||||
Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock64, Quartz64 Model A + B
|
||||
Tested-by: Vincent Legoll <vincent.legoll@gmail.com> # Pine64 QuartzPro64
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230504173618.142075-15-sebastian.reichel@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/rk808-regulator.c | 385 ++++++++++++++++++++++++++++
|
||||
1 file changed, 385 insertions(+)
|
||||
|
||||
--- a/drivers/regulator/rk808-regulator.c
|
||||
+++ b/drivers/regulator/rk808-regulator.c
|
||||
@@ -3,9 +3,11 @@
|
||||
* Regulator driver for Rockchip RK805/RK808/RK818
|
||||
*
|
||||
* Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd
|
||||
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
|
||||
*
|
||||
* Author: Chris Zhong <zyw@rock-chips.com>
|
||||
* Author: Zhang Qing <zhangqing@rock-chips.com>
|
||||
+ * Author: Xu Shengfei <xsf@rock-chips.com>
|
||||
*
|
||||
* Copyright (C) 2016 PHYTEC Messtechnik GmbH
|
||||
*
|
||||
@@ -39,6 +41,13 @@
|
||||
#define RK818_LDO3_ON_VSEL_MASK 0xf
|
||||
#define RK818_BOOST_ON_VSEL_MASK 0xe0
|
||||
|
||||
+#define RK806_DCDC_SLP_REG_OFFSET 0x0A
|
||||
+#define RK806_NLDO_SLP_REG_OFFSET 0x05
|
||||
+#define RK806_PLDO_SLP_REG_OFFSET 0x06
|
||||
+
|
||||
+#define RK806_BUCK_SEL_CNT 0xff
|
||||
+#define RK806_LDO_SEL_CNT 0xff
|
||||
+
|
||||
/* Ramp rate definitions for buck1 / buck2 only */
|
||||
#define RK808_RAMP_RATE_OFFSET 3
|
||||
#define RK808_RAMP_RATE_MASK (3 << RK808_RAMP_RATE_OFFSET)
|
||||
@@ -117,6 +126,34 @@
|
||||
RK8XX_DESC_COM(_id, _match, _supply, _min, _max, _step, _vreg, \
|
||||
_vmask, _ereg, _emask, 0, 0, _etime, &rk805_reg_ops)
|
||||
|
||||
+#define RK806_REGULATOR(_name, _supply_name, _id, _ops,\
|
||||
+ _n_voltages, _vr, _er, _lr, ctrl_bit,\
|
||||
+ _rr, _rm, _rt)\
|
||||
+[_id] = {\
|
||||
+ .name = _name,\
|
||||
+ .supply_name = _supply_name,\
|
||||
+ .of_match = of_match_ptr(_name),\
|
||||
+ .regulators_node = of_match_ptr("regulators"),\
|
||||
+ .id = _id,\
|
||||
+ .ops = &_ops,\
|
||||
+ .type = REGULATOR_VOLTAGE,\
|
||||
+ .n_voltages = _n_voltages,\
|
||||
+ .linear_ranges = _lr,\
|
||||
+ .n_linear_ranges = ARRAY_SIZE(_lr),\
|
||||
+ .vsel_reg = _vr,\
|
||||
+ .vsel_mask = 0xff,\
|
||||
+ .enable_reg = _er,\
|
||||
+ .enable_mask = ENABLE_MASK(ctrl_bit),\
|
||||
+ .enable_val = ENABLE_MASK(ctrl_bit),\
|
||||
+ .disable_val = DISABLE_VAL(ctrl_bit),\
|
||||
+ .of_map_mode = rk8xx_regulator_of_map_mode,\
|
||||
+ .ramp_reg = _rr,\
|
||||
+ .ramp_mask = _rm,\
|
||||
+ .ramp_delay_table = _rt, \
|
||||
+ .n_ramp_values = ARRAY_SIZE(_rt), \
|
||||
+ .owner = THIS_MODULE,\
|
||||
+ }
|
||||
+
|
||||
#define RK8XX_DESC(_id, _match, _supply, _min, _max, _step, _vreg, \
|
||||
_vmask, _ereg, _emask, _etime) \
|
||||
RK8XX_DESC_COM(_id, _match, _supply, _min, _max, _step, _vreg, \
|
||||
@@ -153,6 +190,17 @@
|
||||
RKXX_DESC_SWITCH_COM(_id, _match, _supply, _ereg, _emask, \
|
||||
0, 0, &rk808_switch_ops)
|
||||
|
||||
+struct rk8xx_register_bit {
|
||||
+ u8 reg;
|
||||
+ u8 bit;
|
||||
+};
|
||||
+
|
||||
+#define RK8XX_REG_BIT(_reg, _bit) \
|
||||
+ { \
|
||||
+ .reg = _reg, \
|
||||
+ .bit = BIT(_bit), \
|
||||
+ }
|
||||
+
|
||||
struct rk808_regulator_data {
|
||||
struct gpio_desc *dvs_gpio[2];
|
||||
};
|
||||
@@ -216,6 +264,133 @@ static const unsigned int rk817_buck1_4_
|
||||
3000, 6300, 12500, 25000
|
||||
};
|
||||
|
||||
+static int rk806_set_mode_dcdc(struct regulator_dev *rdev, unsigned int mode)
|
||||
+{
|
||||
+ int rid = rdev_get_id(rdev);
|
||||
+ int ctr_bit, reg;
|
||||
+
|
||||
+ reg = RK806_POWER_FPWM_EN0 + rid / 8;
|
||||
+ ctr_bit = rid % 8;
|
||||
+
|
||||
+ switch (mode) {
|
||||
+ case REGULATOR_MODE_FAST:
|
||||
+ return regmap_update_bits(rdev->regmap, reg,
|
||||
+ PWM_MODE_MSK << ctr_bit,
|
||||
+ FPWM_MODE << ctr_bit);
|
||||
+ case REGULATOR_MODE_NORMAL:
|
||||
+ return regmap_update_bits(rdev->regmap, reg,
|
||||
+ PWM_MODE_MSK << ctr_bit,
|
||||
+ AUTO_PWM_MODE << ctr_bit);
|
||||
+ default:
|
||||
+ dev_err(rdev_get_dev(rdev), "mode unsupported: %u\n", mode);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static unsigned int rk806_get_mode_dcdc(struct regulator_dev *rdev)
|
||||
+{
|
||||
+ int rid = rdev_get_id(rdev);
|
||||
+ int ctr_bit, reg;
|
||||
+ unsigned int val;
|
||||
+ int err;
|
||||
+
|
||||
+ reg = RK806_POWER_FPWM_EN0 + rid / 8;
|
||||
+ ctr_bit = rid % 8;
|
||||
+
|
||||
+ err = regmap_read(rdev->regmap, reg, &val);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ if ((val >> ctr_bit) & FPWM_MODE)
|
||||
+ return REGULATOR_MODE_FAST;
|
||||
+ else
|
||||
+ return REGULATOR_MODE_NORMAL;
|
||||
+}
|
||||
+
|
||||
+static const struct rk8xx_register_bit rk806_dcdc_rate2[] = {
|
||||
+ RK8XX_REG_BIT(0xEB, 0),
|
||||
+ RK8XX_REG_BIT(0xEB, 1),
|
||||
+ RK8XX_REG_BIT(0xEB, 2),
|
||||
+ RK8XX_REG_BIT(0xEB, 3),
|
||||
+ RK8XX_REG_BIT(0xEB, 4),
|
||||
+ RK8XX_REG_BIT(0xEB, 5),
|
||||
+ RK8XX_REG_BIT(0xEB, 6),
|
||||
+ RK8XX_REG_BIT(0xEB, 7),
|
||||
+ RK8XX_REG_BIT(0xEA, 0),
|
||||
+ RK8XX_REG_BIT(0xEA, 1),
|
||||
+};
|
||||
+
|
||||
+static const unsigned int rk806_ramp_delay_table_dcdc[] = {
|
||||
+ 50000, 25000, 12500, 6250, 3125, 1560, 961, 390
|
||||
+};
|
||||
+
|
||||
+static int rk806_set_ramp_delay_dcdc(struct regulator_dev *rdev, int ramp_delay)
|
||||
+{
|
||||
+ int rid = rdev_get_id(rdev);
|
||||
+ int regval, ramp_value, ret;
|
||||
+
|
||||
+ ret = regulator_find_closest_bigger(ramp_delay, rdev->desc->ramp_delay_table,
|
||||
+ rdev->desc->n_ramp_values, &ramp_value);
|
||||
+ if (ret) {
|
||||
+ dev_warn(rdev_get_dev(rdev),
|
||||
+ "Can't set ramp-delay %u, setting %u\n", ramp_delay,
|
||||
+ rdev->desc->ramp_delay_table[ramp_value]);
|
||||
+ }
|
||||
+
|
||||
+ regval = ramp_value << (ffs(rdev->desc->ramp_mask) - 1);
|
||||
+
|
||||
+ ret = regmap_update_bits(rdev->regmap, rdev->desc->ramp_reg,
|
||||
+ rdev->desc->ramp_mask, regval);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ /*
|
||||
+ * The above is effectively a copy of regulator_set_ramp_delay_regmap(),
|
||||
+ * but that only stores the lower 2 bits for rk806 DCDC ramp. The MSB must
|
||||
+ * be stored in a separate register, so this open codes the implementation
|
||||
+ * to have access to the ramp_value.
|
||||
+ */
|
||||
+
|
||||
+ regval = (ramp_value >> 2) & 0x1 ? rk806_dcdc_rate2[rid].bit : 0;
|
||||
+ return regmap_update_bits(rdev->regmap, rk806_dcdc_rate2[rid].reg,
|
||||
+ rk806_dcdc_rate2[rid].bit,
|
||||
+ regval);
|
||||
+}
|
||||
+
|
||||
+static const unsigned int rk806_ramp_delay_table_ldo[] = {
|
||||
+ 100000, 50000, 25000, 12500, 6280, 3120, 1900, 780
|
||||
+};
|
||||
+
|
||||
+static int rk806_set_suspend_voltage_range(struct regulator_dev *rdev, int reg_offset, int uv)
|
||||
+{
|
||||
+ int sel = regulator_map_voltage_linear_range(rdev, uv, uv);
|
||||
+ unsigned int reg;
|
||||
+
|
||||
+ if (sel < 0)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ reg = rdev->desc->vsel_reg + reg_offset;
|
||||
+
|
||||
+ return regmap_update_bits(rdev->regmap, reg, rdev->desc->vsel_mask, sel);
|
||||
+}
|
||||
+
|
||||
+static int rk806_set_suspend_voltage_range_dcdc(struct regulator_dev *rdev, int uv)
|
||||
+{
|
||||
+ return rk806_set_suspend_voltage_range(rdev, RK806_DCDC_SLP_REG_OFFSET, uv);
|
||||
+}
|
||||
+
|
||||
+static int rk806_set_suspend_voltage_range_nldo(struct regulator_dev *rdev, int uv)
|
||||
+{
|
||||
+ return rk806_set_suspend_voltage_range(rdev, RK806_NLDO_SLP_REG_OFFSET, uv);
|
||||
+}
|
||||
+
|
||||
+static int rk806_set_suspend_voltage_range_pldo(struct regulator_dev *rdev, int uv)
|
||||
+{
|
||||
+ return rk806_set_suspend_voltage_range(rdev, RK806_PLDO_SLP_REG_OFFSET, uv);
|
||||
+}
|
||||
+
|
||||
static int rk808_buck1_2_get_voltage_sel_regmap(struct regulator_dev *rdev)
|
||||
{
|
||||
struct rk808_regulator_data *pdata = rdev_get_drvdata(rdev);
|
||||
@@ -393,6 +568,47 @@ static int rk805_set_suspend_disable(str
|
||||
0);
|
||||
}
|
||||
|
||||
+static const struct rk8xx_register_bit rk806_suspend_bits[] = {
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN0, 0),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN0, 1),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN0, 2),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN0, 3),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN0, 4),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN0, 5),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN0, 6),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN0, 7),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN1, 6),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN1, 7),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN1, 0),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN1, 1),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN1, 2),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN1, 3),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN1, 4),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN2, 1),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN2, 2),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN2, 3),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN2, 4),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN2, 5),
|
||||
+ RK8XX_REG_BIT(RK806_POWER_SLP_EN2, 0),
|
||||
+};
|
||||
+
|
||||
+static int rk806_set_suspend_enable(struct regulator_dev *rdev)
|
||||
+{
|
||||
+ int rid = rdev_get_id(rdev);
|
||||
+
|
||||
+ return regmap_update_bits(rdev->regmap, rk806_suspend_bits[rid].reg,
|
||||
+ rk806_suspend_bits[rid].bit,
|
||||
+ rk806_suspend_bits[rid].bit);
|
||||
+}
|
||||
+
|
||||
+static int rk806_set_suspend_disable(struct regulator_dev *rdev)
|
||||
+{
|
||||
+ int rid = rdev_get_id(rdev);
|
||||
+
|
||||
+ return regmap_update_bits(rdev->regmap, rk806_suspend_bits[rid].reg,
|
||||
+ rk806_suspend_bits[rid].bit, 0);
|
||||
+}
|
||||
+
|
||||
static int rk808_set_suspend_enable(struct regulator_dev *rdev)
|
||||
{
|
||||
unsigned int reg;
|
||||
@@ -561,6 +777,64 @@ static const struct regulator_ops rk805_
|
||||
.set_suspend_disable = rk805_set_suspend_disable,
|
||||
};
|
||||
|
||||
+static const struct regulator_ops rk806_ops_dcdc = {
|
||||
+ .list_voltage = regulator_list_voltage_linear_range,
|
||||
+ .map_voltage = regulator_map_voltage_linear_range,
|
||||
+ .get_voltage_sel = regulator_get_voltage_sel_regmap,
|
||||
+ .set_voltage_sel = regulator_set_voltage_sel_regmap,
|
||||
+ .set_voltage_time_sel = regulator_set_voltage_time_sel,
|
||||
+ .set_mode = rk806_set_mode_dcdc,
|
||||
+ .get_mode = rk806_get_mode_dcdc,
|
||||
+
|
||||
+ .enable = regulator_enable_regmap,
|
||||
+ .disable = regulator_disable_regmap,
|
||||
+ .is_enabled = rk8xx_is_enabled_wmsk_regmap,
|
||||
+
|
||||
+ .set_suspend_mode = rk806_set_mode_dcdc,
|
||||
+ .set_ramp_delay = rk806_set_ramp_delay_dcdc,
|
||||
+
|
||||
+ .set_suspend_voltage = rk806_set_suspend_voltage_range_dcdc,
|
||||
+ .set_suspend_enable = rk806_set_suspend_enable,
|
||||
+ .set_suspend_disable = rk806_set_suspend_disable,
|
||||
+};
|
||||
+
|
||||
+static const struct regulator_ops rk806_ops_nldo = {
|
||||
+ .list_voltage = regulator_list_voltage_linear_range,
|
||||
+ .map_voltage = regulator_map_voltage_linear_range,
|
||||
+ .get_voltage_sel = regulator_get_voltage_sel_regmap,
|
||||
+ .set_voltage_sel = regulator_set_voltage_sel_regmap,
|
||||
+ .set_voltage_time_sel = regulator_set_voltage_time_sel,
|
||||
+
|
||||
+ .enable = regulator_enable_regmap,
|
||||
+ .disable = regulator_disable_regmap,
|
||||
+ .is_enabled = regulator_is_enabled_regmap,
|
||||
+
|
||||
+ .set_ramp_delay = regulator_set_ramp_delay_regmap,
|
||||
+
|
||||
+ .set_suspend_voltage = rk806_set_suspend_voltage_range_nldo,
|
||||
+ .set_suspend_enable = rk806_set_suspend_enable,
|
||||
+ .set_suspend_disable = rk806_set_suspend_disable,
|
||||
+};
|
||||
+
|
||||
+static const struct regulator_ops rk806_ops_pldo = {
|
||||
+ .list_voltage = regulator_list_voltage_linear_range,
|
||||
+ .map_voltage = regulator_map_voltage_linear_range,
|
||||
+
|
||||
+ .get_voltage_sel = regulator_get_voltage_sel_regmap,
|
||||
+ .set_voltage_sel = regulator_set_voltage_sel_regmap,
|
||||
+ .set_voltage_time_sel = regulator_set_voltage_time_sel,
|
||||
+
|
||||
+ .enable = regulator_enable_regmap,
|
||||
+ .disable = regulator_disable_regmap,
|
||||
+ .is_enabled = regulator_is_enabled_regmap,
|
||||
+
|
||||
+ .set_ramp_delay = regulator_set_ramp_delay_regmap,
|
||||
+
|
||||
+ .set_suspend_voltage = rk806_set_suspend_voltage_range_pldo,
|
||||
+ .set_suspend_enable = rk806_set_suspend_enable,
|
||||
+ .set_suspend_disable = rk806_set_suspend_disable,
|
||||
+};
|
||||
+
|
||||
static const struct regulator_ops rk808_buck1_2_ops = {
|
||||
.list_voltage = regulator_list_voltage_linear,
|
||||
.map_voltage = regulator_map_voltage_linear,
|
||||
@@ -743,6 +1017,112 @@ static const struct regulator_desc rk805
|
||||
BIT(2), 400),
|
||||
};
|
||||
|
||||
+static const struct linear_range rk806_buck_voltage_ranges[] = {
|
||||
+ REGULATOR_LINEAR_RANGE(500000, 0, 160, 6250), /* 500mV ~ 1500mV */
|
||||
+ REGULATOR_LINEAR_RANGE(1500000, 161, 237, 25000), /* 1500mV ~ 3400mV */
|
||||
+ REGULATOR_LINEAR_RANGE(3400000, 238, 255, 0),
|
||||
+};
|
||||
+
|
||||
+static const struct linear_range rk806_ldo_voltage_ranges[] = {
|
||||
+ REGULATOR_LINEAR_RANGE(500000, 0, 232, 12500), /* 500mV ~ 3400mV */
|
||||
+ REGULATOR_LINEAR_RANGE(3400000, 233, 255, 0), /* 500mV ~ 3400mV */
|
||||
+};
|
||||
+
|
||||
+static const struct regulator_desc rk806_reg[] = {
|
||||
+ RK806_REGULATOR("dcdc-reg1", "vcc1", RK806_ID_DCDC1, rk806_ops_dcdc,
|
||||
+ RK806_BUCK_SEL_CNT, RK806_BUCK1_ON_VSEL,
|
||||
+ RK806_POWER_EN0, rk806_buck_voltage_ranges, 0,
|
||||
+ RK806_BUCK1_CONFIG, 0xc0, rk806_ramp_delay_table_dcdc),
|
||||
+ RK806_REGULATOR("dcdc-reg2", "vcc2", RK806_ID_DCDC2, rk806_ops_dcdc,
|
||||
+ RK806_BUCK_SEL_CNT, RK806_BUCK2_ON_VSEL,
|
||||
+ RK806_POWER_EN0, rk806_buck_voltage_ranges, 1,
|
||||
+ RK806_BUCK2_CONFIG, 0xc0, rk806_ramp_delay_table_dcdc),
|
||||
+ RK806_REGULATOR("dcdc-reg3", "vcc3", RK806_ID_DCDC3, rk806_ops_dcdc,
|
||||
+ RK806_BUCK_SEL_CNT, RK806_BUCK3_ON_VSEL,
|
||||
+ RK806_POWER_EN0, rk806_buck_voltage_ranges, 2,
|
||||
+ RK806_BUCK3_CONFIG, 0xc0, rk806_ramp_delay_table_dcdc),
|
||||
+ RK806_REGULATOR("dcdc-reg4", "vcc4", RK806_ID_DCDC4, rk806_ops_dcdc,
|
||||
+ RK806_BUCK_SEL_CNT, RK806_BUCK4_ON_VSEL,
|
||||
+ RK806_POWER_EN0, rk806_buck_voltage_ranges, 3,
|
||||
+ RK806_BUCK4_CONFIG, 0xc0, rk806_ramp_delay_table_dcdc),
|
||||
+
|
||||
+ RK806_REGULATOR("dcdc-reg5", "vcc5", RK806_ID_DCDC5, rk806_ops_dcdc,
|
||||
+ RK806_BUCK_SEL_CNT, RK806_BUCK5_ON_VSEL,
|
||||
+ RK806_POWER_EN1, rk806_buck_voltage_ranges, 0,
|
||||
+ RK806_BUCK5_CONFIG, 0xc0, rk806_ramp_delay_table_dcdc),
|
||||
+ RK806_REGULATOR("dcdc-reg6", "vcc6", RK806_ID_DCDC6, rk806_ops_dcdc,
|
||||
+ RK806_BUCK_SEL_CNT, RK806_BUCK6_ON_VSEL,
|
||||
+ RK806_POWER_EN1, rk806_buck_voltage_ranges, 1,
|
||||
+ RK806_BUCK6_CONFIG, 0xc0, rk806_ramp_delay_table_dcdc),
|
||||
+ RK806_REGULATOR("dcdc-reg7", "vcc7", RK806_ID_DCDC7, rk806_ops_dcdc,
|
||||
+ RK806_BUCK_SEL_CNT, RK806_BUCK7_ON_VSEL,
|
||||
+ RK806_POWER_EN1, rk806_buck_voltage_ranges, 2,
|
||||
+ RK806_BUCK7_CONFIG, 0xc0, rk806_ramp_delay_table_dcdc),
|
||||
+ RK806_REGULATOR("dcdc-reg8", "vcc8", RK806_ID_DCDC8, rk806_ops_dcdc,
|
||||
+ RK806_BUCK_SEL_CNT, RK806_BUCK8_ON_VSEL,
|
||||
+ RK806_POWER_EN1, rk806_buck_voltage_ranges, 3,
|
||||
+ RK806_BUCK8_CONFIG, 0xc0, rk806_ramp_delay_table_dcdc),
|
||||
+
|
||||
+ RK806_REGULATOR("dcdc-reg9", "vcc9", RK806_ID_DCDC9, rk806_ops_dcdc,
|
||||
+ RK806_BUCK_SEL_CNT, RK806_BUCK9_ON_VSEL,
|
||||
+ RK806_POWER_EN2, rk806_buck_voltage_ranges, 0,
|
||||
+ RK806_BUCK9_CONFIG, 0xc0, rk806_ramp_delay_table_dcdc),
|
||||
+ RK806_REGULATOR("dcdc-reg10", "vcc10", RK806_ID_DCDC10, rk806_ops_dcdc,
|
||||
+ RK806_BUCK_SEL_CNT, RK806_BUCK10_ON_VSEL,
|
||||
+ RK806_POWER_EN2, rk806_buck_voltage_ranges, 1,
|
||||
+ RK806_BUCK10_CONFIG, 0xc0, rk806_ramp_delay_table_dcdc),
|
||||
+
|
||||
+ RK806_REGULATOR("nldo-reg1", "vcc13", RK806_ID_NLDO1, rk806_ops_nldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_NLDO1_ON_VSEL,
|
||||
+ RK806_POWER_EN3, rk806_ldo_voltage_ranges, 0,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+ RK806_REGULATOR("nldo-reg2", "vcc13", RK806_ID_NLDO2, rk806_ops_nldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_NLDO2_ON_VSEL,
|
||||
+ RK806_POWER_EN3, rk806_ldo_voltage_ranges, 1,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+ RK806_REGULATOR("nldo-reg3", "vcc13", RK806_ID_NLDO3, rk806_ops_nldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_NLDO3_ON_VSEL,
|
||||
+ RK806_POWER_EN3, rk806_ldo_voltage_ranges, 2,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+ RK806_REGULATOR("nldo-reg4", "vcc14", RK806_ID_NLDO4, rk806_ops_nldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_NLDO4_ON_VSEL,
|
||||
+ RK806_POWER_EN3, rk806_ldo_voltage_ranges, 3,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+
|
||||
+ RK806_REGULATOR("nldo-reg5", "vcc14", RK806_ID_NLDO5, rk806_ops_nldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_NLDO5_ON_VSEL,
|
||||
+ RK806_POWER_EN5, rk806_ldo_voltage_ranges, 2,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+
|
||||
+ RK806_REGULATOR("pldo-reg1", "vcc11", RK806_ID_PLDO1, rk806_ops_pldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_PLDO1_ON_VSEL,
|
||||
+ RK806_POWER_EN4, rk806_ldo_voltage_ranges, 1,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+ RK806_REGULATOR("pldo-reg2", "vcc11", RK806_ID_PLDO2, rk806_ops_pldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_PLDO2_ON_VSEL,
|
||||
+ RK806_POWER_EN4, rk806_ldo_voltage_ranges, 2,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+ RK806_REGULATOR("pldo-reg3", "vcc11", RK806_ID_PLDO3, rk806_ops_pldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_PLDO3_ON_VSEL,
|
||||
+ RK806_POWER_EN4, rk806_ldo_voltage_ranges, 3,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+
|
||||
+ RK806_REGULATOR("pldo-reg4", "vcc12", RK806_ID_PLDO4, rk806_ops_pldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_PLDO4_ON_VSEL,
|
||||
+ RK806_POWER_EN5, rk806_ldo_voltage_ranges, 0,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+ RK806_REGULATOR("pldo-reg5", "vcc12", RK806_ID_PLDO5, rk806_ops_pldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_PLDO5_ON_VSEL,
|
||||
+ RK806_POWER_EN5, rk806_ldo_voltage_ranges, 1,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+
|
||||
+ RK806_REGULATOR("pldo-reg6", "vcca", RK806_ID_PLDO6, rk806_ops_pldo,
|
||||
+ RK806_LDO_SEL_CNT, RK806_PLDO6_ON_VSEL,
|
||||
+ RK806_POWER_EN4, rk806_ldo_voltage_ranges, 0,
|
||||
+ 0xEA, 0x38, rk806_ramp_delay_table_ldo),
|
||||
+};
|
||||
+
|
||||
+
|
||||
static const struct regulator_desc rk808_reg[] = {
|
||||
{
|
||||
.name = "DCDC_REG1",
|
||||
@@ -1313,6 +1693,10 @@ static int rk808_regulator_probe(struct
|
||||
regulators = rk805_reg;
|
||||
nregulators = RK805_NUM_REGULATORS;
|
||||
break;
|
||||
+ case RK806_ID:
|
||||
+ regulators = rk806_reg;
|
||||
+ nregulators = ARRAY_SIZE(rk806_reg);
|
||||
+ break;
|
||||
case RK808_ID:
|
||||
regulators = rk808_reg;
|
||||
nregulators = RK808_NUM_REGULATORS;
|
||||
@@ -1365,5 +1749,6 @@ MODULE_AUTHOR("Tony xie <tony.xie@rock-c
|
||||
MODULE_AUTHOR("Chris Zhong <zyw@rock-chips.com>");
|
||||
MODULE_AUTHOR("Zhang Qing <zhangqing@rock-chips.com>");
|
||||
MODULE_AUTHOR("Wadim Egorov <w.egorov@phytec.de>");
|
||||
+MODULE_AUTHOR("Xu Shengfei <xsf@rock-chips.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS("platform:rk808-regulator");
|
||||
@@ -1,35 +0,0 @@
|
||||
From d5edc0e36bb1657d2c46b7521010d4f0894a5c74 Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Date: Thu, 6 Apr 2023 22:41:54 +0300
|
||||
Subject: [PATCH] regulator: fan53555: Remove unused *_SLEW_SHIFT definitions
|
||||
|
||||
Commit b61ac767db4d ("regulator: fan53555: Convert to use
|
||||
regulator_set_ramp_delay_regmap") removed the slew_shift member from
|
||||
struct fan53555_device_info, hence the {CTL,TCS}_SLEW_SHIFT definitions
|
||||
remained unused. Drop them.
|
||||
|
||||
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230406194158.963352-5-cristian.ciocaltea@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -49,7 +49,6 @@
|
||||
/* Control bit definitions */
|
||||
#define CTL_OUTPUT_DISCHG (1 << 7)
|
||||
#define CTL_SLEW_MASK (0x7 << 4)
|
||||
-#define CTL_SLEW_SHIFT 4
|
||||
#define CTL_RESET (1 << 2)
|
||||
#define CTL_MODE_VSEL0_MODE BIT(0)
|
||||
#define CTL_MODE_VSEL1_MODE BIT(1)
|
||||
@@ -60,7 +59,6 @@
|
||||
#define TCS_VSEL0_MODE (1 << 7)
|
||||
#define TCS_VSEL1_MODE (1 << 6)
|
||||
|
||||
-#define TCS_SLEW_SHIFT 3
|
||||
#define TCS_SLEW_MASK GENMASK(4, 3)
|
||||
|
||||
enum fan53555_vendor {
|
||||
@@ -1,53 +0,0 @@
|
||||
From d25016618c0845b2a0f9ae64d084a66efd39b03c Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Date: Thu, 6 Apr 2023 22:41:55 +0300
|
||||
Subject: [PATCH] regulator: fan53555: Make use of the bit macros
|
||||
|
||||
For consistency and improved clarity, use BIT() and GENMASK() macros for
|
||||
defining the bitfields inside the registers. No functional changes
|
||||
intended.
|
||||
|
||||
While here, also fix DIE_{ID,REV} inconsistent indentation.
|
||||
|
||||
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230406194158.963352-6-cristian.ciocaltea@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 18 +++++++++---------
|
||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -41,23 +41,23 @@
|
||||
#define FAN53555_MONITOR 0x05
|
||||
|
||||
/* VSEL bit definitions */
|
||||
-#define VSEL_BUCK_EN (1 << 7)
|
||||
-#define VSEL_MODE (1 << 6)
|
||||
+#define VSEL_BUCK_EN BIT(7)
|
||||
+#define VSEL_MODE BIT(6)
|
||||
/* Chip ID and Verison */
|
||||
-#define DIE_ID 0x0F /* ID1 */
|
||||
-#define DIE_REV 0x0F /* ID2 */
|
||||
+#define DIE_ID 0x0F /* ID1 */
|
||||
+#define DIE_REV 0x0F /* ID2 */
|
||||
/* Control bit definitions */
|
||||
-#define CTL_OUTPUT_DISCHG (1 << 7)
|
||||
-#define CTL_SLEW_MASK (0x7 << 4)
|
||||
-#define CTL_RESET (1 << 2)
|
||||
+#define CTL_OUTPUT_DISCHG BIT(7)
|
||||
+#define CTL_SLEW_MASK GENMASK(6, 4)
|
||||
+#define CTL_RESET BIT(2)
|
||||
#define CTL_MODE_VSEL0_MODE BIT(0)
|
||||
#define CTL_MODE_VSEL1_MODE BIT(1)
|
||||
|
||||
#define FAN53555_NVOLTAGES 64 /* Numbers of voltages */
|
||||
#define FAN53526_NVOLTAGES 128
|
||||
|
||||
-#define TCS_VSEL0_MODE (1 << 7)
|
||||
-#define TCS_VSEL1_MODE (1 << 6)
|
||||
+#define TCS_VSEL0_MODE BIT(7)
|
||||
+#define TCS_VSEL1_MODE BIT(6)
|
||||
|
||||
#define TCS_SLEW_MASK GENMASK(4, 3)
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
From 6bb18339c6b54e0241344280fe4d14909db9356c Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Date: Thu, 6 Apr 2023 22:41:56 +0300
|
||||
Subject: [PATCH] regulator: fan53555: Improve vsel_mask computation
|
||||
|
||||
In preparation for introducing support for additional regulators which
|
||||
do not use the maximum number of voltage selectors available for a given
|
||||
mask, improve the mask computation formula by using fls().
|
||||
|
||||
Note fls() requires the bitops header, hence include it explicitly and
|
||||
drop bits.h which is already pulled by bitops.h.
|
||||
|
||||
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230406194158.963352-7-cristian.ciocaltea@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -8,7 +8,7 @@
|
||||
// Copyright (c) 2012 Marvell Technology Ltd.
|
||||
// Yunfan Zhang <yfzhang@marvell.com>
|
||||
|
||||
-#include <linux/bits.h>
|
||||
+#include <linux/bitops.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/module.h>
|
||||
@@ -486,7 +486,7 @@ static int fan53555_regulator_register(s
|
||||
rdesc->min_uV = di->vsel_min;
|
||||
rdesc->uV_step = di->vsel_step;
|
||||
rdesc->vsel_reg = di->vol_reg;
|
||||
- rdesc->vsel_mask = di->vsel_count - 1;
|
||||
+ rdesc->vsel_mask = BIT(fls(di->vsel_count - 1)) - 1;
|
||||
rdesc->ramp_reg = di->slew_reg;
|
||||
rdesc->ramp_mask = di->slew_mask;
|
||||
rdesc->ramp_delay_table = di->ramp_delay_table;
|
||||
@@ -1,106 +0,0 @@
|
||||
From 2c82f5b8ae6d0b5bbac1526021d9c3120d183555 Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Date: Thu, 6 Apr 2023 22:41:57 +0300
|
||||
Subject: [PATCH] regulator: fan53555: Use dev_err_probe
|
||||
|
||||
Use dev_err_probe() instead of dev_err() in the probe function, which
|
||||
ensures the error code is always printed and, additionally, simplifies
|
||||
the code a bit.
|
||||
|
||||
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230406194158.963352-8-cristian.ciocaltea@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 47 ++++++++++++++++--------------------
|
||||
1 file changed, 21 insertions(+), 26 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -568,10 +568,9 @@ static int fan53555_regulator_probe(stru
|
||||
if (!pdata)
|
||||
pdata = fan53555_parse_dt(&client->dev, np, &di->desc);
|
||||
|
||||
- if (!pdata || !pdata->regulator) {
|
||||
- dev_err(&client->dev, "Platform data not found!\n");
|
||||
- return -ENODEV;
|
||||
- }
|
||||
+ if (!pdata || !pdata->regulator)
|
||||
+ return dev_err_probe(&client->dev, -ENODEV,
|
||||
+ "Platform data not found!\n");
|
||||
|
||||
di->regulator = pdata->regulator;
|
||||
if (client->dev.of_node) {
|
||||
@@ -580,10 +579,9 @@ static int fan53555_regulator_probe(stru
|
||||
} else {
|
||||
/* if no ramp constraint set, get the pdata ramp_delay */
|
||||
if (!di->regulator->constraints.ramp_delay) {
|
||||
- if (pdata->slew_rate >= ARRAY_SIZE(slew_rates)) {
|
||||
- dev_err(&client->dev, "Invalid slew_rate\n");
|
||||
- return -EINVAL;
|
||||
- }
|
||||
+ if (pdata->slew_rate >= ARRAY_SIZE(slew_rates))
|
||||
+ return dev_err_probe(&client->dev, -EINVAL,
|
||||
+ "Invalid slew_rate\n");
|
||||
|
||||
di->regulator->constraints.ramp_delay
|
||||
= slew_rates[pdata->slew_rate];
|
||||
@@ -593,34 +591,31 @@ static int fan53555_regulator_probe(stru
|
||||
}
|
||||
|
||||
regmap = devm_regmap_init_i2c(client, &fan53555_regmap_config);
|
||||
- if (IS_ERR(regmap)) {
|
||||
- dev_err(&client->dev, "Failed to allocate regmap!\n");
|
||||
- return PTR_ERR(regmap);
|
||||
- }
|
||||
+ if (IS_ERR(regmap))
|
||||
+ return dev_err_probe(&client->dev, PTR_ERR(regmap),
|
||||
+ "Failed to allocate regmap!\n");
|
||||
+
|
||||
di->dev = &client->dev;
|
||||
i2c_set_clientdata(client, di);
|
||||
/* Get chip ID */
|
||||
ret = regmap_read(regmap, FAN53555_ID1, &val);
|
||||
- if (ret < 0) {
|
||||
- dev_err(&client->dev, "Failed to get chip ID!\n");
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret < 0)
|
||||
+ return dev_err_probe(&client->dev, ret, "Failed to get chip ID!\n");
|
||||
+
|
||||
di->chip_id = val & DIE_ID;
|
||||
/* Get chip revision */
|
||||
ret = regmap_read(regmap, FAN53555_ID2, &val);
|
||||
- if (ret < 0) {
|
||||
- dev_err(&client->dev, "Failed to get chip Rev!\n");
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret < 0)
|
||||
+ return dev_err_probe(&client->dev, ret, "Failed to get chip Rev!\n");
|
||||
+
|
||||
di->chip_rev = val & DIE_REV;
|
||||
dev_info(&client->dev, "FAN53555 Option[%d] Rev[%d] Detected!\n",
|
||||
di->chip_id, di->chip_rev);
|
||||
/* Device init */
|
||||
ret = fan53555_device_setup(di, pdata);
|
||||
- if (ret < 0) {
|
||||
- dev_err(&client->dev, "Failed to setup device!\n");
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret < 0)
|
||||
+ return dev_err_probe(&client->dev, ret, "Failed to setup device!\n");
|
||||
+
|
||||
/* Register regulator */
|
||||
config.dev = di->dev;
|
||||
config.init_data = di->regulator;
|
||||
@@ -630,9 +625,9 @@ static int fan53555_regulator_probe(stru
|
||||
|
||||
ret = fan53555_regulator_register(di, &config);
|
||||
if (ret < 0)
|
||||
- dev_err(&client->dev, "Failed to register regulator!\n");
|
||||
- return ret;
|
||||
+ dev_err_probe(&client->dev, ret, "Failed to register regulator!\n");
|
||||
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static const struct i2c_device_id fan53555_id[] = {
|
||||
@@ -1,263 +0,0 @@
|
||||
From a27e71a66ee0f887fefcc31b85a804b0905fa865 Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Date: Thu, 6 Apr 2023 22:41:58 +0300
|
||||
Subject: [PATCH] regulator: fan53555: Add support for RK860X
|
||||
|
||||
Extend the existing fan53555 driver to support the Rockchip RK860X
|
||||
regulators.
|
||||
|
||||
RK8600/RK8601 are pretty similar to the FAN53555 regulators.
|
||||
|
||||
RK8602/RK8603 are a bit different, having a wider output voltage
|
||||
selection range, from 0.5 V to 1.5 V in 6.25 mV steps. They also use
|
||||
additional VSEL0/VSEL1 registers for the voltage selector, but the
|
||||
enable and mode bits are still located in the original FAN53555 specific
|
||||
VSEL0/VSEL1 registers.
|
||||
|
||||
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230406194158.963352-9-cristian.ciocaltea@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 121 ++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 118 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -26,6 +26,9 @@
|
||||
#define FAN53555_VSEL0 0x00
|
||||
#define FAN53555_VSEL1 0x01
|
||||
|
||||
+#define RK8602_VSEL0 0x06
|
||||
+#define RK8602_VSEL1 0x07
|
||||
+
|
||||
#define TCS4525_VSEL0 0x11
|
||||
#define TCS4525_VSEL1 0x10
|
||||
#define TCS4525_TIME 0x13
|
||||
@@ -55,6 +58,7 @@
|
||||
|
||||
#define FAN53555_NVOLTAGES 64 /* Numbers of voltages */
|
||||
#define FAN53526_NVOLTAGES 128
|
||||
+#define RK8602_NVOLTAGES 160
|
||||
|
||||
#define TCS_VSEL0_MODE BIT(7)
|
||||
#define TCS_VSEL1_MODE BIT(6)
|
||||
@@ -64,6 +68,8 @@
|
||||
enum fan53555_vendor {
|
||||
FAN53526_VENDOR_FAIRCHILD = 0,
|
||||
FAN53555_VENDOR_FAIRCHILD,
|
||||
+ FAN53555_VENDOR_ROCKCHIP, /* RK8600, RK8601 */
|
||||
+ RK8602_VENDOR_ROCKCHIP, /* RK8602, RK8603 */
|
||||
FAN53555_VENDOR_SILERGY,
|
||||
FAN53526_VENDOR_TCS,
|
||||
};
|
||||
@@ -88,6 +94,14 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
+ RK8600_CHIP_ID_08 = 8, /* RK8600, RK8601 */
|
||||
+};
|
||||
+
|
||||
+enum {
|
||||
+ RK8602_CHIP_ID_10 = 10, /* RK8602, RK8603 */
|
||||
+};
|
||||
+
|
||||
+enum {
|
||||
TCS4525_CHIP_ID_12 = 12,
|
||||
};
|
||||
|
||||
@@ -117,6 +131,8 @@ struct fan53555_device_info {
|
||||
/* Voltage setting register */
|
||||
unsigned int vol_reg;
|
||||
unsigned int sleep_reg;
|
||||
+ unsigned int en_reg;
|
||||
+ unsigned int sleep_en_reg;
|
||||
/* Voltage range and step(linear) */
|
||||
unsigned int vsel_min;
|
||||
unsigned int vsel_step;
|
||||
@@ -159,7 +175,7 @@ static int fan53555_set_suspend_enable(s
|
||||
{
|
||||
struct fan53555_device_info *di = rdev_get_drvdata(rdev);
|
||||
|
||||
- return regmap_update_bits(rdev->regmap, di->sleep_reg,
|
||||
+ return regmap_update_bits(rdev->regmap, di->sleep_en_reg,
|
||||
VSEL_BUCK_EN, VSEL_BUCK_EN);
|
||||
}
|
||||
|
||||
@@ -167,7 +183,7 @@ static int fan53555_set_suspend_disable(
|
||||
{
|
||||
struct fan53555_device_info *di = rdev_get_drvdata(rdev);
|
||||
|
||||
- return regmap_update_bits(rdev->regmap, di->sleep_reg,
|
||||
+ return regmap_update_bits(rdev->regmap, di->sleep_en_reg,
|
||||
VSEL_BUCK_EN, 0);
|
||||
}
|
||||
|
||||
@@ -317,6 +333,50 @@ static int fan53555_voltages_setup_fairc
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int fan53555_voltages_setup_rockchip(struct fan53555_device_info *di)
|
||||
+{
|
||||
+ /* Init voltage range and step */
|
||||
+ switch (di->chip_id) {
|
||||
+ case RK8600_CHIP_ID_08:
|
||||
+ di->vsel_min = 712500;
|
||||
+ di->vsel_step = 12500;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(di->dev,
|
||||
+ "Chip ID %d not supported!\n", di->chip_id);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ di->slew_reg = FAN53555_CONTROL;
|
||||
+ di->slew_mask = CTL_SLEW_MASK;
|
||||
+ di->ramp_delay_table = slew_rates;
|
||||
+ di->n_ramp_values = ARRAY_SIZE(slew_rates);
|
||||
+ di->vsel_count = FAN53555_NVOLTAGES;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int rk8602_voltages_setup_rockchip(struct fan53555_device_info *di)
|
||||
+{
|
||||
+ /* Init voltage range and step */
|
||||
+ switch (di->chip_id) {
|
||||
+ case RK8602_CHIP_ID_10:
|
||||
+ di->vsel_min = 500000;
|
||||
+ di->vsel_step = 6250;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(di->dev,
|
||||
+ "Chip ID %d not supported!\n", di->chip_id);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ di->slew_reg = FAN53555_CONTROL;
|
||||
+ di->slew_mask = CTL_SLEW_MASK;
|
||||
+ di->ramp_delay_table = slew_rates;
|
||||
+ di->n_ramp_values = ARRAY_SIZE(slew_rates);
|
||||
+ di->vsel_count = RK8602_NVOLTAGES;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int fan53555_voltages_setup_silergy(struct fan53555_device_info *di)
|
||||
{
|
||||
/* Init voltage range and step */
|
||||
@@ -377,6 +437,7 @@ static int fan53555_device_setup(struct
|
||||
switch (di->vendor) {
|
||||
case FAN53526_VENDOR_FAIRCHILD:
|
||||
case FAN53555_VENDOR_FAIRCHILD:
|
||||
+ case FAN53555_VENDOR_ROCKCHIP:
|
||||
case FAN53555_VENDOR_SILERGY:
|
||||
switch (pdata->sleep_vsel_id) {
|
||||
case FAN53555_VSEL_ID_0:
|
||||
@@ -391,6 +452,27 @@ static int fan53555_device_setup(struct
|
||||
dev_err(di->dev, "Invalid VSEL ID!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
+ di->sleep_en_reg = di->sleep_reg;
|
||||
+ di->en_reg = di->vol_reg;
|
||||
+ break;
|
||||
+ case RK8602_VENDOR_ROCKCHIP:
|
||||
+ switch (pdata->sleep_vsel_id) {
|
||||
+ case FAN53555_VSEL_ID_0:
|
||||
+ di->sleep_reg = RK8602_VSEL0;
|
||||
+ di->vol_reg = RK8602_VSEL1;
|
||||
+ di->sleep_en_reg = FAN53555_VSEL0;
|
||||
+ di->en_reg = FAN53555_VSEL1;
|
||||
+ break;
|
||||
+ case FAN53555_VSEL_ID_1:
|
||||
+ di->sleep_reg = RK8602_VSEL1;
|
||||
+ di->vol_reg = RK8602_VSEL0;
|
||||
+ di->sleep_en_reg = FAN53555_VSEL1;
|
||||
+ di->en_reg = FAN53555_VSEL0;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(di->dev, "Invalid VSEL ID!\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
break;
|
||||
case FAN53526_VENDOR_TCS:
|
||||
switch (pdata->sleep_vsel_id) {
|
||||
@@ -406,6 +488,8 @@ static int fan53555_device_setup(struct
|
||||
dev_err(di->dev, "Invalid VSEL ID!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
+ di->sleep_en_reg = di->sleep_reg;
|
||||
+ di->en_reg = di->vol_reg;
|
||||
break;
|
||||
default:
|
||||
dev_err(di->dev, "vendor %d not supported!\n", di->vendor);
|
||||
@@ -427,10 +511,23 @@ static int fan53555_device_setup(struct
|
||||
}
|
||||
break;
|
||||
case FAN53555_VENDOR_FAIRCHILD:
|
||||
+ case FAN53555_VENDOR_ROCKCHIP:
|
||||
case FAN53555_VENDOR_SILERGY:
|
||||
di->mode_reg = di->vol_reg;
|
||||
di->mode_mask = VSEL_MODE;
|
||||
break;
|
||||
+ case RK8602_VENDOR_ROCKCHIP:
|
||||
+ di->mode_mask = VSEL_MODE;
|
||||
+
|
||||
+ switch (pdata->sleep_vsel_id) {
|
||||
+ case FAN53555_VSEL_ID_0:
|
||||
+ di->mode_reg = FAN53555_VSEL1;
|
||||
+ break;
|
||||
+ case FAN53555_VSEL_ID_1:
|
||||
+ di->mode_reg = FAN53555_VSEL0;
|
||||
+ break;
|
||||
+ }
|
||||
+ break;
|
||||
case FAN53526_VENDOR_TCS:
|
||||
di->mode_reg = TCS4525_COMMAND;
|
||||
|
||||
@@ -456,6 +553,12 @@ static int fan53555_device_setup(struct
|
||||
case FAN53555_VENDOR_FAIRCHILD:
|
||||
ret = fan53555_voltages_setup_fairchild(di);
|
||||
break;
|
||||
+ case FAN53555_VENDOR_ROCKCHIP:
|
||||
+ ret = fan53555_voltages_setup_rockchip(di);
|
||||
+ break;
|
||||
+ case RK8602_VENDOR_ROCKCHIP:
|
||||
+ ret = rk8602_voltages_setup_rockchip(di);
|
||||
+ break;
|
||||
case FAN53555_VENDOR_SILERGY:
|
||||
ret = fan53555_voltages_setup_silergy(di);
|
||||
break;
|
||||
@@ -481,7 +584,7 @@ static int fan53555_regulator_register(s
|
||||
rdesc->ops = &fan53555_regulator_ops;
|
||||
rdesc->type = REGULATOR_VOLTAGE;
|
||||
rdesc->n_voltages = di->vsel_count;
|
||||
- rdesc->enable_reg = di->vol_reg;
|
||||
+ rdesc->enable_reg = di->en_reg;
|
||||
rdesc->enable_mask = VSEL_BUCK_EN;
|
||||
rdesc->min_uV = di->vsel_min;
|
||||
rdesc->uV_step = di->vsel_step;
|
||||
@@ -532,6 +635,12 @@ static const struct of_device_id __maybe
|
||||
.compatible = "fcs,fan53555",
|
||||
.data = (void *)FAN53555_VENDOR_FAIRCHILD
|
||||
}, {
|
||||
+ .compatible = "rockchip,rk8600",
|
||||
+ .data = (void *)FAN53555_VENDOR_ROCKCHIP
|
||||
+ }, {
|
||||
+ .compatible = "rockchip,rk8602",
|
||||
+ .data = (void *)RK8602_VENDOR_ROCKCHIP
|
||||
+ }, {
|
||||
.compatible = "silergy,syr827",
|
||||
.data = (void *)FAN53555_VENDOR_SILERGY,
|
||||
}, {
|
||||
@@ -638,6 +747,12 @@ static const struct i2c_device_id fan535
|
||||
.name = "fan53555",
|
||||
.driver_data = FAN53555_VENDOR_FAIRCHILD
|
||||
}, {
|
||||
+ .name = "rk8600",
|
||||
+ .driver_data = FAN53555_VENDOR_ROCKCHIP
|
||||
+ }, {
|
||||
+ .name = "rk8602",
|
||||
+ .driver_data = RK8602_VENDOR_ROCKCHIP
|
||||
+ }, {
|
||||
.name = "syr827",
|
||||
.driver_data = FAN53555_VENDOR_SILERGY
|
||||
}, {
|
||||
@@ -1,44 +0,0 @@
|
||||
From f1d2427cb458fd8ecb709c27f43088d6e250a7aa Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Wed, 8 Mar 2023 12:22:47 +0100
|
||||
Subject: [PATCH] thermal/drivers/rockchip: Simplify getting match data
|
||||
|
||||
It's possible to directly get the match data in a generic
|
||||
way nowadays.
|
||||
|
||||
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230308112253.15659-2-sebastian.reichel@collabora.com
|
||||
---
|
||||
drivers/thermal/rockchip_thermal.c | 7 +------
|
||||
1 file changed, 1 insertion(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/thermal/rockchip_thermal.c
|
||||
+++ b/drivers/thermal/rockchip_thermal.c
|
||||
@@ -1353,16 +1353,11 @@ static int rockchip_thermal_probe(struct
|
||||
{
|
||||
struct device_node *np = pdev->dev.of_node;
|
||||
struct rockchip_thermal_data *thermal;
|
||||
- const struct of_device_id *match;
|
||||
struct resource *res;
|
||||
int irq;
|
||||
int i;
|
||||
int error;
|
||||
|
||||
- match = of_match_node(of_rockchip_thermal_match, np);
|
||||
- if (!match)
|
||||
- return -ENXIO;
|
||||
-
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (irq < 0)
|
||||
return -EINVAL;
|
||||
@@ -1374,7 +1369,7 @@ static int rockchip_thermal_probe(struct
|
||||
|
||||
thermal->pdev = pdev;
|
||||
|
||||
- thermal->chip = (const struct rockchip_tsadc_chip *)match->data;
|
||||
+ thermal->chip = device_get_match_data(&pdev->dev);
|
||||
if (!thermal->chip)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
From 2f6916f12c0e46ecd4c2b793a014132140730560 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Date: Wed, 8 Mar 2023 12:22:48 +0100
|
||||
Subject: [PATCH] thermal/drivers/rockchip: Simplify clock logic
|
||||
|
||||
By using devm_clk_get_enabled() the clock acquisition and
|
||||
enabling can be done in one step with automatic error
|
||||
handling.
|
||||
|
||||
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230308112253.15659-3-sebastian.reichel@collabora.com
|
||||
---
|
||||
drivers/thermal/rockchip_thermal.c | 33 +++++-------------------------
|
||||
1 file changed, 5 insertions(+), 28 deletions(-)
|
||||
|
||||
--- a/drivers/thermal/rockchip_thermal.c
|
||||
+++ b/drivers/thermal/rockchip_thermal.c
|
||||
@@ -1385,14 +1385,14 @@ static int rockchip_thermal_probe(struct
|
||||
return error;
|
||||
}
|
||||
|
||||
- thermal->clk = devm_clk_get(&pdev->dev, "tsadc");
|
||||
+ thermal->clk = devm_clk_get_enabled(&pdev->dev, "tsadc");
|
||||
if (IS_ERR(thermal->clk)) {
|
||||
error = PTR_ERR(thermal->clk);
|
||||
dev_err(&pdev->dev, "failed to get tsadc clock: %d\n", error);
|
||||
return error;
|
||||
}
|
||||
|
||||
- thermal->pclk = devm_clk_get(&pdev->dev, "apb_pclk");
|
||||
+ thermal->pclk = devm_clk_get_enabled(&pdev->dev, "apb_pclk");
|
||||
if (IS_ERR(thermal->pclk)) {
|
||||
error = PTR_ERR(thermal->pclk);
|
||||
dev_err(&pdev->dev, "failed to get apb_pclk clock: %d\n",
|
||||
@@ -1400,26 +1400,13 @@ static int rockchip_thermal_probe(struct
|
||||
return error;
|
||||
}
|
||||
|
||||
- error = clk_prepare_enable(thermal->clk);
|
||||
- if (error) {
|
||||
- dev_err(&pdev->dev, "failed to enable converter clock: %d\n",
|
||||
- error);
|
||||
- return error;
|
||||
- }
|
||||
-
|
||||
- error = clk_prepare_enable(thermal->pclk);
|
||||
- if (error) {
|
||||
- dev_err(&pdev->dev, "failed to enable pclk: %d\n", error);
|
||||
- goto err_disable_clk;
|
||||
- }
|
||||
-
|
||||
rockchip_thermal_reset_controller(thermal->reset);
|
||||
|
||||
error = rockchip_configure_from_dt(&pdev->dev, np, thermal);
|
||||
if (error) {
|
||||
dev_err(&pdev->dev, "failed to parse device tree data: %d\n",
|
||||
error);
|
||||
- goto err_disable_pclk;
|
||||
+ return error;
|
||||
}
|
||||
|
||||
thermal->chip->initialize(thermal->grf, thermal->regs,
|
||||
@@ -1433,7 +1420,7 @@ static int rockchip_thermal_probe(struct
|
||||
dev_err(&pdev->dev,
|
||||
"failed to register sensor[%d] : error = %d\n",
|
||||
i, error);
|
||||
- goto err_disable_pclk;
|
||||
+ return error;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1444,7 +1431,7 @@ static int rockchip_thermal_probe(struct
|
||||
if (error) {
|
||||
dev_err(&pdev->dev,
|
||||
"failed to request tsadc irq: %d\n", error);
|
||||
- goto err_disable_pclk;
|
||||
+ return error;
|
||||
}
|
||||
|
||||
thermal->chip->control(thermal->regs, true);
|
||||
@@ -1462,13 +1449,6 @@ static int rockchip_thermal_probe(struct
|
||||
platform_set_drvdata(pdev, thermal);
|
||||
|
||||
return 0;
|
||||
-
|
||||
-err_disable_pclk:
|
||||
- clk_disable_unprepare(thermal->pclk);
|
||||
-err_disable_clk:
|
||||
- clk_disable_unprepare(thermal->clk);
|
||||
-
|
||||
- return error;
|
||||
}
|
||||
|
||||
static int rockchip_thermal_remove(struct platform_device *pdev)
|
||||
@@ -1485,9 +1465,6 @@ static int rockchip_thermal_remove(struc
|
||||
|
||||
thermal->chip->control(thermal->regs, false);
|
||||
|
||||
- clk_disable_unprepare(thermal->pclk);
|
||||
- clk_disable_unprepare(thermal->clk);
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user