+++ /dev/null
-/** @file\r
-\r
- Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
-\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include <Uefi.h>\r
-\r
-#include <Library/IoLib.h>\r
-#include <Library/OmapLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-\r
-#include <Protocol/EmbeddedGpio.h>\r
-\r
-#include <Omap3530/Omap3530.h>\r
-\r
-EFI_STATUS\r
-Get (\r
- IN EMBEDDED_GPIO *This,\r
- IN EMBEDDED_GPIO_PIN Gpio,\r
- OUT UINTN *Value\r
- )\r
-{\r
- UINTN Port;\r
- UINTN Pin;\r
- UINT32 DataInRegister;\r
-\r
- if (Value == NULL)\r
- {\r
- return EFI_UNSUPPORTED;\r
- }\r
-\r
- Port = GPIO_PORT(Gpio);\r
- Pin = GPIO_PIN(Gpio);\r
-\r
- DataInRegister = GpioBase(Port) + GPIO_DATAIN;\r
-\r
- if (MmioRead32 (DataInRegister) & GPIO_DATAIN_MASK(Pin)) {\r
- *Value = 1;\r
- } else {\r
- *Value = 0;\r
- }\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
-Set (\r
- IN EMBEDDED_GPIO *This,\r
- IN EMBEDDED_GPIO_PIN Gpio,\r
- IN EMBEDDED_GPIO_MODE Mode\r
- )\r
-{\r
- UINTN Port;\r
- UINTN Pin;\r
- UINT32 OutputEnableRegister;\r
- UINT32 SetDataOutRegister;\r
- UINT32 ClearDataOutRegister;\r
-\r
- Port = GPIO_PORT(Gpio);\r
- Pin = GPIO_PIN(Gpio);\r
-\r
- OutputEnableRegister = GpioBase(Port) + GPIO_OE;\r
- SetDataOutRegister = GpioBase(Port) + GPIO_SETDATAOUT;\r
- ClearDataOutRegister = GpioBase(Port) + GPIO_CLEARDATAOUT;\r
-\r
- switch (Mode)\r
- {\r
- case GPIO_MODE_INPUT:\r
- MmioAndThenOr32(OutputEnableRegister, ~GPIO_OE_MASK(Pin), GPIO_OE_INPUT(Pin));\r
- break;\r
-\r
- case GPIO_MODE_OUTPUT_0:\r
- MmioWrite32 (ClearDataOutRegister, GPIO_CLEARDATAOUT_BIT(Pin));\r
- MmioAndThenOr32(OutputEnableRegister, ~GPIO_OE_MASK(Pin), GPIO_OE_OUTPUT(Pin));\r
- break;\r
-\r
- case GPIO_MODE_OUTPUT_1:\r
- MmioWrite32 (SetDataOutRegister, GPIO_SETDATAOUT_BIT(Pin));\r
- MmioAndThenOr32(OutputEnableRegister, ~GPIO_OE_MASK(Pin), GPIO_OE_OUTPUT(Pin));\r
- break;\r
-\r
- default:\r
- return EFI_UNSUPPORTED;\r
- }\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
-GetMode (\r
- IN EMBEDDED_GPIO *This,\r
- IN EMBEDDED_GPIO_PIN Gpio,\r
- OUT EMBEDDED_GPIO_MODE *Mode\r
- )\r
-{\r
- return EFI_UNSUPPORTED;\r
-}\r
-\r
-EFI_STATUS\r
-SetPull (\r
- IN EMBEDDED_GPIO *This,\r
- IN EMBEDDED_GPIO_PIN Gpio,\r
- IN EMBEDDED_GPIO_PULL Direction\r
- )\r
-{\r
- return EFI_UNSUPPORTED;\r
-}\r
-\r
-EMBEDDED_GPIO Gpio = {\r
- Get,\r
- Set,\r
- GetMode,\r
- SetPull\r
-};\r
-\r
-EFI_STATUS\r
-GpioInitialize (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-{\r
- EFI_STATUS Status;\r
-\r
- Status = gBS->InstallMultipleProtocolInterfaces(&ImageHandle, &gEmbeddedGpioProtocolGuid, &Gpio, NULL);\r
- return Status;\r
-}\r