EFI_SIGNATURE_16 -> SIGNATURE_16 EFI_SIGNATURE_32 -> SIGNATURE_32 EFI_SIGNATURE_64 -> SIGNATURE_64 EFI_FIELD_OFFSET -> OFFSET_OF EFI_MAX_BIT -> MAX_BIT EFI_MAX_ADDRESS -> MAX_ADDRESS These macros are not defined in UEFI spec. It makes more sense to use the equivalent macros in Base.h to avoid alias. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7053 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			313 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			313 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*++
 | |
| 
 | |
| 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
 | |
| 
 | |
|  <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.
 | |
| 
 | |
|  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 = 
 | |
|    <F | R><O | W>;<block count>;<block size>[!...]
 | |
| 
 | |
|  EFI_UNIX_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_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 = 
 | |
|    <directory path>[!...]
 | |
| 
 | |
|    Mounting the two directories C:\FOO and C:\BAR would look like:
 | |
|    EFI_UNIX_FILE_SYSTEM=c:\foo!c:\bar
 | |
| 
 | |
|  EFI_UNIX_CONSOLE = 
 | |
|    <window title>
 | |
| 
 | |
|    Declaring a text console window with the title "My EFI Console" woild look like:
 | |
|    EFI_UNIX_CONSOLE=My EFI Console
 | |
| 
 | |
|  EFI_UNIX_UGA = 
 | |
|    <width> <height>[!...]
 | |
| 
 | |
|    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 = 
 | |
|    <port name>[!...]
 | |
| 
 | |
|    Declaring two serial ports on COM1 and COM2 would look like:
 | |
|    Example : EFI_UNIX_SERIAL_PORT=COM1!COM2
 | |
| 
 | |
|  EFI_UNIX_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_UNIX_PASS_THROUGH=E000000;0;1;0
 | |
| 
 | |
| ---*/
 | |
| 
 | |
| #ifndef __UNIX_BUS_DRIVER_H__
 | |
| #define __UNIX_BUS_DRIVER_H__
 | |
| #include "PiDxe.h"
 | |
| #include "UnixDxe.h"
 | |
| #include <Protocol/Pcd.h>
 | |
| #include <Protocol/DevicePath.h>
 | |
| 
 | |
| #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/MemoryAllocationLib.h>
 | |
| #include <Library/UefiBootServicesTableLib.h>
 | |
| #include <Library/DevicePathLib.h>
 | |
| 
 | |
| 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 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  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
 |