summaryrefslogtreecommitdiff
path: root/EmbeddedPkg/TemplateBds
diff options
context:
space:
mode:
authorandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-01-30 20:36:25 +0000
committerandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-01-30 20:36:25 +0000
commit76a689b57344bb915be03e2b27dc432eec7c03b5 (patch)
treef5e03700722ee1ed8be417c6160f619a68efe5a2 /EmbeddedPkg/TemplateBds
parente70c3793273a1d5bb8d22aa834596f44e1ca2779 (diff)
downloadedk2-platforms-76a689b57344bb915be03e2b27dc432eec7c03b5.tar.xz
Remove Template stuff and teach people with BeagleBoard
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9876 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EmbeddedPkg/TemplateBds')
-rw-r--r--EmbeddedPkg/TemplateBds/BdsEntry.c183
-rw-r--r--EmbeddedPkg/TemplateBds/BdsEntry.h62
-rw-r--r--EmbeddedPkg/TemplateBds/FirmwareVolume.c160
-rw-r--r--EmbeddedPkg/TemplateBds/TemplateBds.inf67
4 files changed, 0 insertions, 472 deletions
diff --git a/EmbeddedPkg/TemplateBds/BdsEntry.c b/EmbeddedPkg/TemplateBds/BdsEntry.c
deleted file mode 100644
index dcdf499d20..0000000000
--- a/EmbeddedPkg/TemplateBds/BdsEntry.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/** @file
- The entry of the embedded BDS. This BDS does not follow the Boot Manager requirements
- of the UEFI specification as it is designed to implement an embedded systmes
- propriatary boot scheme.
-
- This template assume a DXE driver produces a SerialIo protocol not using the EFI
- driver module and it will attempt to connect a console on top of this.
-
- Copyright (c) 2008-2009, Apple Inc. All rights reserved.
-
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "BdsEntry.h"
-
-
-BOOLEAN gConsolePresent = FALSE;
-
-
-EFI_HANDLE mBdsImageHandle = NULL;
-EFI_BDS_ARCH_PROTOCOL gBdsProtocol = {
- BdsEntry,
-};
-
-
-
-
-/**
- This function uses policy data from the platform to determine what operating
- system or system utility should be loaded and invoked. This function call
- also optionally make the use of user input to determine the operating system
- or system utility to be loaded and invoked. When the DXE Core has dispatched
- all the drivers on the dispatch queue, this function is called. This
- function will attempt to connect the boot devices required to load and invoke
- the selected operating system or system utility. During this process,
- additional firmware volumes may be discovered that may contain addition DXE
- drivers that can be dispatched by the DXE Core. If a boot device cannot be
- fully connected, this function calls the DXE Service Dispatch() to allow the
- DXE drivers from any newly discovered firmware volumes to be dispatched.
- Then the boot device connection can be attempted again. If the same boot
- device connection operation fails twice in a row, then that boot device has
- failed, and should be skipped. This function should never return.
-
- @param This The EFI_BDS_ARCH_PROTOCOL instance.
-
- @return None.
-
-**/
-VOID
-EFIAPI
-BdsEntry (
- IN EFI_BDS_ARCH_PROTOCOL *This
- )
-{
- EFI_STATUS Status;
- UINTN NoHandles;
- EFI_HANDLE *Buffer;
- UINTN Index;
- EFI_HANDLE FvHandle;
- EFI_GUID *NameGuid;
-
- //
- // This code assumes that a DXE driver produces a SerialIo protocol not following the EFI
- // driver model. At a minimum we need to connect an EFI driver model terminal driver on top
- // of the serial driver.
- //
- Status = gBS->LocateHandleBuffer (ByProtocol, &gEfiSerialIoProtocolGuid, NULL, &NoHandles, &Buffer);
- if (!EFI_ERROR (Status)) {
- for (Index = 0; Index < NoHandles; Index++) {
- // For every Serial IO protocol in the system connect EFI drivers to it.
- // This should cause the terminal driver to bind to the Serial IO protocol and produce a
- // child handle that produces SimpleTextOut & SImpleTextIn protocols
- gBS->ConnectController (Buffer[Index], NULL, NULL, TRUE);
- }
-
- FreePool (Buffer);
- }
-
- //
- // Now we need to setup the EFI System Table with information about the console devices.
- // This code is normally in the console spliter driver on platforms that support multiple
- // consoles at the same time
- //
- Status = gBS->LocateHandleBuffer (ByProtocol, &gEfiSimpleTextOutProtocolGuid, NULL, &NoHandles, &Buffer);
- if (!EFI_ERROR (Status)) {
- // Use the first SimpleTextOut we find and update the EFI System Table
- gST->ConsoleOutHandle = Buffer[0];
- gST->StandardErrorHandle = Buffer[0];
- Status = gBS->HandleProtocol (Buffer[0], &gEfiSimpleTextOutProtocolGuid, (VOID **)&gST->ConOut);
- ASSERT_EFI_ERROR (Status);
-
- gST->StdErr = gST->ConOut;
-
- FreePool (Buffer);
-
- gConsolePresent = TRUE;
- }
-
- Status = gBS->LocateHandleBuffer (ByProtocol, &gEfiSimpleTextInProtocolGuid, NULL, &NoHandles, &Buffer);
- if (!EFI_ERROR (Status)) {
- // Use the first SimpleTextIn we find and update the EFI System Table
- gST->ConsoleInHandle = Buffer[0];
- Status = gBS->HandleProtocol (Buffer[0], &gEfiSimpleTextInProtocolGuid, (VOID **)&gST->ConIn);
- ASSERT_EFI_ERROR (Status);
-
- FreePool (Buffer);
- }
-
- //
- // We now have EFI Consoles up and running. Print () will work now. DEBUG () and ASSERT () worked
- // prior to this point as they were configured to use a more primative output scheme.
- //
-
-
- //
- // Platform specific stuff goes here
- //
-
-
- //
- // Normal UEFI behavior is to process Globally Defined Variables as defined in Chapter 3
- // (Boot Manager) of the UEFI specification. For this embedded system we don't do this.
- //
-
- //
- // Search all the FVs for an application with a UI Section of Ebl. A .FDF file can be used
- // to control the names of UI sections in an FV.
- //
- Status = FindApplicationMatchingUiSection (L"Ebl", &FvHandle, &NameGuid);
- if (EFI_ERROR (Status)) {
- //
- // Just load the first application we find reguardless of name.
- // This is the fallback path.
- //
- Status = FindApplicationMatchingUiSection (NULL, &FvHandle, &NameGuid);
- // Nothing to boot
- ASSERT_EFI_ERROR (Status);
- }
-
- Status = LoadPeCoffSectionFromFv (FvHandle, NameGuid);
-
- //
- // EFI does not define the bavior if all boot attemps fail and the last one returns.
- // So we make a policy choice to reset the system since this BDS does not have a UI.
- //
- gRT->ResetSystem (EfiResetCold, Status, 0, NULL);
-
- return ;
-}
-
-
-EFI_STATUS
-EFIAPI
-BdsInitialize (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
-{
- EFI_STATUS Status;
-
- mBdsImageHandle = ImageHandle;
-
- //
- // Install protocol interface
- //
- Status = gBS->InstallMultipleProtocolInterfaces (
- &mBdsImageHandle,
- &gEfiBdsArchProtocolGuid, &gBdsProtocol,
- NULL
- );
- ASSERT_EFI_ERROR (Status);
-
- return Status;
-}
-
-
diff --git a/EmbeddedPkg/TemplateBds/BdsEntry.h b/EmbeddedPkg/TemplateBds/BdsEntry.h
deleted file mode 100644
index 31eb6d7d4e..0000000000
--- a/EmbeddedPkg/TemplateBds/BdsEntry.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
-
- Copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR>
-
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-
-#ifndef __BDS_ENTRY_H__
-#define __BDS_ENTRY_H__
-
-#include <PiDxe.h>
-#include <Library/BaseLib.h>
-#include <Library/DebugLib.h>
-#include <Library/PrintLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/DxeServicesTableLib.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
-#include <Library/HobLib.h>
-#include <Library/DevicePathLib.h>
-#include <Library/PcdLib.h>
-
-#include <Protocol/Bds.h>
-#include <Protocol/SerialIo.h>
-#include <Protocol/FirmwareVolume2.h>
-#include <Protocol/SimpleTextIn.h>
-#include <Protocol/SimpleTextOut.h>
-
-
-
-
-EFI_STATUS
-LoadPeCoffSectionFromFv (
- IN EFI_HANDLE FvHandle,
- IN EFI_GUID *NameGuid
- );
-
-EFI_STATUS
-FindApplicationMatchingUiSection (
- IN CHAR16 *UiString,
- OUT EFI_HANDLE *FvHandle,
- OUT EFI_GUID **NameGuid
- );
-
-VOID
-EFIAPI
-BdsEntry (
- IN EFI_BDS_ARCH_PROTOCOL *This
- );
-
-#endif
-
diff --git a/EmbeddedPkg/TemplateBds/FirmwareVolume.c b/EmbeddedPkg/TemplateBds/FirmwareVolume.c
deleted file mode 100644
index b6a2206a86..0000000000
--- a/EmbeddedPkg/TemplateBds/FirmwareVolume.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/** @file
- The entry of the embedded BDS. This BDS does not follow the Boot Manager requirements
- of the UEFI specification as it is designed to implement an embedded systmes
- propriatary boot scheme.
-
- This template assume a DXE driver produces a SerialIo protocol not using the EFI
- driver module and it will attempt to connect a console on top of this.
-
- Copyright (c) 2008-2009, Apple Inc. All rights reserved.
-
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "BdsEntry.h"
-
-
-EFI_STATUS
-FindApplicationMatchingUiSection (
- IN CHAR16 *UiString,
- OUT EFI_HANDLE *FvHandle,
- OUT EFI_GUID **NameGuid
- )
-{
- EFI_STATUS Status;
- EFI_STATUS NextStatus;
- UINTN NoHandles;
- EFI_HANDLE *Buffer;
- UINTN Index;
- EFI_FV_FILETYPE FileType;
- EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv;
- VOID *Key;
- EFI_FV_FILE_ATTRIBUTES Attributes;
- UINTN Size;
- UINTN UiStringLen;
- CHAR16 *UiSection;
- UINT32 Authentication;
-
-
- UiStringLen = 0;
- if (UiString != NULL) {
- UiStringLen = StrLen (UiString);
- }
-
- Status = gBS->LocateHandleBuffer (ByProtocol, &gEfiFirmwareVolume2ProtocolGuid, NULL, &NoHandles, &Buffer);
- if (!EFI_ERROR (Status)) {
- for (Index = 0; Index < NoHandles; Index++) {
- Status = gBS->HandleProtocol (Buffer[Index], &gEfiFirmwareVolume2ProtocolGuid, (VOID **)&Fv);
- if (!EFI_ERROR (Status)) {
- Key = AllocatePool (Fv->KeySize);
- FileType = EFI_FV_FILETYPE_APPLICATION;
-
- do {
- NextStatus = Fv->GetNextFile (Fv, Key, &FileType, *NameGuid, &Attributes, &Size);
- if (!EFI_ERROR (NextStatus)) {
- if (UiString == NULL) {
- //
- // If UiString is NULL match first application we find.
- //
- *FvHandle = Buffer[Index];
- FreePool (Key);
- return Status;
- }
-
- UiSection = NULL;
- Status = Fv->ReadSection (
- Fv,
- *NameGuid,
- EFI_SECTION_USER_INTERFACE,
- 0,
- (VOID **)&UiSection,
- &Size,
- &Authentication
- );
- if (!EFI_ERROR (Status)) {
- if (StrnCmp (UiString, UiSection, UiStringLen)) {
- //
- // We found a UiString match.
- //
- *FvHandle = Buffer[Index];
- FreePool (Key);
- FreePool (UiSection);
- return Status;
- }
- FreePool (UiSection);
- }
- }
- } while (!EFI_ERROR (NextStatus));
-
- FreePool (Key);
- }
- }
-
- FreePool (Buffer);
- }
-
- return EFI_NOT_FOUND;
-}
-
-
-EFI_DEVICE_PATH *
-FvFileDevicePath (
- IN EFI_HANDLE FvHandle,
- IN EFI_GUID *NameGuid
- )
-{
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- MEDIA_FW_VOL_FILEPATH_DEVICE_PATH NewNode;
-
- DevicePath = DevicePathFromHandle (FvHandle);
-
- EfiInitializeFwVolDevicepathNode (&NewNode, NameGuid);
-
- return AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&NewNode);
-}
-
-
-
-EFI_STATUS
-LoadPeCoffSectionFromFv (
- IN EFI_HANDLE FvHandle,
- IN EFI_GUID *NameGuid
- )
-{
- EFI_STATUS Status;
- EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv;
- VOID *Buffer;
- UINTN BufferSize;
- UINT32 Authentication;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- EFI_HANDLE ImageHandle;
-
- Status = gBS->HandleProtocol (FvHandle, &gEfiFirmwareVolume2ProtocolGuid, (VOID **)&Fv);
- if (EFI_ERROR (Status)) {
- return Status;
- }
-
- Status = Fv->ReadSection (Fv, NameGuid, EFI_SECTION_PE32, 0, &Buffer, &BufferSize, &Authentication);
- if (!EFI_ERROR (Status)) {
- DevicePath = FvFileDevicePath (FvHandle, NameGuid);
- Status = gBS->LoadImage (TRUE, gImageHandle, DevicePath, Buffer, BufferSize, &ImageHandle);
- if (!EFI_ERROR (Status)) {
- // ExitData is NULL so we need to pass in a size of zero
- BufferSize = 0;
- Status = gBS->StartImage (ImageHandle, &BufferSize, NULL);
- }
-
- FreePool (Buffer);
- }
-
-
- return Status;
-}
-
diff --git a/EmbeddedPkg/TemplateBds/TemplateBds.inf b/EmbeddedPkg/TemplateBds/TemplateBds.inf
deleted file mode 100644
index 0b7e7a791f..0000000000
--- a/EmbeddedPkg/TemplateBds/TemplateBds.inf
+++ /dev/null
@@ -1,67 +0,0 @@
-#/** @file
-#
-# Component discription file for Bds module
-#
-# Copyright (c) 2008, Intel Corporation. <BR>
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-#**/
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = TemplateBds
- FILE_GUID = 3C85595C-70FD-447D-B0CB-7F6BBA9C9BEB
- MODULE_TYPE = DXE_DRIVER
- VERSION_STRING = 1.0
-
- ENTRY_POINT = BdsInitialize
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-# VALID_ARCHITECTURES = IA32 X64 IPF EBC
-#
-
-[Sources.common]
- BdsEntry.c
- FirmwareVolume.c
-
-
-[Packages]
- MdePkg/MdePkg.dec
-
-[LibraryClasses]
- DevicePathLib
- BaseLib
- HobLib
- UefiRuntimeServicesTableLib
- ReportStatusCodeLib
- PerformanceLib
- DxeServicesTableLib
- MemoryAllocationLib
- UefiLib
- UefiBootServicesTableLib
- BaseMemoryLib
- DebugLib
- PrintLib
- UefiDriverEntryPoint
-
-[Guids]
-
-
-[Protocols]
- gEfiBdsArchProtocolGuid
- gEfiSimpleTextInProtocolGuid
- gEfiSimpleTextOutProtocolGuid
- gEfiSerialIoProtocolGuid
- gEfiDevicePathProtocolGuid
- gEfiFirmwareVolume2ProtocolGuid
-
-[depex]
- TRUE