From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web10.151478.1680758806314065963 for ; Wed, 05 Apr 2023 22:26:46 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=AHfe9qhi; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: evan.chai@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680758806; x=1712294806; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=YEPMfiuoNmUVPeCmzmGm6NmT8YIYsj8mMcsRrVxfUZA=; b=AHfe9qhiVf+cuQCC4adnMh7fwLMHt37hKAyEcjTHR8m4gKhN4PyBrc1b F1xH/4j4u5XBSPXxTDAS9TNLfn3CO5LSBLbYsOCG6c3RhgHDoaq/FtOm2 6KwLlApJqdoG8j6J9U5JK9nE0dquvV+vznfVT84HKe/AG/f1r/8urJxI3 j3D31cbQ8mGcooa1htbcctU+WktV0r9SAfJuhDgr2dkieZ6iOTXx5HZXZ XHBvO5WQfywb5kS+xQ1QLI1g8h9j390kJxvE9i3t7b1tM5+hoQ5ZoYFmC dJqo67nTe+h4TvV8FThUxd1LTI8nAg0WRhfcHtEtAZaH9Sw5u+d7582dQ Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10671"; a="323020617" X-IronPort-AV: E=Sophos;i="5.98,322,1673942400"; d="scan'208";a="323020617" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Apr 2023 22:26:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10671"; a="776324965" X-IronPort-AV: E=Sophos;i="5.98,322,1673942400"; d="scan'208";a="776324965" Received: from evancy.sh.intel.com ([10.239.158.113]) by FMSMGA003.fm.intel.com with ESMTP; 05 Apr 2023 22:26:41 -0700 From: "Chai, Evan" To: devel@edk2.groups.io Cc: Daniel Schaefer , Sunil V L , Andrei Warkentin Subject: [edk2-platforms][PATCH 2/5] Platform/Sifive: remove redundant TimerDxe from Platform Date: Thu, 6 Apr 2023 13:24:20 +0800 Message-Id: <20230406052423.378702-3-evan.chai@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230406052423.378702-1-evan.chai@intel.com> References: <20230406052423.378702-1-evan.chai@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable It will be replaced by UefiCpuPkg/CpuTimerDxeRiscV64. Cc: Daniel Schaefer Cc: Sunil V L Cc: Andrei Warkentin Signed-off-by: Evan Chai --- Platform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.dsc | 2= +- Platform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.fdf | 2= +- Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/U540.dsc | 2= +- Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/U540.fdf | 2= +- Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.c | 311= --------------------------------------------------------------------------= ---------------------------------------------------------------------------= ---------------------------------------------------------------------------= ---------------------------------------------------------------------------= ------------ Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.h | 174= --------------------------------------------------------------------------= ---------------------------------------------------------------------------= ------------------------- Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.uni | 14= -------------- Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerDxe.inf | 54= ------------------------------------------------------ Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerExtra.uni | 12= ------------ 9 files changed, 4 insertions(+), 569 deletions(-) diff --git a/Platform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.dsc b/P= latform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.dsc index efcfdd35..c26b4608 100644 --- a/Platform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.dsc +++ b/Platform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.dsc @@ -460,7 +460,7 @@ #=0D # RISC-V Platform module=0D #=0D - Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerDxe.inf=0D + UefiCpuPkg/CpuTimerDxeRiscV64/CpuTimerDxeRiscV64.inf=0D Platform/SiFive/U5SeriesPkg/Universal/Dxe/RamFvbServicesRuntimeDxe/FvbSe= rvicesRuntimeDxe.inf=0D =0D #=0D diff --git a/Platform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.fdf b/P= latform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.fdf index da4d3379..b17c960d 100644 --- a/Platform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.fdf +++ b/Platform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.fdf @@ -150,7 +150,7 @@ INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockR= untimeDxe.inf INF Platform/SiFive/U5SeriesPkg/Universal/Dxe/RamFvbServicesRuntimeDxe/Fv= bServicesRuntimeDxe.inf=0D =0D # RISC-V Core Drivers=0D -INF Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerDxe.inf=0D +INF UefiCpuPkg/CpuTimerDxeRiscV64/CpuTimerDxeRiscV64.inf=0D INF UefiCpuPkg/CpuDxeRiscV64/CpuDxeRiscV64.inf=0D INF Silicon/RISC-V/ProcessorPkg/Universal/SmbiosDxe/RiscVSmbiosDxe.inf=0D =0D diff --git a/Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/U5= 40.dsc b/Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/U540.d= sc index d92f8166..4487913f 100644 --- a/Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/U540.dsc +++ b/Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/U540.dsc @@ -459,7 +459,7 @@ #=0D # RISC-V Platform module=0D #=0D - Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerDxe.inf=0D + UefiCpuPkg/CpuTimerDxeRiscV64/CpuTimerDxeRiscV64.inf=0D Platform/SiFive/U5SeriesPkg/Universal/Dxe/RamFvbServicesRuntimeDxe/FvbSe= rvicesRuntimeDxe.inf=0D =0D #=0D diff --git a/Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/U5= 40.fdf b/Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/U540.f= df index 237ed74a..9ae89647 100644 --- a/Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/U540.fdf +++ b/Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/U540.fdf @@ -150,7 +150,7 @@ INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockR= untimeDxe.inf INF Platform/SiFive/U5SeriesPkg/Universal/Dxe/RamFvbServicesRuntimeDxe/Fv= bServicesRuntimeDxe.inf=0D =0D # RISC-V Core Drivers=0D -INF Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerDxe.inf=0D +INF UefiCpuPkg/CpuTimerDxeRiscV64/CpuTimerDxeRiscV64.inf=0D INF UefiCpuPkg/CpuDxeRiscV64/CpuDxeRiscV64.inf=0D INF Silicon/RISC-V/ProcessorPkg/Universal/SmbiosDxe/RiscVSmbiosDxe.inf=0D =0D diff --git a/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.c b/P= latform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.c deleted file mode 100644 index deb57992..00000000 --- a/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.c +++ /dev/null @@ -1,311 +0,0 @@ -/** @file=0D - RISC-V Timer Architectural Protocol for U5 series platform.=0D -=0D - Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All right= s reserved.
=0D -=0D - SPDX-License-Identifier: BSD-2-Clause-Patent=0D -=0D -**/=0D -=0D -#include "Timer.h"=0D -#include =0D -#include =0D -#include =0D -#include =0D -#include =0D -#include =0D -=0D -BOOLEAN TimerHandlerReentry =3D FALSE;=0D -=0D -//=0D -// The handle onto which the Timer Architectural Protocol will be installe= d=0D -//=0D -STATIC EFI_HANDLE mTimerHandle =3D NULL;=0D -=0D -//=0D -// The Timer Architectural Protocol that this driver produces=0D -//=0D -EFI_TIMER_ARCH_PROTOCOL mTimer =3D {=0D - TimerDriverRegisterHandler,=0D - TimerDriverSetTimerPeriod,=0D - TimerDriverGetTimerPeriod,=0D - TimerDriverGenerateSoftInterrupt=0D -};=0D -=0D -//=0D -// Pointer to the CPU Architectural Protocol instance=0D -//=0D -EFI_CPU_ARCH_PROTOCOL *mCpu;=0D -=0D -//=0D -// The notification function to call on every timer interrupt.=0D -// A bug in the compiler prevents us from initializing this here.=0D -//=0D -STATIC EFI_TIMER_NOTIFY mTimerNotifyFunction;=0D -=0D -//=0D -// The current period of the timer interrupt=0D -//=0D -STATIC UINT64 mTimerPeriod =3D 0;=0D -=0D -/**=0D - U5 Series Timer Interrupt Handler.=0D -=0D - @param InterruptType The type of interrupt that occured=0D - @param SystemContext A pointer to the system context when the interru= pt occured=0D -**/=0D -=0D -VOID=0D -EFIAPI=0D -TimerInterruptHandler (=0D - IN EFI_EXCEPTION_TYPE InterruptType,=0D - IN EFI_SYSTEM_CONTEXT SystemContext=0D - )=0D -{=0D - EFI_TPL OriginalTPL;=0D - UINT64 RiscvTimer;=0D -=0D - if (TimerHandlerReentry) {=0D - //=0D - // MMode timer occurred when processing=0D - // SMode timer handler.=0D - //=0D - RiscvTimer =3D RiscVReadMachineTimerInterface();=0D - SbiSetTimer (RiscvTimer +=3D mTimerPeriod);=0D - csr_clear(CSR_SIP, MIP_STIP);=0D - return;=0D - }=0D - TimerHandlerReentry =3D TRUE;=0D -=0D - OriginalTPL =3D gBS->RaiseTPL (TPL_HIGH_LEVEL);=0D - csr_clear(CSR_SIE, MIP_STIP); // Disable SMode timer int=0D - csr_clear(CSR_SIP, MIP_STIP);=0D - if (mTimerPeriod =3D=3D 0) {=0D - gBS->RestoreTPL (OriginalTPL);=0D - csr_clear(CSR_SIE, MIP_STIP); // Disable SMode timer int=0D - return;=0D - }=0D - if (mTimerNotifyFunction !=3D NULL) {=0D - mTimerNotifyFunction (mTimerPeriod);=0D - }=0D - RiscvTimer =3D RiscVReadMachineTimerInterface();=0D - SbiSetTimer (RiscvTimer +=3D mTimerPeriod);=0D - gBS->RestoreTPL (OriginalTPL);=0D - csr_set(CSR_SIE, MIP_STIP); // enable SMode timer int=0D - TimerHandlerReentry =3D FALSE;=0D -}=0D -=0D -/**=0D -=0D - This function registers the handler NotifyFunction so it is called every= time=0D - the timer interrupt fires. It also passes the amount of time since the = last=0D - handler call to the NotifyFunction. If NotifyFunction is NULL, then the= =0D - handler is unregistered. If the handler is registered, then EFI_SUCCESS= is=0D - returned. If the CPU does not support registering a timer interrupt han= dler,=0D - then EFI_UNSUPPORTED is returned. If an attempt is made to register a h= andler=0D - when a handler is already registered, then EFI_ALREADY_STARTED is return= ed.=0D - If an attempt is made to unregister a handler when a handler is not regi= stered,=0D - then EFI_INVALID_PARAMETER is returned. If an error occurs attempting t= o=0D - register the NotifyFunction with the timer interrupt, then EFI_DEVICE_ER= ROR=0D - is returned.=0D -=0D - @param This The EFI_TIMER_ARCH_PROTOCOL instance.=0D - @param NotifyFunction The function to call when a timer interrupt fire= s. This=0D - function executes at TPL_HIGH_LEVEL. The DXE Co= re will=0D - register a handler for the timer interrupt, so i= t can know=0D - how much time has passed. This information is u= sed to=0D - signal timer based events. NULL will unregister= the handler.=0D -=0D - @retval EFI_SUCCESS The timer handler was registered.= =0D - @retval EFI_UNSUPPORTED The platform does not support time= r interrupts.=0D - @retval EFI_ALREADY_STARTED NotifyFunction is not NULL, and a = handler is already=0D - registered.=0D - @retval EFI_INVALID_PARAMETER NotifyFunction is NULL, and a hand= ler was not=0D - previously registered.=0D - @retval EFI_DEVICE_ERROR The timer handler could not be reg= istered.=0D -=0D -**/=0D -EFI_STATUS=0D -EFIAPI=0D -TimerDriverRegisterHandler (=0D - IN EFI_TIMER_ARCH_PROTOCOL *This,=0D - IN EFI_TIMER_NOTIFY NotifyFunction=0D - )=0D -{=0D - DEBUG ((DEBUG_INFO, "TimerDriverRegisterHandler(0x%lx) called\n", Notify= Function));=0D - mTimerNotifyFunction =3D NotifyFunction;=0D - return EFI_SUCCESS;=0D -}=0D -=0D -/**=0D -=0D - This function adjusts the period of timer interrupts to the value specif= ied=0D - by TimerPeriod. If the timer period is updated, then the selected timer= =0D - period is stored in EFI_TIMER.TimerPeriod, and EFI_SUCCESS is returned. = If=0D - the timer hardware is not programmable, then EFI_UNSUPPORTED is returned= .=0D - If an error occurs while attempting to update the timer period, then the= =0D - timer hardware will be put back in its state prior to this call, and=0D - EFI_DEVICE_ERROR is returned. If TimerPeriod is 0, then the timer inter= rupt=0D - is disabled. This is not the same as disabling the CPU's interrupts.=0D - Instead, it must either turn off the timer hardware, or it must adjust t= he=0D - interrupt controller so that a CPU interrupt is not generated when the t= imer=0D - interrupt fires.=0D -=0D -=0D - @param This The EFI_TIMER_ARCH_PROTOCOL instance.=0D - @param TimerPeriod The rate to program the timer interrupt in 100 nS= units. If=0D - the timer hardware is not programmable, then EFI_= UNSUPPORTED is=0D - returned. If the timer is programmable, then the= timer period=0D - will be rounded up to the nearest timer period th= at is supported=0D - by the timer hardware. If TimerPeriod is set to = 0, then the=0D - timer interrupts will be disabled.=0D -=0D - @retval EFI_SUCCESS The timer period was changed.=0D - @retval EFI_UNSUPPORTED The platform cannot change the period o= f the timer interrupt.=0D - @retval EFI_DEVICE_ERROR The timer period could not be changed d= ue to a device error.=0D -=0D -**/=0D -EFI_STATUS=0D -EFIAPI=0D -TimerDriverSetTimerPeriod (=0D - IN EFI_TIMER_ARCH_PROTOCOL *This,=0D - IN UINT64 TimerPeriod=0D - )=0D -{=0D - UINT64 RiscvTimer;=0D -=0D - DEBUG ((DEBUG_INFO, "TimerDriverSetTimerPeriod(0x%lx)\n", TimerPeriod));= =0D -=0D - if (TimerPeriod =3D=3D 0) {=0D - mTimerPeriod =3D 0;=0D - csr_clear(CSR_SIE, MIP_STIP); // disable timer int=0D - return EFI_SUCCESS;=0D - }=0D -=0D - mTimerPeriod =3D TimerPeriod; // convert unit from 100ns to 1us=0D - RiscvTimer =3D RiscVReadMachineTimerInterface();=0D - SbiSetTimer(RiscvTimer + mTimerPeriod / 10);=0D -=0D - mCpu->EnableInterrupt(mCpu);=0D - csr_set(CSR_SIE, MIP_STIP); // enable timer int=0D - return EFI_SUCCESS;=0D -}=0D -=0D -/**=0D -=0D - This function retrieves the period of timer interrupts in 100 ns units,= =0D - returns that value in TimerPeriod, and returns EFI_SUCCESS. If TimerPer= iod=0D - is NULL, then EFI_INVALID_PARAMETER is returned. If a TimerPeriod of 0 = is=0D - returned, then the timer is currently disabled.=0D -=0D -=0D - @param This The EFI_TIMER_ARCH_PROTOCOL instance.=0D - @param TimerPeriod A pointer to the timer period to retrieve in 100 = ns units. If=0D - 0 is returned, then the timer is currently disabl= ed.=0D -=0D - @retval EFI_SUCCESS The timer period was returned in TimerPer= iod.=0D - @retval EFI_INVALID_PARAMETER TimerPeriod is NULL.=0D -=0D -**/=0D -EFI_STATUS=0D -EFIAPI=0D -TimerDriverGetTimerPeriod (=0D - IN EFI_TIMER_ARCH_PROTOCOL *This,=0D - OUT UINT64 *TimerPeriod=0D - )=0D -{=0D - *TimerPeriod =3D mTimerPeriod;=0D - return EFI_SUCCESS;=0D -}=0D -=0D -/**=0D -=0D - This function generates a soft timer interrupt. If the platform does not= support soft=0D - timer interrupts, then EFI_UNSUPPORTED is returned. Otherwise, EFI_SUCCE= SS is returned.=0D - If a handler has been registered through the EFI_TIMER_ARCH_PROTOCOL.Reg= isterHandler()=0D - service, then a soft timer interrupt will be generated. If the timer int= errupt is=0D - enabled when this service is called, then the registered handler will be= invoked. The=0D - registered handler should not be able to distinguish a hardware-generate= d timer=0D - interrupt from a software-generated timer interrupt.=0D -=0D -=0D - @param This The EFI_TIMER_ARCH_PROTOCOL instance.=0D -=0D - @retval EFI_SUCCESS The soft timer interrupt was generated.=0D - @retval EFI_UNSUPPORTEDT The platform does not support the generation o= f soft timer interrupts.=0D -=0D -**/=0D -EFI_STATUS=0D -EFIAPI=0D -TimerDriverGenerateSoftInterrupt (=0D - IN EFI_TIMER_ARCH_PROTOCOL *This=0D - )=0D -{=0D - return EFI_SUCCESS;=0D -}=0D -=0D -/**=0D - Initialize the Timer Architectural Protocol driver=0D -=0D - @param ImageHandle ImageHandle of the loaded driver=0D - @param SystemTable Pointer to the System Table=0D -=0D - @retval EFI_SUCCESS Timer Architectural Protocol created=0D - @retval EFI_OUT_OF_RESOURCES Not enough resources available to initial= ize driver.=0D - @retval EFI_DEVICE_ERROR A device error occured attempting to init= ialize the driver.=0D -=0D -**/=0D -EFI_STATUS=0D -EFIAPI=0D -TimerDriverInitialize (=0D - IN EFI_HANDLE ImageHandle,=0D - IN EFI_SYSTEM_TABLE *SystemTable=0D - )=0D -{=0D - EFI_STATUS Status;=0D -=0D - //=0D - // Initialize the pointer to our notify function.=0D - //=0D - mTimerNotifyFunction =3D NULL;=0D -=0D - //=0D - // Make sure the Timer Architectural Protocol is not already installed i= n the system=0D - //=0D - ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiTimerArchProtocolGuid);=0D -=0D - //=0D - // Find the CPU architectural protocol.=0D - //=0D - Status =3D gBS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, (VOID **= ) &mCpu);=0D - ASSERT_EFI_ERROR (Status);=0D -=0D - //=0D - // Force the timer to be disabled=0D - //=0D - Status =3D TimerDriverSetTimerPeriod (&mTimer, 0);=0D - ASSERT_EFI_ERROR (Status);=0D -=0D - //=0D - // Install interrupt handler for RISC-V Timer.=0D - //=0D - Status =3D mCpu->RegisterInterruptHandler (mCpu, EXCEPT_RISCV_TIMER_INT,= TimerInterruptHandler);=0D - ASSERT_EFI_ERROR (Status);=0D -=0D - //=0D - // Force the timer to be enabled at its default period=0D - //=0D - Status =3D TimerDriverSetTimerPeriod (&mTimer, DEFAULT_TIMER_TICK_DURATI= ON);=0D - ASSERT_EFI_ERROR (Status);=0D -=0D - //=0D - // Install the Timer Architectural Protocol onto a new handle=0D - //=0D - Status =3D gBS->InstallMultipleProtocolInterfaces (=0D - &mTimerHandle,=0D - &gEfiTimerArchProtocolGuid, &mTimer,=0D - NULL=0D - );=0D - ASSERT_EFI_ERROR (Status);=0D - return Status;=0D -}=0D diff --git a/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.h b/P= latform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.h deleted file mode 100644 index 8301685c..00000000 --- a/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.h +++ /dev/null @@ -1,174 +0,0 @@ -/** @file=0D - RISC-V Timer Architectural Protocol definitions for U5 Series platform,= =0D -=0D - Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All right= s reserved.
=0D -=0D - SPDX-License-Identifier: BSD-2-Clause-Patent=0D -=0D -**/=0D -=0D -#ifndef U5_SERIES_TIMER_H_=0D -#define U5_SERIES_TIMER_H_=0D -=0D -#include =0D -=0D -#include =0D -#include =0D -=0D -#include =0D -#include =0D -#include =0D -#include =0D -#include =0D -=0D -//=0D -// RISC-V use 100us timer.=0D -// The default timer tick duration is set to 10 ms =3D 10 * 1000 * 10 100 = ns units=0D -//=0D -#define DEFAULT_TIMER_TICK_DURATION 100000=0D -=0D -extern VOID RiscvSetTimerPeriod (UINT32 TimerPeriod);=0D -=0D -//=0D -// Function Prototypes=0D -//=0D -/**=0D - Initialize the Timer Architectural Protocol driver=0D -=0D - @param ImageHandle ImageHandle of the loaded driver=0D - @param SystemTable Pointer to the System Table=0D -=0D - @retval EFI_SUCCESS Timer Architectural Protocol created=0D - @retval EFI_OUT_OF_RESOURCES Not enough resources available to initial= ize driver.=0D - @retval EFI_DEVICE_ERROR A device error occured attempting to init= ialize the driver.=0D -=0D -**/=0D -EFI_STATUS=0D -EFIAPI=0D -TimerDriverInitialize (=0D - IN EFI_HANDLE ImageHandle,=0D - IN EFI_SYSTEM_TABLE *SystemTable=0D - )=0D -;=0D -=0D -/**=0D -=0D - This function adjusts the period of timer interrupts to the value specif= ied=0D - by TimerPeriod. If the timer period is updated, then the selected timer= =0D - period is stored in EFI_TIMER.TimerPeriod, and EFI_SUCCESS is returned. = If=0D - the timer hardware is not programmable, then EFI_UNSUPPORTED is returned= .=0D - If an error occurs while attempting to update the timer period, then the= =0D - timer hardware will be put back in its state prior to this call, and=0D - EFI_DEVICE_ERROR is returned. If TimerPeriod is 0, then the timer inter= rupt=0D - is disabled. This is not the same as disabling the CPU's interrupts.=0D - Instead, it must either turn off the timer hardware, or it must adjust t= he=0D - interrupt controller so that a CPU interrupt is not generated when the t= imer=0D - interrupt fires.=0D -=0D -=0D - @param This The EFI_TIMER_ARCH_PROTOCOL instance.=0D - @param NotifyFunction The rate to program the timer interrupt in 100 nS= units. If=0D - the timer hardware is not programmable, then EFI_= UNSUPPORTED is=0D - returned. If the timer is programmable, then the= timer period=0D - will be rounded up to the nearest timer period th= at is supported=0D - by the timer hardware. If TimerPeriod is set to = 0, then the=0D - timer interrupts will be disabled.=0D -=0D - @retval EFI_SUCCESS The timer period was changed.=0D - @retval EFI_UNSUPPORTED The platform cannot change the period o= f the timer interrupt.=0D - @retval EFI_DEVICE_ERROR The timer period could not be changed d= ue to a device error.=0D -=0D -**/=0D -EFI_STATUS=0D -EFIAPI=0D -TimerDriverRegisterHandler (=0D - IN EFI_TIMER_ARCH_PROTOCOL *This,=0D - IN EFI_TIMER_NOTIFY NotifyFunction=0D - )=0D -;=0D -=0D -/**=0D -=0D - This function adjusts the period of timer interrupts to the value specif= ied=0D - by TimerPeriod. If the timer period is updated, then the selected timer= =0D - period is stored in EFI_TIMER.TimerPeriod, and EFI_SUCCESS is returned. = If=0D - the timer hardware is not programmable, then EFI_UNSUPPORTED is returned= .=0D - If an error occurs while attempting to update the timer period, then the= =0D - timer hardware will be put back in its state prior to this call, and=0D - EFI_DEVICE_ERROR is returned. If TimerPeriod is 0, then the timer inter= rupt=0D - is disabled. This is not the same as disabling the CPU's interrupts.=0D - Instead, it must either turn off the timer hardware, or it must adjust t= he=0D - interrupt controller so that a CPU interrupt is not generated when the t= imer=0D - interrupt fires.=0D -=0D -=0D - @param This The EFI_TIMER_ARCH_PROTOCOL instance.=0D - @param TimerPeriod The rate to program the timer interrupt in 100 nS= units. If=0D - the timer hardware is not programmable, then EFI_= UNSUPPORTED is=0D - returned. If the timer is programmable, then the= timer period=0D - will be rounded up to the nearest timer period th= at is supported=0D - by the timer hardware. If TimerPeriod is set to = 0, then the=0D - timer interrupts will be disabled.=0D -=0D - @retval EFI_SUCCESS The timer period was changed.=0D - @retval EFI_UNSUPPORTED The platform cannot change the period o= f the timer interrupt.=0D - @retval EFI_DEVICE_ERROR The timer period could not be changed d= ue to a device error.=0D -=0D -**/=0D -EFI_STATUS=0D -EFIAPI=0D -TimerDriverSetTimerPeriod (=0D - IN EFI_TIMER_ARCH_PROTOCOL *This,=0D - IN UINT64 TimerPeriod=0D - )=0D -;=0D -=0D -/**=0D -=0D - This function retrieves the period of timer interrupts in 100 ns units,= =0D - returns that value in TimerPeriod, and returns EFI_SUCCESS. If TimerPer= iod=0D - is NULL, then EFI_INVALID_PARAMETER is returned. If a TimerPeriod of 0 = is=0D - returned, then the timer is currently disabled.=0D -=0D -=0D - @param This The EFI_TIMER_ARCH_PROTOCOL instance.=0D - @param TimerPeriod A pointer to the timer period to retrieve in 100 = ns units. If=0D - 0 is returned, then the timer is currently disabl= ed.=0D -=0D - @retval EFI_SUCCESS The timer period was returned in TimerPer= iod.=0D - @retval EFI_INVALID_PARAMETER TimerPeriod is NULL.=0D -=0D -**/=0D -EFI_STATUS=0D -EFIAPI=0D -TimerDriverGetTimerPeriod (=0D - IN EFI_TIMER_ARCH_PROTOCOL *This,=0D - OUT UINT64 *TimerPeriod=0D - )=0D -;=0D -=0D -/**=0D -=0D - This function generates a soft timer interrupt. If the platform does not= support soft=0D - timer interrupts, then EFI_UNSUPPORTED is returned. Otherwise, EFI_SUCCE= SS is returned.=0D - If a handler has been registered through the EFI_TIMER_ARCH_PROTOCOL.Reg= isterHandler()=0D - service, then a soft timer interrupt will be generated. If the timer int= errupt is=0D - enabled when this service is called, then the registered handler will be= invoked. The=0D - registered handler should not be able to distinguish a hardware-generate= d timer=0D - interrupt from a software-generated timer interrupt.=0D -=0D -=0D - @param This The EFI_TIMER_ARCH_PROTOCOL instance.=0D -=0D - @retval EFI_SUCCESS The soft timer interrupt was generated.=0D - @retval EFI_UNSUPPORTEDT The platform does not support the generation o= f soft timer interrupts.=0D -=0D -**/=0D -EFI_STATUS=0D -EFIAPI=0D -TimerDriverGenerateSoftInterrupt (=0D - IN EFI_TIMER_ARCH_PROTOCOL *This=0D - )=0D -;=0D -=0D -#endif=0D diff --git a/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.uni b= /Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.uni deleted file mode 100644 index 38302244..00000000 --- a/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/Timer.uni +++ /dev/null @@ -1,14 +0,0 @@ -// /** @file=0D -//=0D -// RISC-V Timer Arch protocol strings.=0D -//=0D -// Copyright (c) 2016, Hewlett Packard Enterprise Development LP. All righ= ts reserved.
=0D -//=0D -// SPDX-License-Identifier: BSD-2-Clause-Patent=0D -//=0D -// **/=0D -=0D -=0D -#string STR_MODULE_ABSTRACT #language en-US "RISC-V timer driv= er that provides Timer Arch protocol"=0D -=0D -#string STR_MODULE_DESCRIPTION #language en-US "RISC-V timer driv= er that provides Timer Arch protocol."=0D diff --git a/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerDxe.in= f b/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerDxe.inf deleted file mode 100644 index 4571621a..00000000 --- a/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerDxe.inf +++ /dev/null @@ -1,54 +0,0 @@ -## @file=0D -# RISC-V Timer Arch protocol module for U5 Series platform=0D -#=0D -# Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All right= s reserved.
=0D -#=0D -# SPDX-License-Identifier: BSD-2-Clause-Patent=0D -#=0D -##=0D -=0D -[Defines]=0D - INF_VERSION =3D 0x0001001b=0D - BASE_NAME =3D Timer=0D - MODULE_UNI_FILE =3D Timer.uni=0D - FILE_GUID =3D 3F75D495-23FF-46B6-9D19-0DECC8A4EA91= =0D - MODULE_TYPE =3D DXE_DRIVER=0D - VERSION_STRING =3D 1.0=0D - ENTRY_POINT =3D TimerDriverInitialize=0D -#=0D -# The following information is for reference only and not required by the = build=0D -# tools.=0D -#=0D -# VALID_ARCHITECTURES =3D RISCV64=0D -#=0D -[Packages]=0D - MdePkg/MdePkg.dec=0D - Platform/SiFive/U5SeriesPkg/U5SeriesPkg.dec=0D - Silicon/RISC-V/ProcessorPkg/RiscVProcessorPkg.dec=0D -=0D -[LibraryClasses]=0D - BaseLib=0D - DebugLib=0D - IoLib=0D - MachineModeTimerLib=0D - RiscVCpuLib=0D - RiscVEdk2SbiLib=0D - UefiBootServicesTableLib=0D - UefiDriverEntryPoint=0D -=0D -[Sources]=0D - Timer.h=0D - Timer.c=0D -=0D -[Protocols]=0D - gEfiCpuArchProtocolGuid ## CONSUMES=0D - gEfiTimerArchProtocolGuid ## PRODUCES=0D -=0D -[Pcd]=0D - gUefiRiscVPkgTokenSpaceGuid.PcdRiscVMachineTimerFrequencyInHerz=0D -=0D -[Depex]=0D - gEfiCpuArchProtocolGuid=0D -=0D -[UserExtensions.TianoCore."ExtraFiles"]=0D - TimerExtra.uni=0D diff --git a/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerExtra.= uni b/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerExtra.uni deleted file mode 100644 index cf25ff14..00000000 --- a/Platform/SiFive/U5SeriesPkg/Universal/Dxe/TimerDxe/TimerExtra.uni +++ /dev/null @@ -1,12 +0,0 @@ -// /** @file=0D -// Timer Localized Strings and Content=0D -//=0D -// Copyright (c) 2016, Hewlett Packard Enterprise Development LP. All righ= ts reserved.
=0D -//=0D -// SPDX-License-Identifier: BSD-2-Clause-Patent=0D -//=0D -// **/=0D -=0D -#string STR_PROPERTIES_MODULE_NAME=0D -#language en-US=0D -"RISC-V Timer DXE Driver"=0D --=20 2.34.1