mirror of https://github.com/acidanthera/audk.git
394 lines
7.5 KiB
C
394 lines
7.5 KiB
C
/** @file
|
|
Provides some data struct used by OHCI controller driver.
|
|
|
|
Copyright (c) 2013-2015 Intel Corporation.
|
|
|
|
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 _OHCI_URB_H
|
|
#define _OHCI_URB_H
|
|
|
|
#include "Descriptor.h"
|
|
|
|
|
|
//
|
|
// Func List
|
|
//
|
|
|
|
|
|
/**
|
|
|
|
Create a TD
|
|
|
|
@Param Ohc UHC private data
|
|
|
|
@retval TD structure pointer
|
|
|
|
**/
|
|
TD_DESCRIPTOR *
|
|
OhciCreateTD (
|
|
IN USB_OHCI_HC_DEV *Ohc
|
|
);
|
|
|
|
/**
|
|
|
|
Free a TD
|
|
|
|
@Param Ohc UHC private data
|
|
@Param Td Pointer to a TD to free
|
|
|
|
@retval EFI_SUCCESS TD freed
|
|
|
|
**/
|
|
EFI_STATUS
|
|
OhciFreeTD (
|
|
IN USB_OHCI_HC_DEV *Ohc,
|
|
IN TD_DESCRIPTOR *Td
|
|
);
|
|
|
|
/**
|
|
|
|
Create a ED
|
|
|
|
@Param Ohc Device private data
|
|
|
|
@retval ED descriptor pointer
|
|
|
|
**/
|
|
ED_DESCRIPTOR *
|
|
OhciCreateED (
|
|
USB_OHCI_HC_DEV *Ohc
|
|
);
|
|
|
|
|
|
/**
|
|
|
|
Free a ED
|
|
|
|
@Param Ohc UHC private data
|
|
@Param Ed Pointer to a ED to free
|
|
|
|
@retval EFI_SUCCESS ED freed
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
OhciFreeED (
|
|
IN USB_OHCI_HC_DEV *Ohc,
|
|
IN ED_DESCRIPTOR *Ed
|
|
);
|
|
|
|
/**
|
|
|
|
Free ED
|
|
|
|
@Param Ohc Device private data
|
|
@Param Ed Pointer to a ED to free
|
|
|
|
@retval EFI_SUCCESS ED freed
|
|
|
|
**/
|
|
EFI_STATUS
|
|
OhciFreeAllTDFromED (
|
|
IN USB_OHCI_HC_DEV *Ohc,
|
|
IN ED_DESCRIPTOR *Ed
|
|
);
|
|
|
|
/**
|
|
|
|
Find a working ED match the requirement
|
|
|
|
@Param EdHead Head of the ED list
|
|
@Param DeviceAddress Device address to search
|
|
@Param EndPointNum End point num to search
|
|
@Param EdDir ED Direction to search
|
|
|
|
@retval ED descriptor searched
|
|
|
|
**/
|
|
|
|
ED_DESCRIPTOR *
|
|
OhciFindWorkingEd (
|
|
IN ED_DESCRIPTOR *EdHead,
|
|
IN UINT8 DeviceAddress,
|
|
IN UINT8 EndPointNum,
|
|
IN UINT8 EdDir
|
|
);
|
|
|
|
|
|
/**
|
|
|
|
Initialize interrupt list.
|
|
|
|
@Param Ohc Device private data
|
|
|
|
@retval EFI_SUCCESS Initialization done
|
|
|
|
**/
|
|
EFI_STATUS
|
|
OhciInitializeInterruptList (
|
|
USB_OHCI_HC_DEV *Ohc
|
|
);
|
|
|
|
/**
|
|
|
|
Attach an ED
|
|
|
|
@Param Ed Ed to be attached
|
|
@Param NewEd Ed to attach
|
|
|
|
@retval EFI_SUCCESS NewEd attached to Ed
|
|
@retval EFI_INVALID_PARAMETER Ed is NULL
|
|
|
|
**/
|
|
EFI_STATUS
|
|
OhciAttachED (
|
|
IN ED_DESCRIPTOR *Ed,
|
|
IN ED_DESCRIPTOR *NewEd
|
|
);
|
|
|
|
/**
|
|
|
|
Count ED number on a ED chain
|
|
|
|
@Param Ed Head of the ED chain
|
|
|
|
@retval ED number on the chain
|
|
|
|
**/
|
|
|
|
UINTN
|
|
CountEdNum (
|
|
IN ED_DESCRIPTOR *Ed
|
|
);
|
|
|
|
/**
|
|
|
|
Find the minimal burn ED list on a specific depth level
|
|
|
|
@Param Ohc Device private data
|
|
@Param Depth Depth level
|
|
|
|
@retval ED list found
|
|
|
|
**/
|
|
|
|
ED_DESCRIPTOR *
|
|
OhciFindMinInterruptEDList (
|
|
IN USB_OHCI_HC_DEV *Ohc,
|
|
IN UINT32 Depth
|
|
);
|
|
|
|
/**
|
|
|
|
Attach an ED to an ED list
|
|
|
|
@Param OHC UHC private data
|
|
@Param ListType Type of the ED list
|
|
@Param Ed ED to attach
|
|
@Param EdList ED list to be attached
|
|
|
|
@retval EFI_SUCCESS ED attached to ED list
|
|
|
|
**/
|
|
ED_DESCRIPTOR *
|
|
OhciAttachEDToList (
|
|
IN USB_OHCI_HC_DEV *Ohc,
|
|
IN DESCRIPTOR_LIST_TYPE ListType,
|
|
IN ED_DESCRIPTOR *Ed,
|
|
IN ED_DESCRIPTOR *EdList
|
|
);
|
|
|
|
/**
|
|
|
|
Remove interrupt EDs that match requirement
|
|
|
|
@Param Ohc UHC private data
|
|
@Param IntEd The address of Interrupt endpoint
|
|
|
|
@retval EFI_SUCCESS EDs match requirement removed
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
OhciFreeInterruptEdByEd (
|
|
IN USB_OHCI_HC_DEV *Ohc,
|
|
IN ED_DESCRIPTOR *IntEd
|
|
);
|
|
|
|
/**
|
|
|
|
Remove interrupt EDs that match requirement
|
|
|
|
@Param Ohc UHC private data
|
|
@Param FunctionAddress Requirement on function address
|
|
@Param EndPointNum Requirement on end point number
|
|
|
|
@retval EFI_SUCCESS EDs match requirement removed
|
|
|
|
**/
|
|
EFI_STATUS
|
|
OhciFreeInterruptEdByAddr (
|
|
IN USB_OHCI_HC_DEV *Ohc,
|
|
IN UINT8 FunctionAddress,
|
|
IN UINT8 EndPointNum
|
|
);
|
|
|
|
|
|
/**
|
|
|
|
Link Td2 to the end of Td1
|
|
|
|
@Param Td1 TD to be linked
|
|
@Param Td2 TD to link
|
|
|
|
@retval EFI_SUCCESS TD successfully linked
|
|
@retval EFI_INVALID_PARAMETER Td1 is NULL
|
|
|
|
**/
|
|
EFI_STATUS
|
|
OhciLinkTD (
|
|
IN TD_DESCRIPTOR *Td1,
|
|
IN TD_DESCRIPTOR *Td2
|
|
);
|
|
|
|
|
|
/**
|
|
|
|
Attach TD list to ED
|
|
|
|
@Param Ed ED which TD list attach on
|
|
@Param HeadTd Head of the TD list to attach
|
|
|
|
@retval EFI_SUCCESS TD list attached on the ED
|
|
|
|
**/
|
|
EFI_STATUS
|
|
OhciAttachTDListToED (
|
|
IN ED_DESCRIPTOR *Ed,
|
|
IN TD_DESCRIPTOR *HeadTd
|
|
);
|
|
|
|
|
|
/**
|
|
|
|
Set value to ED specific field
|
|
|
|
@Param Ed ED to be set
|
|
@Param Field Field to be set
|
|
@Param Value Value to set
|
|
|
|
@retval EFI_SUCCESS Value set
|
|
|
|
**/
|
|
EFI_STATUS
|
|
OhciSetEDField (
|
|
IN ED_DESCRIPTOR *Ed,
|
|
IN UINT32 Field,
|
|
IN UINT32 Value
|
|
);
|
|
|
|
|
|
/**
|
|
|
|
Get value from an ED's specific field
|
|
|
|
@Param Ed ED pointer
|
|
@Param Field Field to get value from
|
|
|
|
@retval Value of the field
|
|
|
|
**/
|
|
UINT32
|
|
OhciGetEDField (
|
|
IN ED_DESCRIPTOR *Ed,
|
|
IN UINT32 Field
|
|
);
|
|
|
|
|
|
/**
|
|
|
|
Set value to TD specific field
|
|
|
|
@Param Td TD to be set
|
|
@Param Field Field to be set
|
|
@Param Value Value to set
|
|
|
|
@retval EFI_SUCCESS Value set
|
|
|
|
**/
|
|
EFI_STATUS
|
|
OhciSetTDField (
|
|
IN TD_DESCRIPTOR *Td,
|
|
IN UINT32 Field,
|
|
IN UINT32 Value
|
|
);
|
|
|
|
|
|
/**
|
|
|
|
Get value from ED specific field
|
|
|
|
@Param Td TD pointer
|
|
@Param Field Field to get value from
|
|
|
|
@retval Value of the field
|
|
|
|
**/
|
|
|
|
UINT32
|
|
OhciGetTDField (
|
|
IN TD_DESCRIPTOR *Td,
|
|
IN UINT32 Field
|
|
);
|
|
/**
|
|
|
|
Free the Ed,Td,buffer that were created during transferring
|
|
|
|
@Param Ohc Device private data
|
|
**/
|
|
|
|
VOID
|
|
OhciFreeDynamicIntMemory(
|
|
IN USB_OHCI_HC_DEV *Ohc
|
|
);
|
|
|
|
/**
|
|
|
|
Free the Ed that were initilized during driver was starting,
|
|
those memory were used as interrupt ED head
|
|
|
|
@Param Ohc Device private data
|
|
|
|
|
|
**/
|
|
VOID
|
|
OhciFreeFixedIntMemory (
|
|
IN USB_OHCI_HC_DEV *Ohc
|
|
);
|
|
/**
|
|
|
|
Release all OHCI used memory when OHCI going to quit
|
|
|
|
@Param Ohc Device private data
|
|
|
|
@retval EFI_SUCCESS Memory released
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
OhciFreeIntTransferMemory (
|
|
IN USB_OHCI_HC_DEV *Ohc
|
|
);
|
|
|
|
#endif
|