TianoCore EDK2 master
|
Go to the source code of this file.
Data Structures | |
struct | _USBHC_MEM_BLOCK |
struct | _USBHC_MEM_POOL |
Macros | |
#define | USB_HC_BIT(a) ((UINTN)(1 << (a))) |
#define | USB_HC_BIT_IS_SET(Data, Bit) ((BOOLEAN)(((Data) & USB_HC_BIT(Bit)) == USB_HC_BIT(Bit))) |
#define | USBHC_MEM_UNIT 64 |
#define | USBHC_MEM_UNIT_MASK (USBHC_MEM_UNIT - 1) |
#define | USBHC_MEM_DEFAULT_PAGES 16 |
#define | USBHC_MEM_ROUND(Len) (((Len) + USBHC_MEM_UNIT_MASK) & (~USBHC_MEM_UNIT_MASK)) |
#define | USBHC_MEM_TRB_RINGS_BOUNDARY SIZE_64KB |
#define | NEXT_BIT(Byte, Bit) |
Typedefs | |
typedef struct _USBHC_MEM_BLOCK | USBHC_MEM_BLOCK |
typedef struct _USBHC_MEM_POOL | USBHC_MEM_POOL |
Functions | |
USBHC_MEM_POOL * | UsbHcInitMemPool (IN EFI_PCI_IO_PROTOCOL *PciIo) |
EFI_STATUS | UsbHcFreeMemPool (IN USBHC_MEM_POOL *Pool) |
VOID * | UsbHcAllocateMem (IN USBHC_MEM_POOL *Pool, IN UINTN Size, IN BOOLEAN AllocationForRing) |
VOID | UsbHcFreeMem (IN USBHC_MEM_POOL *Pool, IN VOID *Mem, IN UINTN Size) |
EFI_PHYSICAL_ADDRESS | UsbHcGetPciAddrForHostAddr (IN USBHC_MEM_POOL *Pool, IN VOID *Mem, IN UINTN Size, IN BOOLEAN Alignment) |
EFI_PHYSICAL_ADDRESS | UsbHcGetHostAddrForPciAddr (IN USBHC_MEM_POOL *Pool, IN VOID *Mem, IN UINTN Size, IN BOOLEAN Alignment) |
EFI_STATUS | UsbHcAllocateAlignedPages (IN EFI_PCI_IO_PROTOCOL *PciIo, IN UINTN Pages, IN UINTN Alignment, OUT VOID **HostAddress, OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, OUT VOID **Mapping) |
VOID | UsbHcFreeAlignedPages (IN EFI_PCI_IO_PROTOCOL *PciIo, IN VOID *HostAddress, IN UINTN Pages, VOID *Mapping) |
This file contains the definination for host controller memory management routines.
Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file UsbHcMem.h.
#define NEXT_BIT | ( | Byte, | |
Bit | |||
) |
Definition at line 56 of file UsbHcMem.h.
#define USB_HC_BIT | ( | a | ) | ((UINTN)(1 << (a))) |
Definition at line 13 of file UsbHcMem.h.
#define USB_HC_BIT_IS_SET | ( | Data, | |
Bit | |||
) | ((BOOLEAN)(((Data) & USB_HC_BIT(Bit)) == USB_HC_BIT(Bit))) |
Definition at line 15 of file UsbHcMem.h.
#define USBHC_MEM_DEFAULT_PAGES 16 |
Definition at line 47 of file UsbHcMem.h.
#define USBHC_MEM_ROUND | ( | Len | ) | (((Len) + USBHC_MEM_UNIT_MASK) & (~USBHC_MEM_UNIT_MASK)) |
Definition at line 49 of file UsbHcMem.h.
#define USBHC_MEM_TRB_RINGS_BOUNDARY SIZE_64KB |
Definition at line 51 of file UsbHcMem.h.
#define USBHC_MEM_UNIT 64 |
Definition at line 44 of file UsbHcMem.h.
#define USBHC_MEM_UNIT_MASK (USBHC_MEM_UNIT - 1) |
Definition at line 46 of file UsbHcMem.h.
typedef struct _USBHC_MEM_BLOCK USBHC_MEM_BLOCK |
Definition at line 18 of file UsbHcMem.h.
EFI_STATUS UsbHcAllocateAlignedPages | ( | IN EFI_PCI_IO_PROTOCOL * | PciIo, |
IN UINTN | Pages, | ||
IN UINTN | Alignment, | ||
OUT VOID ** | HostAddress, | ||
OUT EFI_PHYSICAL_ADDRESS * | DeviceAddress, | ||
OUT VOID ** | Mapping | ||
) |
Allocates pages at a specified alignment that are suitable for an EfiPciIoOperationBusMasterCommonBuffer mapping.
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
PciIo | The PciIo that can be used to access the host controller. |
Pages | The number of pages to allocate. |
Alignment | The requested alignment of the allocation. Must be a power of two. |
HostAddress | The system memory address to map to the PCI controller. |
DeviceAddress | The resulting map address for the bus master PCI controller to use to access the hosts HostAddress. |
Mapping | A resulting value to pass to Unmap(). |
EFI_SUCCESS | Success to allocate aligned pages. |
EFI_INVALID_PARAMETER | Pages or Alignment is not valid. |
EFI_OUT_OF_RESOURCES | Do not have enough resources to allocate memory. |
Definition at line 637 of file UsbHcMem.c.
VOID * UsbHcAllocateMem | ( | IN USBHC_MEM_POOL * | Pool, |
IN UINTN | Size, | ||
IN BOOLEAN | AllocationForRing | ||
) |
Allocate some memory from the host controller's memory pool which can be used to communicate with host controller.
Pool | The host controller's memory pool. |
Size | Size of the memory to allocate. |
AllocationForRing | The allocated memory is for Ring or not. |
Definition at line 480 of file UsbHcMem.c.
VOID UsbHcFreeAlignedPages | ( | IN EFI_PCI_IO_PROTOCOL * | PciIo, |
IN VOID * | HostAddress, | ||
IN UINTN | Pages, | ||
VOID * | Mapping | ||
) |
Frees memory that was allocated with UsbHcAllocateAlignedPages().
PciIo | The PciIo that can be used to access the host controller. |
HostAddress | The system memory address to map to the PCI controller. |
Pages | The number of pages to free. |
Mapping | The mapping value returned from Map(). |
Frees memory that was allocated with UsbHcAllocateAlignedPages().
PciIo | The PciIo that can be used to access the host controller. |
HostAddress | The system memory address to map to the PCI controller. |
Pages | The number of 4 KB pages to free. |
Mapping | The mapping value returned from Map(). |
Definition at line 758 of file UsbHcMem.c.
VOID UsbHcFreeMem | ( | IN USBHC_MEM_POOL * | Pool, |
IN VOID * | Mem, | ||
IN UINTN | Size | ||
) |
Free the allocated memory back to the memory pool.
Pool | The memory pool of the host controller. |
Mem | The memory to free. |
Size | The size of the memory to free. |
Definition at line 493 of file UsbHcMem.c.
EFI_STATUS UsbHcFreeMemPool | ( | IN USBHC_MEM_POOL * | Pool | ) |
Release the memory management pool.
Pool | The USB memory pool to free. |
EFI_SUCCESS | The memory pool is freed. |
EFI_DEVICE_ERROR | Failed to free the memory pool. |
Release the memory management pool.
Pool | The USB memory pool to free. |
Release the memory management pool.
Pool | The USB memory pool to free. |
Definition at line 385 of file UsbHcMem.c.
EFI_PHYSICAL_ADDRESS UsbHcGetHostAddrForPciAddr | ( | IN USBHC_MEM_POOL * | Pool, |
IN VOID * | Mem, | ||
IN UINTN | Size, | ||
IN BOOLEAN | Alignment | ||
) |
Calculate the corresponding host address according to the pci address.
Pool | The memory pool of the host controller. |
Mem | The pointer to pci memory. |
Size | The size of the memory region. |
Alignment | Alignment the size to USBHC_MEM_UNIT bytes. |
Definition at line 290 of file UsbHcMem.c.
EFI_PHYSICAL_ADDRESS UsbHcGetPciAddrForHostAddr | ( | IN USBHC_MEM_POOL * | Pool, |
IN VOID * | Mem, | ||
IN UINTN | Size, | ||
IN BOOLEAN | Alignment | ||
) |
Calculate the corresponding pci bus address according to the Mem parameter.
Pool | The memory pool of the host controller. |
Mem | The pointer to host memory. |
Size | The size of the memory region. |
Alignment | Alignment the size to USBHC_MEM_UNIT bytes. |
Definition at line 235 of file UsbHcMem.c.
USBHC_MEM_POOL * UsbHcInitMemPool | ( | IN EFI_PCI_IO_PROTOCOL * | PciIo | ) |
Initialize the memory management pool for the host controller.
PciIo | The PciIo that can be used to access the host controller. |
EFI_SUCCESS | The memory pool is initialized. |
EFI_OUT_OF_RESOURCE | Fail to init the memory pool. |
Definition at line 412 of file UsbHcMem.c.