summaryrefslogtreecommitdiff
path: root/Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriver.h
diff options
context:
space:
mode:
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>2007-06-27 05:46:08 +0000
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>2007-06-27 05:46:08 +0000
commit420fc8e58490353b1758537cd2ea0ebf7bdd0bc6 (patch)
treecd4660d9607b135870f3a871291b08e4681b1b5c /Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriver.h
parent66b76b194c979b5ca4cb8e50181c304c83199889 (diff)
downloadedk2-platforms-420fc8e58490353b1758537cd2ea0ebf7bdd0bc6.tar.xz
Add WinNtBusDriverDxe into Nt32Pkg.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2775 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriver.h')
-rw-r--r--Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriver.h322
1 files changed, 322 insertions, 0 deletions
diff --git a/Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriver.h b/Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriver.h
new file mode 100644
index 0000000000..ec3e22770b
--- /dev/null
+++ b/Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriver.h
@@ -0,0 +1,322 @@
+/*++
+
+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:
+
+ WinNtBusDriver.h
+
+Abstract:
+
+This following section documents the envirnoment variables for the Win NT
+build. These variables are used to define the (virtual) hardware
+configuration of the NT environment
+
+A ! can be used to seperate multiple instances in a variable. Each
+instance represents a seperate hardware device.
+
+EFI_WIN_NT_PHYSICAL_DISKS - maps to drives on your system
+EFI_WIN_NT_VIRTUAL_DISKS - maps to a device emulated by a file
+EFI_WIN_NT_FILE_SYSTEM - mouts a directory as a file system
+EFI_WIN_NT_CONSOLE - make a logical comand line window (only one!)
+EFI_WIN_NT_UGA - Builds UGA Windows of Width and Height
+EFI_WIN_NT_SERIAL_PORT - maps physical serial ports
+EFI_WIN_NT_PASS_THRU - associates a device with our PCI support
+
+ <F>ixed - Fixed disk like a hard drive.
+ <R>emovable - Removable media like a floppy or CD-ROM.
+ Read <O>nly - Write protected device.
+ Read <W>rite - Read write device.
+ <block count> - Decimal number of blocks a device supports.
+ <block size> - Decimal number of bytes per block.
+
+ NT 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_WIN_NT_VIRTUAL_DISKS =
+ <F | R><O | W>;<block count>;<block size>[!...]
+
+ EFI_WIN_NT_PHYSICAL_DISKS =
+ <drive letter>:<F | R><O | W>;<block count>;<block size>[!...]
+
+ 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_WIN_NT_VIRTUAL_DISKS=FW;40960;512
+
+ A 1.44MB emulated floppy with a block size of 1024 would look like:
+ EFI_WIN_NT_VIRTUAL_DISKS=RW;1440;1024
+
+ Physical Disks: These devices use NT to open a real device in your system
+
+ Thus a 120 MB floppy would look like:
+ EFI_WIN_NT_PHYSICAL_DISKS=B:RW;245760;512
+
+ Thus a standard CD-ROM floppy would look like:
+ EFI_WIN_NT_PHYSICAL_DISKS=Z:RO;307200;2048
+
+ EFI_WIN_NT_FILE_SYSTEM =
+ <directory path>[!...]
+
+ Mounting the two directories C:\FOO and C:\BAR would look like:
+ EFI_WIN_NT_FILE_SYSTEM=c:\foo!c:\bar
+
+ EFI_WIN_NT_CONSOLE =
+ <window title>
+
+ Declaring a text console window with the title "My EFI Console" woild look like:
+ EFI_WIN_NT_CONSOLE=My EFI Console
+
+ EFI_WIN_NT_UGA =
+ <width> <height>[!...]
+
+ Declaring a two UGA windows with resolutions of 800x600 and 1024x768 would look like:
+ Example : EFI_WIN_NT_UGA=800 600!1024 768
+
+ EFI_WIN_NT_SERIAL_PORT =
+ <port name>[!...]
+
+ Declaring two serial ports on COM1 and COM2 would look like:
+ Example : EFI_WIN_NT_SERIAL_PORT=COM1!COM2
+
+ EFI_WIN_NT_PASS_THROUGH =
+ <BaseAddress>;<Bus#>;<Device#>;<Function#>
+
+ 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_WIN_NT_PASS_THROUGH=E000000;0;1;0
+
+---*/
+
+#ifndef __NT_BUS_DRIVER_H__
+#define __NT_BUS_DRIVER_H__
+
+
+//
+// The package level header files this module uses
+//
+#include <Uefi.h>
+#include <WinNtDxe.h>
+//
+// The protocols, PPI and GUID defintions for this module
+//
+#include <Protocol/WinNtIo.h>
+#include <Protocol/ComponentName.h>
+#include <Protocol/WinNtThunk.h>
+#include <Protocol/DriverBinding.h>
+#include <Protocol/DevicePath.h>
+//
+// The Library classes this module consumes
+//
+#include <Library/DebugLib.h>
+#include <Library/BaseLib.h>
+#include <Library/UefiDriverEntryPoint.h>
+#include <Library/UefiLib.h>
+#include <Library/PcdLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/UefiBootServicesTableLib.h>
+#include <Library/DevicePathLib.h>
+#include <Library/MemoryAllocationLib.h>
+
+//
+// WinNt Bus Driver Global Variables
+//
+extern EFI_DRIVER_BINDING_PROTOCOL gWinNtBusDriverBinding;
+extern EFI_COMPONENT_NAME_PROTOCOL gWinNtBusDriverComponentName;
+
+//
+// WinNt Bus Controller Structure
+//
+#define WIN_NT_BUS_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('N', 'T', 'B', 'D')
+
+typedef struct {
+ UINT64 Signature;
+ EFI_UNICODE_STRING_TABLE *ControllerNameTable;
+} WIN_NT_BUS_DEVICE;
+
+//
+// WinNt Child Device Controller Structure
+//
+#define WIN_NT_IO_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('N', 'T', 'V', 'D')
+
+typedef struct {
+ UINT64 Signature;
+ EFI_HANDLE Handle;
+ EFI_WIN_NT_IO_PROTOCOL WinNtIo;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+
+ //
+ // Private data about the parent
+ //
+ EFI_HANDLE ControllerHandle;
+ EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
+
+ EFI_UNICODE_STRING_TABLE *ControllerNameTable;
+
+} WIN_NT_IO_DEVICE;
+
+#define WIN_NT_IO_DEVICE_FROM_THIS(a) \
+ CR(a, WIN_NT_IO_DEVICE, WinNtIo, WIN_NT_IO_DEVICE_SIGNATURE)
+
+//
+// This is the largest env variable we can parse
+//
+#define MAX_NT_ENVIRNMENT_VARIABLE_LENGTH 512
+
+typedef struct {
+ UINTN Token;
+ EFI_GUID *DevicePathGuid;
+} NT_PCD_ENTRY;
+
+typedef struct {
+ VENDOR_DEVICE_PATH VendorDevicePath;
+ UINT32 Instance;
+} WIN_NT_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
+WinNtBusDriverBindingSupported (
+ 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
+WinNtBusDriverBindingStart (
+ 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
+WinNtBusDriverBindingStop (
+ 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
+
+--*/
+;
+
+//
+// WinNt Bus Driver private worker functions
+//
+EFI_DEVICE_PATH_PROTOCOL *
+WinNtBusCreateDevicePath (
+ 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