On Sat, Oct 20, 2018 at 03:57:30AM +0200, Marcin Wojtas wrote: > This patch introduces new library callback (ArmadaSoCDescGpioGet ()), > which dynamically allocates and fills MV_SOC_GPIO_DESC structure with > the SoC description of GPIO controllers. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Marcin Wojtas <m...@semihalf.com> > --- > > Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h > | 10 +++++ > Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h > | 15 ++++++++ > > Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c > | 39 ++++++++++++++++++++ > 3 files changed, 64 insertions(+) > > diff --git > a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h > > b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h > index c14b985..85dd67c 100644 > --- > a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h > +++ > b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.h > @@ -22,6 +22,7 @@ > // Common macros > // > #define MV_SOC_CP_BASE(Cp) (0xF2000000 + ((Cp) * 0x2000000)) > +#define MV_SOC_AP_COUNT 1
I think all of my comments on this patch can be summarised as "what is an AP in this context"? The term either needs explicit documenting, or expansion in the macro names such that documentation is not required. / Leif > > // > // Platform description of AHCI controllers > @@ -38,6 +39,15 @@ > #define MV_SOC_COMPHY_MUX_BITS 4 > > // > +// Platform description of GPIO controllers > +// > +#define MV_SOC_AP_GPIO_BASE 0xF06F5040 > +#define MV_SOC_AP_GPIO_PIN_COUNT 20 > +#define MV_SOC_GPIO_PER_CP_COUNT 2 > +#define MV_SOC_CP_GPIO_BASE(Gpio) (0x440100 + ((Gpio) * 0x40)) > +#define MV_SOC_CP_GPIO_PIN_COUNT(Gpio) ((Gpio) == 0 ? 32 : 31) > + > +// > // Platform description of I2C controllers > // > #define MV_SOC_I2C_PER_CP_COUNT 2 > diff --git a/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h > b/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h > index cdfb51b..f3d4f80 100644 > --- a/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h > +++ b/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h > @@ -46,6 +46,21 @@ ArmadaSoCDescCpBaseGet ( > ); > > // > +// GPIO devices description template definition > +// > +typedef struct { > + UINTN GpioBaseAddress; > + UINTN GpioPinCount; > +} MV_SOC_GPIO_DESC; > + > +EFI_STATUS > +EFIAPI > +ArmadaSoCDescGpioGet ( > + IN OUT MV_SOC_GPIO_DESC **GpioDesc, > + IN OUT UINTN *DescCount > + ); > + > +// > // I2C > // > typedef struct { > diff --git > a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c > > b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c > index 6902fda..7db4ec7 100644 > --- > a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c > +++ > b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescLib.c > @@ -74,6 +74,45 @@ ArmadaSoCDescCpBaseGet ( > > EFI_STATUS > EFIAPI > +ArmadaSoCDescGpioGet ( > + IN OUT MV_SOC_GPIO_DESC **GpioDesc, > + IN OUT UINTN *DescCount > + ) > +{ > + MV_SOC_GPIO_DESC *Desc; > + UINTN CpCount, CpIndex, Index; > + > + CpCount = FixedPcdGet8 (PcdMaxCpCount); > + > + *DescCount = CpCount * MV_SOC_GPIO_PER_CP_COUNT + MV_SOC_AP_COUNT; > + Desc = AllocateZeroPool (*DescCount * sizeof (MV_SOC_GPIO_DESC)); > + if (Desc == NULL) { > + DEBUG ((DEBUG_ERROR, "%a: Cannot allocate memory\n", __FUNCTION__)); > + return EFI_OUT_OF_RESOURCES; > + } > + > + *GpioDesc = Desc; > + > + /* AP GPIO controller */ > + Desc->GpioBaseAddress = MV_SOC_AP_GPIO_BASE; > + Desc->GpioPinCount = MV_SOC_AP_GPIO_PIN_COUNT; > + Desc++; > + > + /* CP GPIO controllers */ > + for (CpIndex = 0; CpIndex < CpCount; CpIndex++) { > + for (Index = 0; Index < MV_SOC_GPIO_PER_CP_COUNT; Index++) { > + Desc->GpioBaseAddress = MV_SOC_CP_BASE (CpIndex) + > + MV_SOC_CP_GPIO_BASE (Index); > + Desc->GpioPinCount = MV_SOC_CP_GPIO_PIN_COUNT (Index); > + Desc++; > + } > + } > + > + return EFI_SUCCESS; > +} > + > +EFI_STATUS > +EFIAPI > ArmadaSoCDescI2cGet ( > IN OUT MV_SOC_I2C_DESC **I2cDesc, > IN OUT UINTN *DescCount > -- > 2.7.4 > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel