[edk2,2/4] ArmPkg/ArmGicDxe: expose HardwareInterrupt2 protocol

Message ID 20170209192623.262044-3-evan.lloyd@arm.com
State New
Headers show
Series
  • [edk2,1/4] EmbeddedPkg: introduce HardwareInterrupt2 protocol
Related show

Commit Message

Evan Lloyd Feb. 9, 2017, 7:26 p.m.
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>


Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Signed-off-by: Girish Pathak <girish.pathak@arm.com>

Signed-off-by: Evan Lloyd <evan.lloyd@arm.com>

Tested-by: Girish Pathak <girish.pathak@arm.com>

---
 ArmPkg/Drivers/ArmGic/ArmGicDxe.inf       |  1 +
 ArmPkg/Drivers/ArmGic/ArmGicDxe.h         |  2 ++
 ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c   |  2 ++
 ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c | 38 +++++++++++++++++++-
 ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c | 37 ++++++++++++++++++-
 5 files changed, 78 insertions(+), 2 deletions(-)

-- 
Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Comments

Leif Lindholm Feb. 13, 2017, 12:21 p.m. | #1
On Thu, Feb 09, 2017 at 07:26:21PM +0000, evan.lloyd@arm.com wrote:
> From: Ard Biesheuvel <ard.biesheuvel@linaro.org>

> 


Ard - can we have some more commit message, please? :)

> Contributed-under: TianoCore Contribution Agreement 1.0

> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

> Signed-off-by: Girish Pathak <girish.pathak@arm.com>

> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com>

> Tested-by: Girish Pathak <girish.pathak@arm.com>

> ---

>  ArmPkg/Drivers/ArmGic/ArmGicDxe.inf       |  1 +

>  ArmPkg/Drivers/ArmGic/ArmGicDxe.h         |  2 ++

>  ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c   |  2 ++

>  ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c | 38 +++++++++++++++++++-

>  ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c | 37 ++++++++++++++++++-

>  5 files changed, 78 insertions(+), 2 deletions(-)

> 

> diff --git a/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf b/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf

> index e554301c4b28022c805f69242cf6ee979d19abc2..69390638a9afb6aeccad510e7b572450568c1409 100644

> --- a/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf

> +++ b/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf

> @@ -48,6 +48,7 @@ [LibraryClasses]

>  

>  [Protocols]

>    gHardwareInterruptProtocolGuid

> +  gHardwareInterrupt2ProtocolGuid

>    gEfiCpuArchProtocolGuid

>  

>  [Pcd.common]

> diff --git a/ArmPkg/Drivers/ArmGic/ArmGicDxe.h b/ArmPkg/Drivers/ArmGic/ArmGicDxe.h

> index af33aa90b00c6775e10a831d63ed707394862362..2633e1ea194fa67511861a4165d54dad99a6f39b 100644

> --- a/ArmPkg/Drivers/ArmGic/ArmGicDxe.h

> +++ b/ArmPkg/Drivers/ArmGic/ArmGicDxe.h

> @@ -24,6 +24,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

>  

>  #include <Protocol/Cpu.h>

>  #include <Protocol/HardwareInterrupt.h>

> +#include <Protocol/HardwareInterrupt2.h>

>  

>  extern UINTN                        mGicNumInterrupts;

>  extern HARDWARE_INTERRUPT_HANDLER  *gRegisteredInterruptHandlers;

> @@ -34,6 +35,7 @@ extern HARDWARE_INTERRUPT_HANDLER  *gRegisteredInterruptHandlers;

>  EFI_STATUS

>  InstallAndRegisterInterruptService (

>    IN EFI_HARDWARE_INTERRUPT_PROTOCOL   *InterruptProtocol,

> +  IN EFI_HARDWARE_INTERRUPT2_PROTOCOL  *Interrupt2Protocol,

>    IN EFI_CPU_INTERRUPT_HANDLER          InterruptHandler,

>    IN EFI_EVENT_NOTIFY                   ExitBootServicesEvent

>    );

> diff --git a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c

> index be77b8361c5af033fd2889cdb48902af867f321d..ef6746f1ad7afba5bba30fc17774987cf17121b6 100644

> --- a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c

> +++ b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c

> @@ -88,6 +88,7 @@ RegisterInterruptSource (

>  EFI_STATUS

>  InstallAndRegisterInterruptService (

>    IN EFI_HARDWARE_INTERRUPT_PROTOCOL   *InterruptProtocol,

> +  IN EFI_HARDWARE_INTERRUPT2_PROTOCOL  *Interrupt2Protocol,

>    IN EFI_CPU_INTERRUPT_HANDLER          InterruptHandler,

>    IN EFI_EVENT_NOTIFY                   ExitBootServicesEvent

>    )

> @@ -104,6 +105,7 @@ InstallAndRegisterInterruptService (

>    Status = gBS->InstallMultipleProtocolInterfaces (

>                    &gHardwareInterruptHandle,

>                    &gHardwareInterruptProtocolGuid, InterruptProtocol,

> +                  &gHardwareInterrupt2ProtocolGuid, Interrupt2Protocol,

>                    NULL

>                    );

>    if (EFI_ERROR (Status)) {

> diff --git a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c

> index b9ecd5543a3e2e0b00fffbcf5543a60567bb5dde..8c4d66125e2e8c7af9898f336ee742ed0aebf058 100644

> --- a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c

> +++ b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c

> @@ -193,6 +193,41 @@ EFI_HARDWARE_INTERRUPT_PROTOCOL gHardwareInterruptV2Protocol = {

>    GicV2EndOfInterrupt

>  };

>  

> +STATIC

> +EFI_STATUS

> +EFIAPI

> +GicV2GetTriggerType (

> +  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,

> +  IN  HARDWARE_INTERRUPT_SOURCE             Source,

> +  OUT EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  *TriggerType

> +  )

> +{

> +  return EFI_SUCCESS;

> +}

> +

> +STATIC

> +EFI_STATUS

> +EFIAPI

> +GicV2SetTriggerType (

> +  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,

> +  IN  HARDWARE_INTERRUPT_SOURCE             Source,

> +  IN  EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  TriggerType

> +  )

> +{

> +  return EFI_SUCCESS;

> +}

> +

> +STATIC EFI_HARDWARE_INTERRUPT2_PROTOCOL gHardwareInterrupt2V2Protocol = {


So, this one gets its STATIC revoked in 4/4 - should it just be left
out from the start?

> +  (HARDWARE_INTERRUPT2_REGISTER)RegisterInterruptSource,

> +  (HARDWARE_INTERRUPT2_ENABLE)GicV2EnableInterruptSource,

> +  (HARDWARE_INTERRUPT2_DISABLE)GicV2DisableInterruptSource,

> +  (HARDWARE_INTERRUPT2_INTERRUPT_STATE)GicV2GetInterruptSourceState,

> +  (HARDWARE_INTERRUPT2_END_OF_INTERRUPT)GicV2EndOfInterrupt,

> +  GicV2GetTriggerType,

> +  GicV2SetTriggerType

> +};

> +

> +

>  /**

>    Shutdown our hardware

>  

> @@ -311,7 +346,8 @@ GicV2DxeInitialize (

>    ArmGicEnableDistributor (mGicDistributorBase);

>  

>    Status = InstallAndRegisterInterruptService (

> -          &gHardwareInterruptV2Protocol, GicV2IrqInterruptHandler, GicV2ExitBootServicesEvent);

> +             &gHardwareInterruptV2Protocol, &gHardwareInterrupt2V2Protocol,

> +             GicV2IrqInterruptHandler, GicV2ExitBootServicesEvent);


And arguably, since this is the functional change, you could do the
cosmetic change (1 per line) which Girish tried in 4/4.

>  

>    return Status;

>  }

> diff --git a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c

> index 8af97a93b1889b33978a7c7fb2a8417c83139142..02deeef78b6d7737172a5992c6decac43cfdd64a 100644

> --- a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c

> +++ b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c

> @@ -184,6 +184,40 @@ EFI_HARDWARE_INTERRUPT_PROTOCOL gHardwareInterruptV3Protocol = {

>    GicV3EndOfInterrupt

>  };

>  

> +STATIC

> +EFI_STATUS

> +EFIAPI

> +GicV3GetTriggerType (

> +  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,

> +  IN  HARDWARE_INTERRUPT_SOURCE             Source,

> +  OUT EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  *TriggerType

> +  )

> +{

> +  return EFI_SUCCESS;

> +}

> +

> +STATIC

> +EFI_STATUS

> +EFIAPI

> +GicV3SetTriggerType (

> +  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,

> +  IN  HARDWARE_INTERRUPT_SOURCE             Source,

> +  IN  EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  TriggerType

> +  )

> +{

> +  return EFI_SUCCESS;

> +}

> +

> +STATIC EFI_HARDWARE_INTERRUPT2_PROTOCOL gHardwareInterrupt2V3Protocol = {


Same comment on STATIC. Leave out?

> +  (HARDWARE_INTERRUPT2_REGISTER)RegisterInterruptSource,

> +  (HARDWARE_INTERRUPT2_ENABLE)GicV3EnableInterruptSource,

> +  (HARDWARE_INTERRUPT2_DISABLE)GicV3DisableInterruptSource,

> +  (HARDWARE_INTERRUPT2_INTERRUPT_STATE)GicV3GetInterruptSourceState,

> +  (HARDWARE_INTERRUPT2_END_OF_INTERRUPT)GicV3EndOfInterrupt,

> +  GicV3GetTriggerType,

> +  GicV3SetTriggerType

> +};

> +

>  /**

>    Shutdown our hardware

>  

> @@ -331,7 +365,8 @@ GicV3DxeInitialize (

>    ArmGicEnableDistributor (mGicDistributorBase);

>  

>    Status = InstallAndRegisterInterruptService (

> -          &gHardwareInterruptV3Protocol, GicV3IrqInterruptHandler, GicV3ExitBootServicesEvent);

> +             &gHardwareInterruptV3Protocol, &gHardwareInterrupt2V3Protocol,

> +             GicV3IrqInterruptHandler, GicV3ExitBootServicesEvent);


And same comment on 1 per line.

>  

>    return Status;

>  }

> -- 

> Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")

> 

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Ard Biesheuvel Feb. 13, 2017, 12:26 p.m. | #2
> On 13 Feb 2017, at 13:21, Leif Lindholm <leif.lindholm@linaro.org> wrote:

> 

>> On Thu, Feb 09, 2017 at 07:26:21PM +0000, evan.lloyd@arm.com wrote:

>> From: Ard Biesheuvel <ard.biesheuvel@linaro.org>

>> 

> 

> Ard - can we have some more commit message, please? :)

> 


This patch was only a PoC, and needs to be merged with 4/4 imo.

The STATICs should be kept, and the other cosmetic changes could also be dropped afaict

>> Contributed-under: TianoCore Contribution Agreement 1.0

>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

>> Signed-off-by: Girish Pathak <girish.pathak@arm.com>

>> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com>

>> Tested-by: Girish Pathak <girish.pathak@arm.com>

>> ---

>> ArmPkg/Drivers/ArmGic/ArmGicDxe.inf       |  1 +

>> ArmPkg/Drivers/ArmGic/ArmGicDxe.h         |  2 ++

>> ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c   |  2 ++

>> ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c | 38 +++++++++++++++++++-

>> ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c | 37 ++++++++++++++++++-

>> 5 files changed, 78 insertions(+), 2 deletions(-)

>> 

>> diff --git a/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf b/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf

>> index e554301c4b28022c805f69242cf6ee979d19abc2..69390638a9afb6aeccad510e7b572450568c1409 100644

>> --- a/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf

>> +++ b/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf

>> @@ -48,6 +48,7 @@ [LibraryClasses]

>> 

>> [Protocols]

>>   gHardwareInterruptProtocolGuid

>> +  gHardwareInterrupt2ProtocolGuid

>>   gEfiCpuArchProtocolGuid

>> 

>> [Pcd.common]

>> diff --git a/ArmPkg/Drivers/ArmGic/ArmGicDxe.h b/ArmPkg/Drivers/ArmGic/ArmGicDxe.h

>> index af33aa90b00c6775e10a831d63ed707394862362..2633e1ea194fa67511861a4165d54dad99a6f39b 100644

>> --- a/ArmPkg/Drivers/ArmGic/ArmGicDxe.h

>> +++ b/ArmPkg/Drivers/ArmGic/ArmGicDxe.h

>> @@ -24,6 +24,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

>> 

>> #include <Protocol/Cpu.h>

>> #include <Protocol/HardwareInterrupt.h>

>> +#include <Protocol/HardwareInterrupt2.h>

>> 

>> extern UINTN                        mGicNumInterrupts;

>> extern HARDWARE_INTERRUPT_HANDLER *gRegisteredInterruptHandlers;

>> @@ -34,6 +35,7 @@ extern HARDWARE_INTERRUPT_HANDLER *gRegisteredInterruptHandlers;

>> EFI_STATUS

>> InstallAndRegisterInterruptService (

>>   IN EFI_HARDWARE_INTERRUPT_PROTOCOL   *InterruptProtocol,

>> +  IN EFI_HARDWARE_INTERRUPT2_PROTOCOL  *Interrupt2Protocol,

>>   IN EFI_CPU_INTERRUPT_HANDLER          InterruptHandler,

>>   IN EFI_EVENT_NOTIFY                   ExitBootServicesEvent

>>   );

>> diff --git a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c

>> index be77b8361c5af033fd2889cdb48902af867f321d..ef6746f1ad7afba5bba30fc17774987cf17121b6 100644

>> --- a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c

>> +++ b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c

>> @@ -88,6 +88,7 @@ RegisterInterruptSource (

>> EFI_STATUS

>> InstallAndRegisterInterruptService (

>>   IN EFI_HARDWARE_INTERRUPT_PROTOCOL   *InterruptProtocol,

>> +  IN EFI_HARDWARE_INTERRUPT2_PROTOCOL  *Interrupt2Protocol,

>>   IN EFI_CPU_INTERRUPT_HANDLER          InterruptHandler,

>>   IN EFI_EVENT_NOTIFY                   ExitBootServicesEvent

>>   )

>> @@ -104,6 +105,7 @@ InstallAndRegisterInterruptService (

>>   Status = gBS->InstallMultipleProtocolInterfaces (

>>                   &gHardwareInterruptHandle,

>>                   &gHardwareInterruptProtocolGuid, InterruptProtocol,

>> +                  &gHardwareInterrupt2ProtocolGuid, Interrupt2Protocol,

>>                   NULL

>>                   );

>>   if (EFI_ERROR (Status)) {

>> diff --git a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c

>> index b9ecd5543a3e2e0b00fffbcf5543a60567bb5dde..8c4d66125e2e8c7af9898f336ee742ed0aebf058 100644

>> --- a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c

>> +++ b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c

>> @@ -193,6 +193,41 @@ EFI_HARDWARE_INTERRUPT_PROTOCOL gHardwareInterruptV2Protocol = {

>>   GicV2EndOfInterrupt

>> };

>> 

>> +STATIC

>> +EFI_STATUS

>> +EFIAPI

>> +GicV2GetTriggerType (

>> +  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,

>> +  IN  HARDWARE_INTERRUPT_SOURCE             Source,

>> +  OUT EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  *TriggerType

>> +  )

>> +{

>> +  return EFI_SUCCESS;

>> +}

>> +

>> +STATIC

>> +EFI_STATUS

>> +EFIAPI

>> +GicV2SetTriggerType (

>> +  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,

>> +  IN  HARDWARE_INTERRUPT_SOURCE             Source,

>> +  IN  EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  TriggerType

>> +  )

>> +{

>> +  return EFI_SUCCESS;

>> +}

>> +

>> +STATIC EFI_HARDWARE_INTERRUPT2_PROTOCOL gHardwareInterrupt2V2Protocol = {

> 

> So, this one gets its STATIC revoked in 4/4 - should it just be left

> out from the start?

> 

>> +  (HARDWARE_INTERRUPT2_REGISTER)RegisterInterruptSource,

>> +  (HARDWARE_INTERRUPT2_ENABLE)GicV2EnableInterruptSource,

>> +  (HARDWARE_INTERRUPT2_DISABLE)GicV2DisableInterruptSource,

>> +  (HARDWARE_INTERRUPT2_INTERRUPT_STATE)GicV2GetInterruptSourceState,

>> +  (HARDWARE_INTERRUPT2_END_OF_INTERRUPT)GicV2EndOfInterrupt,

>> +  GicV2GetTriggerType,

>> +  GicV2SetTriggerType

>> +};

>> +

>> +

>> /**

>>   Shutdown our hardware

>> 

>> @@ -311,7 +346,8 @@ GicV2DxeInitialize (

>>   ArmGicEnableDistributor (mGicDistributorBase);

>> 

>>   Status = InstallAndRegisterInterruptService (

>> -          &gHardwareInterruptV2Protocol, GicV2IrqInterruptHandler, GicV2ExitBootServicesEvent);

>> +             &gHardwareInterruptV2Protocol, &gHardwareInterrupt2V2Protocol,

>> +             GicV2IrqInterruptHandler, GicV2ExitBootServicesEvent);

> 

> And arguably, since this is the functional change, you could do the

> cosmetic change (1 per line) which Girish tried in 4/4.

> 

>> 

>>   return Status;

>> }

>> diff --git a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c

>> index 8af97a93b1889b33978a7c7fb2a8417c83139142..02deeef78b6d7737172a5992c6decac43cfdd64a 100644

>> --- a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c

>> +++ b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c

>> @@ -184,6 +184,40 @@ EFI_HARDWARE_INTERRUPT_PROTOCOL gHardwareInterruptV3Protocol = {

>>   GicV3EndOfInterrupt

>> };

>> 

>> +STATIC

>> +EFI_STATUS

>> +EFIAPI

>> +GicV3GetTriggerType (

>> +  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,

>> +  IN  HARDWARE_INTERRUPT_SOURCE             Source,

>> +  OUT EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  *TriggerType

>> +  )

>> +{

>> +  return EFI_SUCCESS;

>> +}

>> +

>> +STATIC

>> +EFI_STATUS

>> +EFIAPI

>> +GicV3SetTriggerType (

>> +  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,

>> +  IN  HARDWARE_INTERRUPT_SOURCE             Source,

>> +  IN  EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  TriggerType

>> +  )

>> +{

>> +  return EFI_SUCCESS;

>> +}

>> +

>> +STATIC EFI_HARDWARE_INTERRUPT2_PROTOCOL gHardwareInterrupt2V3Protocol = {

> 

> Same comment on STATIC. Leave out?

> 

>> +  (HARDWARE_INTERRUPT2_REGISTER)RegisterInterruptSource,

>> +  (HARDWARE_INTERRUPT2_ENABLE)GicV3EnableInterruptSource,

>> +  (HARDWARE_INTERRUPT2_DISABLE)GicV3DisableInterruptSource,

>> +  (HARDWARE_INTERRUPT2_INTERRUPT_STATE)GicV3GetInterruptSourceState,

>> +  (HARDWARE_INTERRUPT2_END_OF_INTERRUPT)GicV3EndOfInterrupt,

>> +  GicV3GetTriggerType,

>> +  GicV3SetTriggerType

>> +};

>> +

>> /**

>>   Shutdown our hardware

>> 

>> @@ -331,7 +365,8 @@ GicV3DxeInitialize (

>>   ArmGicEnableDistributor (mGicDistributorBase);

>> 

>>   Status = InstallAndRegisterInterruptService (

>> -          &gHardwareInterruptV3Protocol, GicV3IrqInterruptHandler, GicV3ExitBootServicesEvent);

>> +             &gHardwareInterruptV3Protocol, &gHardwareInterrupt2V3Protocol,

>> +             GicV3IrqInterruptHandler, GicV3ExitBootServicesEvent);

> 

> And same comment on 1 per line.

> 

>> 

>>   return Status;

>> }

>> -- 

>> Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")

>> 

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Patch hide | download patch | download mbox

diff --git a/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf b/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
index e554301c4b28022c805f69242cf6ee979d19abc2..69390638a9afb6aeccad510e7b572450568c1409 100644
--- a/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
+++ b/ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
@@ -48,6 +48,7 @@  [LibraryClasses]
 
 [Protocols]
   gHardwareInterruptProtocolGuid
+  gHardwareInterrupt2ProtocolGuid
   gEfiCpuArchProtocolGuid
 
 [Pcd.common]
diff --git a/ArmPkg/Drivers/ArmGic/ArmGicDxe.h b/ArmPkg/Drivers/ArmGic/ArmGicDxe.h
index af33aa90b00c6775e10a831d63ed707394862362..2633e1ea194fa67511861a4165d54dad99a6f39b 100644
--- a/ArmPkg/Drivers/ArmGic/ArmGicDxe.h
+++ b/ArmPkg/Drivers/ArmGic/ArmGicDxe.h
@@ -24,6 +24,7 @@  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 
 #include <Protocol/Cpu.h>
 #include <Protocol/HardwareInterrupt.h>
+#include <Protocol/HardwareInterrupt2.h>
 
 extern UINTN                        mGicNumInterrupts;
 extern HARDWARE_INTERRUPT_HANDLER  *gRegisteredInterruptHandlers;
@@ -34,6 +35,7 @@  extern HARDWARE_INTERRUPT_HANDLER  *gRegisteredInterruptHandlers;
 EFI_STATUS
 InstallAndRegisterInterruptService (
   IN EFI_HARDWARE_INTERRUPT_PROTOCOL   *InterruptProtocol,
+  IN EFI_HARDWARE_INTERRUPT2_PROTOCOL  *Interrupt2Protocol,
   IN EFI_CPU_INTERRUPT_HANDLER          InterruptHandler,
   IN EFI_EVENT_NOTIFY                   ExitBootServicesEvent
   );
diff --git a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c
index be77b8361c5af033fd2889cdb48902af867f321d..ef6746f1ad7afba5bba30fc17774987cf17121b6 100644
--- a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c
+++ b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c
@@ -88,6 +88,7 @@  RegisterInterruptSource (
 EFI_STATUS
 InstallAndRegisterInterruptService (
   IN EFI_HARDWARE_INTERRUPT_PROTOCOL   *InterruptProtocol,
+  IN EFI_HARDWARE_INTERRUPT2_PROTOCOL  *Interrupt2Protocol,
   IN EFI_CPU_INTERRUPT_HANDLER          InterruptHandler,
   IN EFI_EVENT_NOTIFY                   ExitBootServicesEvent
   )
@@ -104,6 +105,7 @@  InstallAndRegisterInterruptService (
   Status = gBS->InstallMultipleProtocolInterfaces (
                   &gHardwareInterruptHandle,
                   &gHardwareInterruptProtocolGuid, InterruptProtocol,
+                  &gHardwareInterrupt2ProtocolGuid, Interrupt2Protocol,
                   NULL
                   );
   if (EFI_ERROR (Status)) {
diff --git a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c
index b9ecd5543a3e2e0b00fffbcf5543a60567bb5dde..8c4d66125e2e8c7af9898f336ee742ed0aebf058 100644
--- a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c
+++ b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c
@@ -193,6 +193,41 @@  EFI_HARDWARE_INTERRUPT_PROTOCOL gHardwareInterruptV2Protocol = {
   GicV2EndOfInterrupt
 };
 
+STATIC
+EFI_STATUS
+EFIAPI
+GicV2GetTriggerType (
+  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,
+  IN  HARDWARE_INTERRUPT_SOURCE             Source,
+  OUT EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  *TriggerType
+  )
+{
+  return EFI_SUCCESS;
+}
+
+STATIC
+EFI_STATUS
+EFIAPI
+GicV2SetTriggerType (
+  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,
+  IN  HARDWARE_INTERRUPT_SOURCE             Source,
+  IN  EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  TriggerType
+  )
+{
+  return EFI_SUCCESS;
+}
+
+STATIC EFI_HARDWARE_INTERRUPT2_PROTOCOL gHardwareInterrupt2V2Protocol = {
+  (HARDWARE_INTERRUPT2_REGISTER)RegisterInterruptSource,
+  (HARDWARE_INTERRUPT2_ENABLE)GicV2EnableInterruptSource,
+  (HARDWARE_INTERRUPT2_DISABLE)GicV2DisableInterruptSource,
+  (HARDWARE_INTERRUPT2_INTERRUPT_STATE)GicV2GetInterruptSourceState,
+  (HARDWARE_INTERRUPT2_END_OF_INTERRUPT)GicV2EndOfInterrupt,
+  GicV2GetTriggerType,
+  GicV2SetTriggerType
+};
+
+
 /**
   Shutdown our hardware
 
@@ -311,7 +346,8 @@  GicV2DxeInitialize (
   ArmGicEnableDistributor (mGicDistributorBase);
 
   Status = InstallAndRegisterInterruptService (
-          &gHardwareInterruptV2Protocol, GicV2IrqInterruptHandler, GicV2ExitBootServicesEvent);
+             &gHardwareInterruptV2Protocol, &gHardwareInterrupt2V2Protocol,
+             GicV2IrqInterruptHandler, GicV2ExitBootServicesEvent);
 
   return Status;
 }
diff --git a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c
index 8af97a93b1889b33978a7c7fb2a8417c83139142..02deeef78b6d7737172a5992c6decac43cfdd64a 100644
--- a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c
+++ b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c
@@ -184,6 +184,40 @@  EFI_HARDWARE_INTERRUPT_PROTOCOL gHardwareInterruptV3Protocol = {
   GicV3EndOfInterrupt
 };
 
+STATIC
+EFI_STATUS
+EFIAPI
+GicV3GetTriggerType (
+  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,
+  IN  HARDWARE_INTERRUPT_SOURCE             Source,
+  OUT EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  *TriggerType
+  )
+{
+  return EFI_SUCCESS;
+}
+
+STATIC
+EFI_STATUS
+EFIAPI
+GicV3SetTriggerType (
+  IN  EFI_HARDWARE_INTERRUPT2_PROTOCOL      *This,
+  IN  HARDWARE_INTERRUPT_SOURCE             Source,
+  IN  EFI_HARDWARE_INTERRUPT2_TRIGGER_TYPE  TriggerType
+  )
+{
+  return EFI_SUCCESS;
+}
+
+STATIC EFI_HARDWARE_INTERRUPT2_PROTOCOL gHardwareInterrupt2V3Protocol = {
+  (HARDWARE_INTERRUPT2_REGISTER)RegisterInterruptSource,
+  (HARDWARE_INTERRUPT2_ENABLE)GicV3EnableInterruptSource,
+  (HARDWARE_INTERRUPT2_DISABLE)GicV3DisableInterruptSource,
+  (HARDWARE_INTERRUPT2_INTERRUPT_STATE)GicV3GetInterruptSourceState,
+  (HARDWARE_INTERRUPT2_END_OF_INTERRUPT)GicV3EndOfInterrupt,
+  GicV3GetTriggerType,
+  GicV3SetTriggerType
+};
+
 /**
   Shutdown our hardware
 
@@ -331,7 +365,8 @@  GicV3DxeInitialize (
   ArmGicEnableDistributor (mGicDistributorBase);
 
   Status = InstallAndRegisterInterruptService (
-          &gHardwareInterruptV3Protocol, GicV3IrqInterruptHandler, GicV3ExitBootServicesEvent);
+             &gHardwareInterruptV3Protocol, &gHardwareInterrupt2V3Protocol,
+             GicV3IrqInterruptHandler, GicV3ExitBootServicesEvent);
 
   return Status;
 }