+++ /dev/null
-/** @file\r
-\r
- Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
- Copyright (c) 2016, Linaro, Ltd. All rights reserved.<BR>\r
-\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include <PiDxe.h>\r
-\r
-#include <Library/BaseLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/IoLib.h>\r
-#include <Library/NonDiscoverableDeviceRegistrationLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-\r
-#include <Protocol/EmbeddedExternalDevice.h>\r
-\r
-#include <TPS65950.h>\r
-#include <Omap3530/Omap3530.h>\r
-\r
-EMBEDDED_EXTERNAL_DEVICE *gTPS65950;\r
-\r
-#define HOST_CONTROLLER_OPERATION_REG_SIZE 0x44\r
-\r
-STATIC\r
-EFI_STATUS\r
-ConfigureUSBHost (\r
- NON_DISCOVERABLE_DEVICE *Device\r
- )\r
-{\r
- EFI_STATUS Status;\r
- UINT8 Data = 0;\r
-\r
- // Take USB host out of force-standby mode\r
- MmioWrite32 (UHH_SYSCONFIG, UHH_SYSCONFIG_MIDLEMODE_NO_STANDBY\r
- | UHH_SYSCONFIG_CLOCKACTIVITY_ON\r
- | UHH_SYSCONFIG_SIDLEMODE_NO_STANDBY\r
- | UHH_SYSCONFIG_ENAWAKEUP_ENABLE\r
- | UHH_SYSCONFIG_AUTOIDLE_ALWAYS_RUN);\r
- MmioWrite32 (UHH_HOSTCONFIG, UHH_HOSTCONFIG_P3_CONNECT_STATUS_DISCONNECT\r
- | UHH_HOSTCONFIG_P2_CONNECT_STATUS_DISCONNECT\r
- | UHH_HOSTCONFIG_P1_CONNECT_STATUS_DISCONNECT\r
- | UHH_HOSTCONFIG_ENA_INCR_ALIGN_DISABLE\r
- | UHH_HOSTCONFIG_ENA_INCR16_ENABLE\r
- | UHH_HOSTCONFIG_ENA_INCR8_ENABLE\r
- | UHH_HOSTCONFIG_ENA_INCR4_ENABLE\r
- | UHH_HOSTCONFIG_AUTOPPD_ON_OVERCUR_EN_ON\r
- | UHH_HOSTCONFIG_P1_ULPI_BYPASS_ULPI_MODE);\r
-\r
- // USB reset (GPIO 147 - Port 5 pin 19) output high\r
- MmioAnd32 (GPIO5_BASE + GPIO_OE, ~BIT19);\r
- MmioWrite32 (GPIO5_BASE + GPIO_SETDATAOUT, BIT19);\r
-\r
- // Get the Power IC protocol\r
- Status = gBS->LocateProtocol (&gEmbeddedExternalDeviceProtocolGuid, NULL, (VOID **)&gTPS65950);\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- // Power the USB PHY\r
- Data = VAUX_DEV_GRP_P1;\r
- Status = gTPS65950->Write (gTPS65950, EXTERNAL_DEVICE_REGISTER(I2C_ADDR_GRP_ID4, VAUX2_DEV_GRP), 1, &Data);\r
- ASSERT_EFI_ERROR(Status);\r
-\r
- Data = VAUX_DEDICATED_18V;\r
- Status = gTPS65950->Write (gTPS65950, EXTERNAL_DEVICE_REGISTER(I2C_ADDR_GRP_ID4, VAUX2_DEDICATED), 1, &Data);\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- // Enable power to the USB hub\r
- Status = gTPS65950->Read (gTPS65950, EXTERNAL_DEVICE_REGISTER(I2C_ADDR_GRP_ID3, LEDEN), 1, &Data);\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- // LEDAON controls the power to the USB host, PWM is disabled\r
- Data &= ~LEDAPWM;\r
- Data |= LEDAON;\r
-\r
- Status = gTPS65950->Write (gTPS65950, EXTERNAL_DEVICE_REGISTER(I2C_ADDR_GRP_ID3, LEDEN), 1, &Data);\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciEmulationEntryPoint (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-{\r
- UINT8 CapabilityLength;\r
- UINT8 PhysicalPorts;\r
- UINTN MemorySize;\r
-\r
- CapabilityLength = MmioRead8 (USB_EHCI_HCCAPBASE);\r
- PhysicalPorts = MmioRead32 (USB_EHCI_HCCAPBASE + 0x4) & 0x0000000F;\r
- MemorySize = CapabilityLength + HOST_CONTROLLER_OPERATION_REG_SIZE +\r
- 4 * PhysicalPorts - 1;\r
-\r
- return RegisterNonDiscoverableMmioDevice (\r
- NonDiscoverableDeviceTypeEhci,\r
- NonDiscoverableDeviceDmaTypeNonCoherent,\r
- ConfigureUSBHost,\r
- NULL,\r
- 1,\r
- USB_EHCI_HCCAPBASE, MemorySize\r
- );\r
-}\r