From 804405e7d10525e41720216137b2551f62a0663f Mon Sep 17 00:00:00 2001 From: eric_tian Date: Mon, 30 Jun 2008 05:08:49 +0000 Subject: Port EdkUnixPkg to UnixPkg. The changes are listed as follows: 1. change *.msa to *.inf, and create platform configuration files .dec&.dsc&.fdf to comply with Edk2 build process 2. using PCD mechanism to replace macro. 3. change Sec code to cowork with PI1.0 Pei Core and produce temparory memory ppi. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5380 6f19259b-4bc3-4df7-8a09-765794883524 --- UnixPkg/UnixBusDriverDxe/UnixBusDriver.h | 312 +++++++++++++++++++++++++++++++ 1 file changed, 312 insertions(+) create mode 100644 UnixPkg/UnixBusDriverDxe/UnixBusDriver.h (limited to 'UnixPkg/UnixBusDriverDxe/UnixBusDriver.h') diff --git a/UnixPkg/UnixBusDriverDxe/UnixBusDriver.h b/UnixPkg/UnixBusDriverDxe/UnixBusDriver.h new file mode 100644 index 0000000000..ffc3881544 --- /dev/null +++ b/UnixPkg/UnixBusDriverDxe/UnixBusDriver.h @@ -0,0 +1,312 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +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. + +Module Name: + + UnixBusDriver.h + +Abstract: + +This following section documents the PCD for the Unix +build. These variables are used to define the (virtual) hardware +configuration of the Unix environment + +A ! can be used to seperate multiple instances in a variable. Each +instance represents a seperate hardware device. + +EFI_UNIX_PHYSICAL_DISKS - maps to drives on your system +EFI_UNIX_VIRTUAL_DISKS - maps to a device emulated by a file +EFI_UNIX_FILE_SYSTEM - mouts a directory as a file system +EFI_UNIX_CONSOLE - make a logical comand line window (only one!) +EFI_UNIX_UGA - Builds UGA Windows of Width and Height +EFI_UNIX_SERIAL_PORT - maps physical serial ports +EFI_UNIX_PASS_THRU - associates a device with our PCI support + + ixed - Fixed disk like a hard drive. + emovable - Removable media like a floppy or CD-ROM. + Read nly - Write protected device. + Read rite - Read write device. + - Decimal number of blocks a device supports. + - Decimal number of bytes per block. + + UNIX envirnonment variable contents. '<' and '>' are not part of the variable, + they are just used to make this help more readable. There should be no + spaces between the ';'. Extra spaces will break the variable. A '!' is + used to seperate multiple devices in a variable. + + EFI_UNIX_VIRTUAL_DISKS = + ;;[!...] + + EFI_UNIX_PHYSICAL_DISKS = + :;;[!...] + + Virtual Disks: These devices use a file to emulate a hard disk or removable + media device. + + Thus a 20 MB emulated hard drive would look like: + EFI_UNIX_VIRTUAL_DISKS=FW;40960;512 + + A 1.44MB emulated floppy with a block size of 1024 would look like: + EFI_UNIX_VIRTUAL_DISKS=RW;1440;1024 + + Physical Disks: These devices use UNIX to open a real device in your system + + Thus a 120 MB floppy would look like: + EFI_UNIX_PHYSICAL_DISKS=B:RW;245760;512 + + Thus a standard CD-ROM floppy would look like: + EFI_UNIX_PHYSICAL_DISKS=Z:RO;307200;2048 + + EFI_UNIX_FILE_SYSTEM = + [!...] + + Mounting the two directories C:\FOO and C:\BAR would look like: + EFI_UNIX_FILE_SYSTEM=c:\foo!c:\bar + + EFI_UNIX_CONSOLE = + + + Declaring a text console window with the title "My EFI Console" woild look like: + EFI_UNIX_CONSOLE=My EFI Console + + EFI_UNIX_UGA = + [!...] + + Declaring a two UGA windows with resolutions of 800x600 and 1024x768 would look like: + Example : EFI_UNIX_UGA=800 600!1024 768 + + EFI_UNIX_SERIAL_PORT = + [!...] + + Declaring two serial ports on COM1 and COM2 would look like: + Example : EFI_UNIX_SERIAL_PORT=COM1!COM2 + + EFI_UNIX_PASS_THROUGH = + ;;; + + Declaring a base address of 0xE0000000 (used for PCI Express devices) + and having NT32 talk to a device located at bus 0, device 1, function 0: + Example : EFI_UNIX_PASS_THROUGH=E000000;0;1;0 + +---*/ + +#ifndef __UNIX_BUS_DRIVER_H__ +#define __UNIX_BUS_DRIVER_H__ +#include "PiDxe.h" +#include "UnixDxe.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern EFI_DRIVER_BINDING_PROTOCOL gUnixBusDriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gUnixBusDriverComponentName; + +// +// Unix Bus Driver Global Variables +// +extern EFI_DRIVER_BINDING_PROTOCOL gUnixBusDriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gUnixBusDriverComponentName; + +// +// Unix Bus Controller Structure +// +#define UNIX_BUS_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('L', 'X', 'B', 'D') + +typedef struct { + UINT64 Signature; + EFI_UNICODE_STRING_TABLE *ControllerNameTable; +} UNIX_BUS_DEVICE; + +// +// Unix Child Device Controller Structure +// +#define UNIX_IO_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('L', 'X', 'V', 'D') + +typedef struct { + UINT64 Signature; + EFI_HANDLE Handle; + EFI_UNIX_IO_PROTOCOL UnixIo; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + + // + // Private data about the parent + // + EFI_HANDLE ControllerHandle; + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; + + EFI_UNICODE_STRING_TABLE *ControllerNameTable; + +} UNIX_IO_DEVICE; + +#define UNIX_IO_DEVICE_FROM_THIS(a) \ + CR(a, UNIX_IO_DEVICE, UnixIo, UNIX_IO_DEVICE_SIGNATURE) + +// +// This is the largest env variable we can parse +// +#define MAX_UNIX_ENVIRNMENT_VARIABLE_LENGTH 512 + +typedef struct { + UINTN Token; + EFI_GUID *DevicePathGuid; +} UNIX_PCD_ENTRY; + +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + UINT32 Instance; +} UNIX_VENDOR_DEVICE_PATH_NODE; + +EFI_STATUS +EFIAPI +CpuIoInitialize ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +/*++ + +Routine Description: + + TODO: Add function description + +Arguments: + + ImageHandle - TODO: add argument description + SystemTable - TODO: add argument description + +Returns: + + TODO: add return values + +--*/ +; + +// +// Driver Binding Protocol function prototypes +// +EFI_STATUS +EFIAPI +UnixBusDriverBindingSupported ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Handle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + ) +/*++ + +Routine Description: + + TODO: Add function description + +Arguments: + + This - TODO: add argument description + Handle - TODO: add argument description + RemainingDevicePath - TODO: add argument description + +Returns: + + TODO: add return values + +--*/ +; + +EFI_STATUS +EFIAPI +UnixBusDriverBindingStart ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ParentHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + ) +/*++ + +Routine Description: + + TODO: Add function description + +Arguments: + + This - TODO: add argument description + ParentHandle - TODO: add argument description + RemainingDevicePath - TODO: add argument description + +Returns: + + TODO: add return values + +--*/ +; + +EFI_STATUS +EFIAPI +UnixBusDriverBindingStop ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Handle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer + ) +/*++ + +Routine Description: + + TODO: Add function description + +Arguments: + + This - TODO: add argument description + Handle - TODO: add argument description + NumberOfChildren - TODO: add argument description + ChildHandleBuffer - TODO: add argument description + +Returns: + + TODO: add return values + +--*/ +; + +// +// Unix Bus Driver private worker functions +// +EFI_DEVICE_PATH_PROTOCOL * +UnixBusCreateDevicePath ( + IN EFI_DEVICE_PATH_PROTOCOL *RootDevicePath, + IN EFI_GUID *Guid, + IN UINT16 InstanceNumber + ) +/*++ + +Routine Description: + + TODO: Add function description + +Arguments: + + RootDevicePath - TODO: add argument description + Guid - TODO: add argument description + InstanceNumber - TODO: add argument description + +Returns: + + TODO: add return values + +--*/ +; + + +#endif -- cgit v1.2.3