public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Marcin Wojtas <mw@semihalf.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	"Leif Lindholm" <leif.lindholm@linaro.org>,
	"Nadav Haklai" <nadavh@marvell.com>,
	"Hanna Hawa" <hannah@marvell.com>,
	"Jan Dąbroś" <jsd@semihalf.com>,
	"Grzegorz Jaszczyk" <jaz@semihalf.com>
Subject: Re: [platforms: PATCH 4/6] Marvell/Library: Armada7k8kSoCDescLib: Introduce ICU information
Date: Fri, 13 Jul 2018 08:48:54 +0200	[thread overview]
Message-ID: <CAKv+Gu80AX9rEdfHSjhShD91BRkcM2u0bF17oV-f0EQjxKoNMQ@mail.gmail.com> (raw)
In-Reply-To: <1531381201-5022-5-git-send-email-mw@semihalf.com>

On 12 July 2018 at 09:39, Marcin Wojtas <mw@semihalf.com> wrote:
> This patch introduces new library callback (ArmadaSoCDescIcuGet ()),
> which dynamically allocates and fills MV_SOC_ICU_DESC structure with
> the SoC description of ICU (Interrupt Consolidation Unit).
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Marcin Wojtas <mw@semihalf.com>
> ---
>  Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h | 12 ++++++
>  Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h                             | 30 +++++++++++++++
>  Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c | 39 ++++++++++++++++++++
>  3 files changed, 81 insertions(+)
>
> diff --git a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h
> index 3072883..c14b985 100644
> --- a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h
> +++ b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h
> @@ -44,6 +44,18 @@
>  #define MV_SOC_I2C_BASE(I2c)             (0x701000 + ((I2c) * 0x100))
>
>  //
> +// Platform description of ICU (Interrupt Consolidation Unit) controllers
> +//
> +#define ICU_GIC_MAPPING_OFFSET           0
> +#define ICU_NSR_SET_SPI_BASE             0xf03f0040
> +#define ICU_NSR_CLEAR_SPI_BASE           0xf03f0048
> +#define ICU_SEI_SET_SPI_BASE             0xf03f0230
> +#define ICU_SEI_CLEAR_SPI_BASE           0xf03f0230
> +#define ICU_REI_SET_SPI_BASE             0xf03f0270
> +#define ICU_REI_CLEAR_SPI_BASE           0xf03f0270
> +#define ICU_GROUP_UNSUPPORTED            0x0
> +
> +//
>  // Platform description of MDIO controllers
>  //
>  #define MV_SOC_MDIO_BASE(Cp)             (MV_SOC_CP_BASE (Cp) + 0x12A200)
> diff --git a/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h b/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h
> index 56efdbe..4d2a85f 100644
> --- a/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h
> +++ b/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h
> @@ -58,6 +58,36 @@ ArmadaSoCDescI2cGet (
>    );
>
>  //
> +// ICU (Interrupt Consolidation Unit)
> +//
> +typedef enum {
> +  ICU_GROUP_NSR  = 0,
> +  ICU_GROUP_SR   = 1,
> +  ICU_GROUP_LPI  = 2,
> +  ICU_GROUP_VLPI = 3,
> +  ICU_GROUP_SEI  = 4,
> +  ICU_GROUP_REI  = 5,

Are these identifiers defined externally anywhere? If not, it is
better to use IcuGroupXxx, which is more idiomatic in UEFI/EDK2.

> +  ICU_GROUP_MAX,
> +} ICU_GROUP;
> +
> +typedef struct {
> +  ICU_GROUP Group;
> +  UINTN     SetSpiAddr;
> +  UINTN     ClrSpiAddr;
> +} ICU_MSI;
> +
> +typedef struct {
> +  UINTN    IcuSpiBase;
> +  ICU_MSI  IcuMsi[ICU_GROUP_MAX];
> +} MV_SOC_ICU_DESC;
> +
> +EFI_STATUS
> +EFIAPI
> +ArmadaSoCDescIcuGet (
> +  IN OUT MV_SOC_ICU_DESC  **IcuDesc
> +  );
> +
> +//
>  // MDIO
>  //
>  typedef struct {
> diff --git a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c
> index c7c9c13..8383206 100644
> --- a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c
> +++ b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c
> @@ -103,6 +103,45 @@ ArmadaSoCDescI2cGet (
>    return EFI_SUCCESS;
>  }
>
> +//
> +// Allocate the MSI address per interrupt Group,
> +// unsupported Groups get NULL address.
> +//
> +STATIC
> +MV_SOC_ICU_DESC mA7k8kIcuDescTemplate = {
> +  ICU_GIC_MAPPING_OFFSET,
> +  {
> +    /* Non secure interrupts */
> +    {ICU_GROUP_NSR,  ICU_NSR_SET_SPI_BASE,  ICU_NSR_CLEAR_SPI_BASE},

Please put a space after { and before }

> +    /* Secure interrupts */
> +    {ICU_GROUP_SR,   ICU_GROUP_UNSUPPORTED, ICU_GROUP_UNSUPPORTED},
> +    /* LPI interrupts */
> +    {ICU_GROUP_LPI,  ICU_GROUP_UNSUPPORTED, ICU_GROUP_UNSUPPORTED},
> +    /* Virtual LPI interrupts */
> +    {ICU_GROUP_VLPI, ICU_GROUP_UNSUPPORTED, ICU_GROUP_UNSUPPORTED},
> +    /* System error interrupts */
> +    {ICU_GROUP_SEI,  ICU_SEI_SET_SPI_BASE,  ICU_SEI_CLEAR_SPI_BASE},
> +    /* RAM error interrupts */
> +    {ICU_GROUP_REI,  ICU_REI_SET_SPI_BASE,  ICU_REI_CLEAR_SPI_BASE},
> +  }
> +};
> +
> +EFI_STATUS
> +EFIAPI
> +ArmadaSoCDescIcuGet (
> +  IN OUT MV_SOC_ICU_DESC  **IcuDesc
> +  )
> +{
> +  *IcuDesc = AllocateCopyPool (sizeof (mA7k8kIcuDescTemplate),
> +               &mA7k8kIcuDescTemplate);
> +  if (*IcuDesc == NULL) {
> +    DEBUG ((DEBUG_ERROR, "%a: Cannot allocate memory\n", __FUNCTION__));
> +    return EFI_OUT_OF_RESOURCES;
> +  }
> +
> +  return EFI_SUCCESS;
> +}
> +
>  EFI_STATUS
>  EFIAPI
>  ArmadaSoCDescMdioGet (
> --
> 2.7.4
>


  reply	other threads:[~2018-07-13  6:48 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-12  7:39 [platforms: PATCH 0/6] Armada7k8k ICU support Marcin Wojtas
2018-07-12  7:39 ` [platforms: PATCH 1/6] Marvell/Armada70x0Db: Set correct CP110 count Marcin Wojtas
2018-07-12  7:58   ` Ard Biesheuvel
2018-07-12  7:39 ` [platforms: PATCH 2/6] Marvell/Library: Introduce ArmadaIcuLib class Marcin Wojtas
2018-07-12 14:35   ` Ard Biesheuvel
2018-07-12  7:39 ` [platforms: PATCH 3/6] Marvell/Library: Armada7k8kSoCDescLib: Enable getting CP base address Marcin Wojtas
2018-07-12 14:37   ` Ard Biesheuvel
2018-07-12  7:39 ` [platforms: PATCH 4/6] Marvell/Library: Armada7k8kSoCDescLib: Introduce ICU information Marcin Wojtas
2018-07-13  6:48   ` Ard Biesheuvel [this message]
2018-07-12  7:40 ` [platforms: PATCH 5/6] Marvell/Library: Implement common ArmadaIcuLib Marcin Wojtas
2018-07-12  7:57   ` Ard Biesheuvel
2018-07-12  8:42     ` Marcin Wojtas
2018-07-12 10:35   ` Leif Lindholm
2018-07-12 10:59     ` Marcin Wojtas
2018-07-12 11:12       ` Leif Lindholm
2018-07-12  7:40 ` [platforms: PATCH 6/6] Marvell/Armada7k8k: Enable ICU configuration Marcin Wojtas
2018-07-13  6:49   ` Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAKv+Gu80AX9rEdfHSjhShD91BRkcM2u0bF17oV-f0EQjxKoNMQ@mail.gmail.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox