Update GpioLib slightly so that we can change the GPIO pin muxing at runtime. For the moment only the GpioPinFuncGet/Set() routines are used at runtime, and only by the Variable service.
Signed-off-by: Jeremy Linton <jeremy.lin...@arm.com> --- .../Broadcom/Bcm283x/Include/Library/GpioLib.h | 6 ++++++ .../Broadcom/Bcm283x/Library/GpioLib/GpioLib.c | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Silicon/Broadcom/Bcm283x/Include/Library/GpioLib.h b/Silicon/Broadcom/Bcm283x/Include/Library/GpioLib.h index 1f7d2204e0..79765be4fb 100644 --- a/Silicon/Broadcom/Bcm283x/Include/Library/GpioLib.h +++ b/Silicon/Broadcom/Bcm283x/Include/Library/GpioLib.h @@ -45,4 +45,10 @@ GpioSetPull ( IN UINTN Pud ); +VOID +GpioSetupRuntime ( + VOID +); + + #endif /* __GPIO_LIB__ */ diff --git a/Silicon/Broadcom/Bcm283x/Library/GpioLib/GpioLib.c b/Silicon/Broadcom/Bcm283x/Library/GpioLib/GpioLib.c index eaf53e5369..fc1f928e6b 100644 --- a/Silicon/Broadcom/Bcm283x/Library/GpioLib/GpioLib.c +++ b/Silicon/Broadcom/Bcm283x/Library/GpioLib/GpioLib.c @@ -15,10 +15,22 @@ #include <Library/DebugLib.h> #include <Library/IoLib.h> #include <Library/GpioLib.h> +#include <Library/UefiRuntimeLib.h> #include <Library/TimerLib.h> #include <IndustryStandard/Bcm2836.h> #include <IndustryStandard/Bcm2836Gpio.h> + +STATIC EFI_PHYSICAL_ADDRESS GpioGfpSel0 = GPIO_GPFSEL0; + +VOID +GpioSetupRuntime ( + VOID + ) +{ + EfiConvertPointer (0x0, (VOID**)&GpioGfpSel0); +} + STATIC VOID GpioFSELModify ( @@ -30,7 +42,7 @@ GpioFSELModify ( UINT32 Val; EFI_PHYSICAL_ADDRESS Reg; - Reg = RegIndex * sizeof (UINT32) + GPIO_GPFSEL0; + Reg = RegIndex * sizeof (UINT32) + GpioGfpSel0; ASSERT (Reg <= GPIO_GPFSEL5); ASSERT ((~ModifyMask & FunctionMask) == 0); @@ -77,7 +89,7 @@ GpioPinFuncGet ( RegIndex = Pin / 10; SelIndex = Pin % 10; - Reg = RegIndex * sizeof (UINT32) + GPIO_GPFSEL0; + Reg = RegIndex * sizeof (UINT32) + GpioGfpSel0; Val = MmioRead32 (Reg); Val >>= SelIndex * GPIO_FSEL_BITS_PER_PIN; -- 2.43.0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113555): https://edk2.groups.io/g/devel/message/113555 Mute This Topic: https://groups.io/mt/103653092/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-