Some virtual machine managers like Kvmtool emulate the MC146818
RTC controller in the MMIO space so that architectures that do
not support I/O Mapped I/O can use the RTC. This patch adds MMIO
support to the RTC controller driver.
The PCD PcdRtcUseMmio has been added to select I/O or MMIO support.
  If PcdRtcUseMmio is:
    TRUE  - Indicates the RTC port registers are in MMIO space.
    FALSE - Indicates the RTC port registers are in I/O space.
            Default is I/O space.
Additionally two new PCDs PcdRtcIndexRegister64 and
PcdRtcTargetRegister64 have been introduced to provide the base
address for the RTC registers in the MMIO space.
When MMIO support is selected (PcdRtcUseMmio == TRUE) the driver
converts the pointers to the RTC MMIO registers so that the
RTC registers are accessible post ExitBootServices.
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			INI
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			INI
		
	
	
	
	
	
| ## @file
 | |
| # PcRtc driver to install EFI_REAL_TIME_CLOCK_ARCH_PROTOCOL.
 | |
| #
 | |
| # This driver provides GetTime, SetTime, GetWakeupTime, SetWakeupTime services to Runtime Service Table.
 | |
| # It will install a tagging protocol with gEfiRealTimeClockArchProtocolGuid.
 | |
| #
 | |
| # Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
 | |
| # Copyright (c) 2017, AMD Inc. All rights reserved.<BR>
 | |
| # Copyright (c) 2018 - 2020, ARM Limited. All rights reserved.<BR>
 | |
| #
 | |
| # SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| #
 | |
| ##
 | |
| 
 | |
| [Defines]
 | |
|   INF_VERSION                    = 0x00010005
 | |
|   BASE_NAME                      = PcRtc
 | |
|   MODULE_UNI_FILE                = PcRtc.uni
 | |
|   FILE_GUID                      = 378D7B65-8DA9-4773-B6E4-A47826A833E1
 | |
|   MODULE_TYPE                    = DXE_RUNTIME_DRIVER
 | |
|   VERSION_STRING                 = 1.0
 | |
|   ENTRY_POINT                    = InitializePcRtc
 | |
| 
 | |
| #
 | |
| # The following information is for reference only and not required by the build tools.
 | |
| #
 | |
| #  VALID_ARCHITECTURES           = IA32 X64 EBC
 | |
| #
 | |
| 
 | |
| [Sources]
 | |
|   PcRtcEntry.c
 | |
|   PcRtc.c
 | |
|   PcRtc.h
 | |
| 
 | |
| [Packages]
 | |
|   MdePkg/MdePkg.dec
 | |
|   PcAtChipsetPkg/PcAtChipsetPkg.dec
 | |
| 
 | |
| [LibraryClasses]
 | |
|   UefiRuntimeServicesTableLib
 | |
|   UefiRuntimeLib
 | |
|   UefiBootServicesTableLib
 | |
|   UefiDriverEntryPoint
 | |
|   TimerLib
 | |
|   IoLib
 | |
|   BaseMemoryLib
 | |
|   UefiLib
 | |
|   DebugLib
 | |
|   BaseLib
 | |
|   PcdLib
 | |
|   ReportStatusCodeLib
 | |
| 
 | |
| [Protocols]
 | |
|   gEfiRealTimeClockArchProtocolGuid             ## PRODUCES
 | |
| 
 | |
| [Guids]
 | |
|   ## SOMETIMES_CONSUMES ## Event
 | |
|   ## SOMETIMES_CONSUMES ## SystemTable
 | |
|   gEfiAcpi10TableGuid
 | |
| 
 | |
|   ## SOMETIMES_CONSUMES ## Event
 | |
|   ## SOMETIMES_CONSUMES ## SystemTable
 | |
|   gEfiAcpiTableGuid
 | |
| 
 | |
|   gEfiEventVirtualAddressChangeGuid
 | |
| 
 | |
| [FeaturePcd]
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcUseMmio                   ## CONSUMES
 | |
| 
 | |
| [FixedPcd]
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdInitialValueRtcRegisterA     ## CONSUMES
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdInitialValueRtcRegisterB     ## CONSUMES
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdInitialValueRtcRegisterD     ## CONSUMES
 | |
| 
 | |
| [Pcd]
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdRealTimeClockUpdateTimeout   ## CONSUMES
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdMinimalValidYear             ## CONSUMES
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdMaximalValidYear             ## CONSUMES
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister             ## CONSUMES
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister            ## CONSUMES
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister64           ## CONSUMES
 | |
|   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister64          ## CONSUMES
 | |
| 
 | |
| [Depex]
 | |
|   gEfiVariableArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid
 | |
| 
 | |
| [UserExtensions.TianoCore."ExtraFiles"]
 | |
|   PcRtcExtra.uni
 |