/** @file
|
Library functions for Setting QNC internal network port
|
|
Copyright (c) 2013-2015 Intel Corporation.
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
**/
|
|
#ifndef __QNC_ACCESS_LIB_H__
|
#define __QNC_ACCESS_LIB_H__
|
|
#include <IntelQNCRegs.h>
|
|
#define MESSAGE_READ_DW(Port, Reg) \
|
(UINT32)((QUARK_OPCODE_READ << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)
|
|
#define MESSAGE_WRITE_DW(Port, Reg) \
|
(UINT32)((QUARK_OPCODE_WRITE << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)
|
|
#define ALT_MESSAGE_READ_DW(Port, Reg) \
|
(UINT32)((QUARK_ALT_OPCODE_READ << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)
|
|
#define ALT_MESSAGE_WRITE_DW(Port, Reg) \
|
(UINT32)((QUARK_ALT_OPCODE_WRITE << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)
|
|
#define MESSAGE_IO_READ_DW(Port, Reg) \
|
(UINT32)((QUARK_OPCODE_IO_READ << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)
|
|
#define MESSAGE_IO_WRITE_DW(Port, Reg) \
|
(UINT32)((QUARK_OPCODE_IO_WRITE << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)
|
|
#define MESSAGE_SHADOW_DW(Port, Reg) \
|
(UINT32)((QUARK_DRAM_BASE_ADDR_READY << QNC_MCR_OP_OFFSET) | ((Port << QNC_MCR_PORT_OFFSET) & 0xFF0000) | ((Reg << QNC_MCR_REG_OFFSET) & 0xFF00) | 0xF0)
|
|
|
/**
|
Read required data from QNC internal message network
|
**/
|
UINT32
|
EFIAPI
|
QNCPortRead(
|
UINT8 Port,
|
UINT32 RegAddress
|
);
|
|
/**
|
Write prepared data into QNC internal message network.
|
|
**/
|
VOID
|
EFIAPI
|
QNCPortWrite (
|
UINT8 Port,
|
UINT32 RegAddress,
|
UINT32 WriteValue
|
);
|
|
/**
|
Read required data from QNC internal message network
|
**/
|
UINT32
|
EFIAPI
|
QNCAltPortRead(
|
UINT8 Port,
|
UINT32 RegAddress
|
);
|
|
/**
|
Write prepared data into QNC internal message network.
|
|
**/
|
VOID
|
EFIAPI
|
QNCAltPortWrite (
|
UINT8 Port,
|
UINT32 RegAddress,
|
UINT32 WriteValue
|
);
|
|
/**
|
Read required data from QNC internal message network
|
**/
|
UINT32
|
EFIAPI
|
QNCPortIORead(
|
UINT8 Port,
|
UINT32 RegAddress
|
);
|
|
/**
|
Write prepared data into QNC internal message network.
|
|
**/
|
VOID
|
EFIAPI
|
QNCPortIOWrite (
|
UINT8 Port,
|
UINT32 RegAddress,
|
UINT32 WriteValue
|
);
|
|
/**
|
This is for the special consideration for QNC MMIO write, as required by FWG,
|
a reading must be performed after MMIO writing to ensure the expected write
|
is processed and data is flushed into chipset
|
|
**/
|
RETURN_STATUS
|
EFIAPI
|
QNCMmIoWrite (
|
UINT32 MmIoAddress,
|
QNC_MEM_IO_WIDTH Width,
|
UINT32 DataNumber,
|
VOID *pData
|
);
|
|
UINT32
|
EFIAPI
|
QncHsmmcRead (
|
VOID
|
);
|
|
VOID
|
EFIAPI
|
QncHsmmcWrite (
|
UINT32 WriteValue
|
);
|
|
VOID
|
EFIAPI
|
QncImrWrite (
|
UINT32 ImrBaseOffset,
|
UINT32 ImrLow,
|
UINT32 ImrHigh,
|
UINT32 ImrReadMask,
|
UINT32 ImrWriteMask
|
);
|
|
VOID
|
EFIAPI
|
QncIClkAndThenOr (
|
UINT32 RegAddress,
|
UINT32 AndValue,
|
UINT32 OrValue
|
);
|
|
VOID
|
EFIAPI
|
QncIClkOr (
|
UINT32 RegAddress,
|
UINT32 OrValue
|
);
|
|
UINTN
|
EFIAPI
|
QncGetPciExpressBaseAddress (
|
VOID
|
);
|
|
#endif
|