On Sun, Jun 17, 2018 at 10:11:48PM +0200, Marcin Wojtas wrote:
> This patch introduces new library callback (ArmadaSoCDescPp2Get ()),
> which dynamically allocates and fills MV_SOC_PP2_DESC structure with
> the SoC description of PP2 NICs.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Marcin Wojtas <m...@semihalf.com>

Reviewed-by: Leif Lindholm <leif.lindh...@linaro.org>

> ---
>  
> Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h
>  |  6 ++++
>  Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h                           
>   | 15 ++++++++++
>  
> Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c
>  | 29 ++++++++++++++++++++
>  3 files changed, 50 insertions(+)
> 
> diff --git 
> a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h
>  
> b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h
> index c5711b0..d63c3b5 100644
> --- 
> a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h
> +++ 
> b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h
> @@ -24,6 +24,12 @@
>  #define MV_SOC_CP_BASE(Cp)               (0xF2000000 + ((Cp) * 0x2000000))
>  
>  //
> +// Platform description of PP2 NIC
> +//
> +#define MV_SOC_PP2_BASE(Cp)              MV_SOC_CP_BASE ((Cp))
> +#define MV_SOC_PP2_CLK_FREQ              333333333
> +
> +//
>  // Platform description of UTMI PHY's
>  //
>  #define MV_SOC_UTMI_PER_CP_COUNT         2
> diff --git a/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h 
> b/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h
> index 0d45684..cafcc0f 100644
> --- a/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h
> +++ b/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h
> @@ -15,6 +15,21 @@
>  #define __ARMADA_SOC_DESC_LIB_H__
>  
>  //
> +// PP2 NIC devices SoC description
> +//
> +typedef struct {
> +  UINTN Pp2BaseAddress;
> +  UINTN Pp2ClockFrequency;
> +} MV_SOC_PP2_DESC;
> +
> +EFI_STATUS
> +EFIAPI
> +ArmadaSoCDescPp2Get (
> +  IN OUT MV_SOC_PP2_DESC  **Pp2Desc,
> +  IN OUT UINTN             *DescCount
> +  );
> +
> +//
>  // UTMI PHY devices SoC description
>  //
>  typedef struct {
> diff --git 
> a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c
>  
> b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c
> index 63fb224..61b4e30 100644
> --- 
> a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c
> +++ 
> b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c
> @@ -30,6 +30,35 @@
>  
>  EFI_STATUS
>  EFIAPI
> +ArmadaSoCDescPp2Get (
> +  IN OUT MV_SOC_PP2_DESC  **Pp2Desc,
> +  IN OUT UINTN             *DescCount
> +  )
> +{
> +  MV_SOC_PP2_DESC *Desc;
> +  UINTN CpCount, CpIndex;
> +
> +  CpCount = FixedPcdGet8 (PcdMaxCpCount);
> +
> +  Desc = AllocateZeroPool (CpCount * sizeof (MV_SOC_PP2_DESC));
> +  if (Desc == NULL) {
> +    DEBUG ((DEBUG_ERROR, "%a: Cannot allocate memory\n", __FUNCTION__));
> +    return EFI_OUT_OF_RESOURCES;
> +  }
> +
> +  for (CpIndex = 0; CpIndex < CpCount; CpIndex++) {
> +    Desc[CpIndex].Pp2BaseAddress = MV_SOC_PP2_BASE (CpIndex);
> +    Desc[CpIndex].Pp2ClockFrequency = MV_SOC_PP2_CLK_FREQ;
> +  }
> +
> +  *Pp2Desc = Desc;
> +  *DescCount = CpCount;
> +
> +  return EFI_SUCCESS;
> +}
> +
> +EFI_STATUS
> +EFIAPI
>  ArmadaSoCDescUtmiGet (
>    IN OUT MV_SOC_UTMI_DESC  **UtmiDesc,
>    IN OUT UINTN              *DescCount
> -- 
> 2.7.4
> 
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to