From 51f33c10b7c2cd38e147f81b3df91d20e9d5da1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20B=C4=83l=C4=83nic=C4=83?= Date: Thu, 3 Aug 2023 03:04:49 +0300 Subject: [PATCH] Platforms: Enable HYM8563 RTC support Enabled on all platforms, except for: - Radxa ROCK 5A: I2C location unknown yet - Mixtile Blade 3: no RTC present Not tested on Hinlink and FriendlyElec devices. --- .../Ameridroid/IndiedroidNova/IndiedroidNova.dsc | 12 ++++++++++-- .../RockchipPlatformLib/RockchipPlatformLib.c | 5 +++++ .../Firefly/ROC-RK3588S-PC/ROC-RK3588S-PC.dsc.inc | 12 ++++++++++-- .../RockchipPlatformLib/RockchipPlatformLib.c | 7 +++++++ .../Platform/FriendlyElec/NanoPC-T6/NanoPC-T6.dsc | 12 ++++++++++-- .../RockchipPlatformLib/RockchipPlatformLib.c | 7 +++++++ .../Platform/FriendlyElec/NanoPi-R6C/NanoPi-R6C.dsc | 12 ++++++++++-- .../RockchipPlatformLib/RockchipPlatformLib.c | 11 +++++++++-- .../Platform/FriendlyElec/NanoPi-R6S/NanoPi-R6S.dsc | 12 ++++++++++-- edk2-rockchip/Platform/Hinlink/H88K/H88K.dsc | 12 ++++++++++-- edk2-rockchip/Platform/Khadas/Edge2/Edge2.dsc | 12 ++++++++++-- .../RockchipPlatformLib/RockchipPlatformLib.c | 7 +++++++ .../Platform/Mekotronics/R58-Mini/R58-Mini.dsc | 12 ++++++++++-- .../RockchipPlatformLib/RockchipPlatformLib.c | 6 ++++++ edk2-rockchip/Platform/Mekotronics/R58X/R58X.dsc | 12 ++++++++++-- .../RockchipPlatformLib/RockchipPlatformLib.c | 5 +++++ .../Platform/OrangePi/OrangePi5/OrangePi5.dsc | 12 ++++++++++-- .../RockchipPlatformLib/RockchipPlatformLib.c | 7 +++++++ .../OrangePi/OrangePi5Plus/OrangePi5Plus.dsc | 12 ++++++++++-- .../RockchipPlatformLib/RockchipPlatformLib.c | 7 +++++++ edk2-rockchip/Platform/Radxa/ROCK5B/ROCK5B.dsc | 12 ++++++++++-- 21 files changed, 180 insertions(+), 26 deletions(-) diff --git a/edk2-rockchip/Platform/Ameridroid/IndiedroidNova/IndiedroidNova.dsc b/edk2-rockchip/Platform/Ameridroid/IndiedroidNova/IndiedroidNova.dsc index ab7268cc2..92fb8de2d 100644 --- a/edk2-rockchip/Platform/Ameridroid/IndiedroidNova/IndiedroidNova.dsc +++ b/edk2-rockchip/Platform/Ameridroid/IndiedroidNova/IndiedroidNova.dsc @@ -27,6 +27,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = $(PLATFORM_DIRECTORY)/$(PLATFORM_NAME).Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588S-based platform # @@ -55,11 +61,13 @@ gRockchipTokenSpaceGuid.PcdProductUrl|"https://indiedroid.us" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x6 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x6 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/Ameridroid/IndiedroidNova/Library/RockchipPlatformLib/RockchipPlatformLib.c b/edk2-rockchip/Platform/Ameridroid/IndiedroidNova/Library/RockchipPlatformLib/RockchipPlatformLib.c index ab6afd10e..5b5c9ce4f 100644 --- a/edk2-rockchip/Platform/Ameridroid/IndiedroidNova/Library/RockchipPlatformLib/RockchipPlatformLib.c +++ b/edk2-rockchip/Platform/Ameridroid/IndiedroidNova/Library/RockchipPlatformLib/RockchipPlatformLib.c @@ -163,6 +163,11 @@ I2cIomux ( break; case 5: break; + case 6: + /* io mux M3 */ + BUS_IOC->GPIO4B_IOMUX_SEL_L = (0x00F0UL << 16) | 0x0090; + BUS_IOC->GPIO4B_IOMUX_SEL_L = (0x000FUL << 16) | 0x0009; + break; default: break; } diff --git a/edk2-rockchip/Platform/Firefly/ROC-RK3588S-PC/ROC-RK3588S-PC.dsc.inc b/edk2-rockchip/Platform/Firefly/ROC-RK3588S-PC/ROC-RK3588S-PC.dsc.inc index 2bcd3949b..d75371e9d 100644 --- a/edk2-rockchip/Platform/Firefly/ROC-RK3588S-PC/ROC-RK3588S-PC.dsc.inc +++ b/edk2-rockchip/Platform/Firefly/ROC-RK3588S-PC/ROC-RK3588S-PC.dsc.inc @@ -16,6 +16,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = Platform/Firefly/ROC-RK3588S-PC/ROC-RK3588S-PC.Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588S-based platform # @@ -42,11 +48,13 @@ gRockchipTokenSpaceGuid.PcdBoardVendorName|"Firefly" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x2 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x2 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/FriendlyElec/NanoPC-T6/Library/RockchipPlatformLib/RockchipPlatformLib.c b/edk2-rockchip/Platform/FriendlyElec/NanoPC-T6/Library/RockchipPlatformLib/RockchipPlatformLib.c index 444bb5718..c7a944b36 100644 --- a/edk2-rockchip/Platform/FriendlyElec/NanoPC-T6/Library/RockchipPlatformLib/RockchipPlatformLib.c +++ b/edk2-rockchip/Platform/FriendlyElec/NanoPC-T6/Library/RockchipPlatformLib/RockchipPlatformLib.c @@ -186,6 +186,13 @@ I2cIomux ( break; case 5: break; + case 6: + /* io mux M0 */ + BUS_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x9000; + BUS_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0009; + PMU2_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x8000; + PMU2_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0008; + break; default: break; } diff --git a/edk2-rockchip/Platform/FriendlyElec/NanoPC-T6/NanoPC-T6.dsc b/edk2-rockchip/Platform/FriendlyElec/NanoPC-T6/NanoPC-T6.dsc index 483c0d9d7..d4dc2f5c6 100644 --- a/edk2-rockchip/Platform/FriendlyElec/NanoPC-T6/NanoPC-T6.dsc +++ b/edk2-rockchip/Platform/FriendlyElec/NanoPC-T6/NanoPC-T6.dsc @@ -28,6 +28,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = $(PLATFORM_DIRECTORY)/$(PLATFORM_NAME).Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588-based platform # @@ -56,11 +62,13 @@ gRockchipTokenSpaceGuid.PcdProductUrl|"https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x6 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x6 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6C/Library/RockchipPlatformLib/RockchipPlatformLib.c b/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6C/Library/RockchipPlatformLib/RockchipPlatformLib.c index 3b0db801f..13cd1b638 100644 --- a/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6C/Library/RockchipPlatformLib/RockchipPlatformLib.c +++ b/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6C/Library/RockchipPlatformLib/RockchipPlatformLib.c @@ -184,6 +184,13 @@ I2cIomux ( break; case 5: break; + case 6: + /* io mux M0 */ + BUS_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x9000; + BUS_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0009; + PMU2_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x8000; + PMU2_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0008; + break; default: break; } diff --git a/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6C/NanoPi-R6C.dsc b/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6C/NanoPi-R6C.dsc index 88ed40639..fc7cc162f 100644 --- a/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6C/NanoPi-R6C.dsc +++ b/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6C/NanoPi-R6C.dsc @@ -29,6 +29,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = $(PLATFORM_DIRECTORY)/$(PLATFORM_NAME).Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588S-based platform # @@ -57,11 +63,13 @@ gRockchipTokenSpaceGuid.PcdProductUrl|"https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R6" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x6 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x6 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6S/Library/RockchipPlatformLib/RockchipPlatformLib.c b/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6S/Library/RockchipPlatformLib/RockchipPlatformLib.c index 2566e0ff3..20cf0f5c1 100644 --- a/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6S/Library/RockchipPlatformLib/RockchipPlatformLib.c +++ b/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6S/Library/RockchipPlatformLib/RockchipPlatformLib.c @@ -180,6 +180,13 @@ I2cIomux ( break; case 5: break; + case 6: + /* io mux M0 */ + BUS_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x9000; + BUS_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0009; + PMU2_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x8000; + PMU2_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0008; + break; default: break; } @@ -192,7 +199,7 @@ UsbPortPowerEnable ( ) { DEBUG((EFI_D_WARN, "UsbPortPowerEnable called\n")); - + /* Set GPIO4 PB5 (USB_HOST_PWREN) output high to power USB ports */ GpioPinSetDirection (4, GPIO_PIN_PB5, GPIO_PIN_OUTPUT); GpioPinWrite (4, GPIO_PIN_PB5, TRUE); @@ -225,7 +232,7 @@ UsbDpPhyEnable ( /* enable rx_lfps_en & usbdp_low_pwrn */ MmioWrite32(0xfd5c8004, 0x60006000); MmioWrite32(0xfd5cc004, 0x60006000); - + /* remove rx-termination, we don't support SS yet */ MmioWrite32 (0xfd5c800c, 0x00030001); MmioWrite32 (0xfd5cc00c, 0x00030001); diff --git a/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6S/NanoPi-R6S.dsc b/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6S/NanoPi-R6S.dsc index 6ee6d6ace..26226dbde 100644 --- a/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6S/NanoPi-R6S.dsc +++ b/edk2-rockchip/Platform/FriendlyElec/NanoPi-R6S/NanoPi-R6S.dsc @@ -28,6 +28,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = $(PLATFORM_DIRECTORY)/$(PLATFORM_NAME).Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588S-based platform # @@ -56,11 +62,13 @@ gRockchipTokenSpaceGuid.PcdProductUrl|"https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R6S" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x6 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x6 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/Hinlink/H88K/H88K.dsc b/edk2-rockchip/Platform/Hinlink/H88K/H88K.dsc index 1311eef40..4430fd571 100644 --- a/edk2-rockchip/Platform/Hinlink/H88K/H88K.dsc +++ b/edk2-rockchip/Platform/Hinlink/H88K/H88K.dsc @@ -28,6 +28,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = $(PLATFORM_DIRECTORY)/$(PLATFORM_NAME).Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588-based platform # @@ -56,11 +62,13 @@ gRockchipTokenSpaceGuid.PcdProductUrl|"http://www.hinlink.com/" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x2 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x2 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/Khadas/Edge2/Edge2.dsc b/edk2-rockchip/Platform/Khadas/Edge2/Edge2.dsc index c4943ca42..0c8a2de48 100644 --- a/edk2-rockchip/Platform/Khadas/Edge2/Edge2.dsc +++ b/edk2-rockchip/Platform/Khadas/Edge2/Edge2.dsc @@ -27,6 +27,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = $(PLATFORM_DIRECTORY)/$(PLATFORM_NAME).Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588S-based platform # @@ -55,11 +61,13 @@ gRockchipTokenSpaceGuid.PcdProductUrl|"https://www.khadas.com/edge2" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x2 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x2 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/Mekotronics/R58-Mini/Library/RockchipPlatformLib/RockchipPlatformLib.c b/edk2-rockchip/Platform/Mekotronics/R58-Mini/Library/RockchipPlatformLib/RockchipPlatformLib.c index a93048350..7acf78f72 100644 --- a/edk2-rockchip/Platform/Mekotronics/R58-Mini/Library/RockchipPlatformLib/RockchipPlatformLib.c +++ b/edk2-rockchip/Platform/Mekotronics/R58-Mini/Library/RockchipPlatformLib/RockchipPlatformLib.c @@ -201,6 +201,13 @@ I2cIomux ( break; case 5: break; + case 6: + /* io mux M0 */ + BUS_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x9000; + BUS_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0009; + PMU2_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x8000; + PMU2_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0008; + break; default: break; } diff --git a/edk2-rockchip/Platform/Mekotronics/R58-Mini/R58-Mini.dsc b/edk2-rockchip/Platform/Mekotronics/R58-Mini/R58-Mini.dsc index 2d5d0929e..f6e38a48c 100644 --- a/edk2-rockchip/Platform/Mekotronics/R58-Mini/R58-Mini.dsc +++ b/edk2-rockchip/Platform/Mekotronics/R58-Mini/R58-Mini.dsc @@ -30,6 +30,12 @@ # This board lacks an SD card slot. DEFINE RK_SD_ENABLE = FALSE + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588-based platform # @@ -59,11 +65,13 @@ gRockchipTokenSpaceGuid.PcdBoardName|"MINI-PC-RK3588-4D32-V1.0" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x6 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x6 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/Mekotronics/R58X/Library/RockchipPlatformLib/RockchipPlatformLib.c b/edk2-rockchip/Platform/Mekotronics/R58X/Library/RockchipPlatformLib/RockchipPlatformLib.c index e75b7fabf..b4e1928cb 100644 --- a/edk2-rockchip/Platform/Mekotronics/R58X/Library/RockchipPlatformLib/RockchipPlatformLib.c +++ b/edk2-rockchip/Platform/Mekotronics/R58X/Library/RockchipPlatformLib/RockchipPlatformLib.c @@ -201,6 +201,12 @@ I2cIomux ( break; case 5: break; + case 6: + /* io mux M0 */ + BUS_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x9000; + BUS_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0009; + PMU2_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x8000; + PMU2_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0008; default: break; } diff --git a/edk2-rockchip/Platform/Mekotronics/R58X/R58X.dsc b/edk2-rockchip/Platform/Mekotronics/R58X/R58X.dsc index 7c6b4653a..00e3f0c47 100644 --- a/edk2-rockchip/Platform/Mekotronics/R58X/R58X.dsc +++ b/edk2-rockchip/Platform/Mekotronics/R58X/R58X.dsc @@ -27,6 +27,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = $(PLATFORM_DIRECTORY)/$(PLATFORM_NAME).Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588-based platform # @@ -56,11 +62,13 @@ gRockchipTokenSpaceGuid.PcdBoardName|"EDGE-RK3588-4D32-V1.2" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x6 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x6 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/OrangePi/OrangePi5/Library/RockchipPlatformLib/RockchipPlatformLib.c b/edk2-rockchip/Platform/OrangePi/OrangePi5/Library/RockchipPlatformLib/RockchipPlatformLib.c index 0678e7f9f..4d921c897 100644 --- a/edk2-rockchip/Platform/OrangePi/OrangePi5/Library/RockchipPlatformLib/RockchipPlatformLib.c +++ b/edk2-rockchip/Platform/OrangePi/OrangePi5/Library/RockchipPlatformLib/RockchipPlatformLib.c @@ -199,6 +199,11 @@ I2cIomux ( break; case 5: break; + case 6: + /* io mux M3 */ + BUS_IOC->GPIO4B_IOMUX_SEL_L = (0x00F0UL << 16) | 0x0090; + BUS_IOC->GPIO4B_IOMUX_SEL_L = (0x000FUL << 16) | 0x0009; + break; default: break; } diff --git a/edk2-rockchip/Platform/OrangePi/OrangePi5/OrangePi5.dsc b/edk2-rockchip/Platform/OrangePi/OrangePi5/OrangePi5.dsc index 9376e2d36..5afd6b81a 100644 --- a/edk2-rockchip/Platform/OrangePi/OrangePi5/OrangePi5.dsc +++ b/edk2-rockchip/Platform/OrangePi/OrangePi5/OrangePi5.dsc @@ -28,6 +28,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = $(PLATFORM_DIRECTORY)/$(PLATFORM_NAME).Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588S-based platform # @@ -56,11 +62,13 @@ gRockchipTokenSpaceGuid.PcdProductUrl|"http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-5.html" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x6 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x6 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/OrangePi/OrangePi5Plus/Library/RockchipPlatformLib/RockchipPlatformLib.c b/edk2-rockchip/Platform/OrangePi/OrangePi5Plus/Library/RockchipPlatformLib/RockchipPlatformLib.c index 9ed899be9..c970bee7e 100644 --- a/edk2-rockchip/Platform/OrangePi/OrangePi5Plus/Library/RockchipPlatformLib/RockchipPlatformLib.c +++ b/edk2-rockchip/Platform/OrangePi/OrangePi5Plus/Library/RockchipPlatformLib/RockchipPlatformLib.c @@ -183,6 +183,13 @@ I2cIomux ( break; case 5: break; + case 6: + /* io mux M0 */ + BUS_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x9000; + BUS_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0009; + PMU2_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x8000; + PMU2_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0008; + break; default: break; } diff --git a/edk2-rockchip/Platform/OrangePi/OrangePi5Plus/OrangePi5Plus.dsc b/edk2-rockchip/Platform/OrangePi/OrangePi5Plus/OrangePi5Plus.dsc index c4d69bb61..b48bb303a 100644 --- a/edk2-rockchip/Platform/OrangePi/OrangePi5Plus/OrangePi5Plus.dsc +++ b/edk2-rockchip/Platform/OrangePi/OrangePi5Plus/OrangePi5Plus.dsc @@ -27,6 +27,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = $(PLATFORM_DIRECTORY)/$(PLATFORM_NAME).Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588-based platform # @@ -55,11 +61,13 @@ gRockchipTokenSpaceGuid.PcdProductUrl|"http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-5-plus.html" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x6 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x6 # # CPU Performance default values diff --git a/edk2-rockchip/Platform/Radxa/ROCK5B/Library/RockchipPlatformLib/RockchipPlatformLib.c b/edk2-rockchip/Platform/Radxa/ROCK5B/Library/RockchipPlatformLib/RockchipPlatformLib.c index df26677ff..b98580ac8 100644 --- a/edk2-rockchip/Platform/Radxa/ROCK5B/Library/RockchipPlatformLib/RockchipPlatformLib.c +++ b/edk2-rockchip/Platform/Radxa/ROCK5B/Library/RockchipPlatformLib/RockchipPlatformLib.c @@ -186,6 +186,13 @@ I2cIomux ( break; case 5: break; + case 6: + /* io mux M0 */ + BUS_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x9000; + BUS_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0009; + PMU2_IOC->GPIO0C_IOMUX_SEL_H = (0xF000UL << 16) | 0x8000; + PMU2_IOC->GPIO0D_IOMUX_SEL_L = (0x000FUL << 16) | 0x0008; + break; default: break; } diff --git a/edk2-rockchip/Platform/Radxa/ROCK5B/ROCK5B.dsc b/edk2-rockchip/Platform/Radxa/ROCK5B/ROCK5B.dsc index 00fa0fe1c..6a495213c 100644 --- a/edk2-rockchip/Platform/Radxa/ROCK5B/ROCK5B.dsc +++ b/edk2-rockchip/Platform/Radxa/ROCK5B/ROCK5B.dsc @@ -28,6 +28,12 @@ FLASH_DEFINITION = Silicon/Rockchip/RK3588/RK3588.fdf RK_PLATFORM_FVMAIN_MODULES = $(PLATFORM_DIRECTORY)/$(PLATFORM_NAME).Modules.fdf.inc + # + # HYM8563 RTC support + # I2C location configured by PCDs below. + # + DEFINE RK_RTC8563_ENABLE = TRUE + # # RK3588-based platform # @@ -56,11 +62,13 @@ gRockchipTokenSpaceGuid.PcdProductUrl|"https://wiki.radxa.com/Rock5/hardware/5b" # I2C - gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43 } - gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0 } + gRockchipTokenSpaceGuid.PcdI2cSlaveAddresses|{ 0x42, 0x43, 0x51 } + gRockchipTokenSpaceGuid.PcdI2cSlaveBuses|{ 0x0, 0x0, 0x6 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorAddresses|{ 0x42, 0x43 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorBuses|{ 0x0, 0x0 } gRockchipTokenSpaceGuid.PcdRk860xRegulatorTags|{ SCMI_CLK_CPUB01, SCMI_CLK_CPUB23 } + gPcf8563RealTimeClockLibTokenSpaceGuid.PcdI2cSlaveAddress|0x51 + gRockchipTokenSpaceGuid.PcdRtc8563Bus|0x6 # # CPU Performance default values