/** @file Provides some data structure definitions used by the SD/MMC host controller driver. Copyright (c) 2015, Intel Corporation. All rights reserved.
Copyright (c) 2018, Marvell International, Ltd. All rights reserved.
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