/** @file
|
|
Provides some data structure definitions used by the SD/MMC host controller driver.
|
|
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2018, Marvell International, Ltd. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
**/
|
|
#ifndef _XENON_PCI_HCI_H_
|
#define _XENON_PCI_HCI_H_
|
|
/**
|
Read/Write specified SD/MMC host controller mmio register.
|
|
@param[in] PciIo The PCI IO protocol instance.
|
@param[in] BarIndex The BAR index of the standard PCI Configuration
|
header to use as the base address for the memory
|
operation to perform.
|
@param[in] Offset The offset within the selected BAR to start the
|
memory operation.
|
@param[in] Read A boolean to indicate it's read or write operation.
|
@param[in] Count The width of the mmio register in bytes.
|
Must be 1, 2 , 4 or 8 bytes.
|
@param[in, out] Data For read operations, the destination buffer to store
|
the results. For write operations, the source buffer
|
to write data from. The caller is responsible for
|
having ownership of the data buffer and ensuring its
|
size not less than Count bytes.
|
|
@retval EFI_INVALID_PARAMETER The PciIo or Data is NULL or the Count is not valid.
|
@retval EFI_SUCCESS The read/write operation succeeds.
|
@retval Others The read/write operation fails.
|
|
**/
|
EFI_STATUS
|
EFIAPI
|
XenonHcRwMmio (
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
IN UINT8 BarIndex,
|
IN UINT32 Offset,
|
IN BOOLEAN Read,
|
IN UINT8 Count,
|
IN OUT VOID *Data
|
);
|
|
/**
|
Do OR operation with the value of the specified SD/MMC host controller mmio register.
|
|
@param[in] PciIo The PCI IO protocol instance.
|
@param[in] BarIndex The BAR index of the standard PCI Configuration
|
header to use as the base address for the memory
|
operation to perform.
|
@param[in] Offset The offset within the selected BAR to start the
|
memory operation.
|
@param[in] Count The width of the mmio register in bytes.
|
Must be 1, 2 , 4 or 8 bytes.
|
@param[in] OrData The pointer to the data used to do OR operation.
|
The caller is responsible for having ownership of
|
the data buffer and ensuring its size not less than
|
Count bytes.
|
|
@retval EFI_INVALID_PARAMETER The PciIo or OrData is NULL or the Count is not valid.
|
@retval EFI_SUCCESS The OR operation succeeds.
|
@retval Others The OR operation fails.
|
|
**/
|
EFI_STATUS
|
EFIAPI
|
XenonHcOrMmio (
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
IN UINT8 BarIndex,
|
IN UINT32 Offset,
|
IN UINT8 Count,
|
IN VOID *OrData
|
);
|
|
/**
|
Do AND operation with the value of the specified SD/MMC host controller mmio register.
|
|
@param[in] PciIo The PCI IO protocol instance.
|
@param[in] BarIndex The BAR index of the standard PCI Configuration
|
header to use as the base address for the memory
|
operation to perform.
|
@param[in] Offset The offset within the selected BAR to start the
|
memory operation.
|
@param[in] Count The width of the mmio register in bytes.
|
Must be 1, 2 , 4 or 8 bytes.
|
@param[in] AndData The pointer to the data used to do AND operation.
|
The caller is responsible for having ownership of
|
the data buffer and ensuring its size not less than
|
Count bytes.
|
|
@retval EFI_INVALID_PARAMETER The PciIo or AndData is NULL or the Count is not valid.
|
@retval EFI_SUCCESS The AND operation succeeds.
|
@retval Others The AND operation fails.
|
|
**/
|
EFI_STATUS
|
EFIAPI
|
XenonHcAndMmio (
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
IN UINT8 BarIndex,
|
IN UINT32 Offset,
|
IN UINT8 Count,
|
IN VOID *AndData
|
);
|
|
/**
|
Wait for the value of the specified MMIO register set to the test value.
|
|
@param[in] PciIo The PCI IO protocol instance.
|
@param[in] BarIndex The BAR index of the standard PCI Configuration
|
header to use as the base address for the memory
|
operation to perform.
|
@param[in] Offset The offset within the selected BAR to start the
|
memory operation.
|
@param[in] Count The width of the mmio register in bytes.
|
Must be 1, 2, 4 or 8 bytes.
|
@param[in] MaskValue The mask value of memory.
|
@param[in] TestValue The test value of memory.
|
@param[in] Timeout The time out value for wait memory set, uses 1
|
microsecond as a unit.
|
|
@retval EFI_TIMEOUT The MMIO register hasn't expected value in timeout
|
range.
|
@retval EFI_SUCCESS The MMIO register has expected value.
|
@retval Others The MMIO operation fails.
|
|
**/
|
EFI_STATUS
|
EFIAPI
|
XenonHcWaitMmioSet (
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
IN UINT8 BarIndex,
|
IN UINT32 Offset,
|
IN UINT8 Count,
|
IN UINT64 MaskValue,
|
IN UINT64 TestValue,
|
IN UINT64 Timeout
|
);
|
|
#endif
|