157 lines
5.6 KiB
C
157 lines
5.6 KiB
C
|
/*
|
||
|
This file is provided under a dual BSD/GPLv2 license. When using or
|
||
|
redistributing this file, you may do so under either license.
|
||
|
|
||
|
GPL LICENSE SUMMARY
|
||
|
Copyright(c) 2014 Intel Corporation.
|
||
|
This program is free software; you can redistribute it and/or modify
|
||
|
it under the terms of version 2 of the GNU General Public License as
|
||
|
published by the Free Software Foundation.
|
||
|
|
||
|
This program is distributed in the hope that it will be useful, but
|
||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
General Public License for more details.
|
||
|
|
||
|
Contact Information:
|
||
|
qat-linux@intel.com
|
||
|
|
||
|
BSD LICENSE
|
||
|
Copyright(c) 2014 Intel Corporation.
|
||
|
Redistribution and use in source and binary forms, with or without
|
||
|
modification, are permitted provided that the following conditions
|
||
|
are met:
|
||
|
|
||
|
* Redistributions of source code must retain the above copyright
|
||
|
notice, this list of conditions and the following disclaimer.
|
||
|
* Redistributions in binary form must reproduce the above copyright
|
||
|
notice, this list of conditions and the following disclaimer in
|
||
|
the documentation and/or other materials provided with the
|
||
|
distribution.
|
||
|
* Neither the name of Intel Corporation nor the names of its
|
||
|
contributors may be used to endorse or promote products derived
|
||
|
from this software without specific prior written permission.
|
||
|
|
||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
*/
|
||
|
#ifndef __ICP_QAT_HAL_H
|
||
|
#define __ICP_QAT_HAL_H
|
||
|
#include "icp_qat_fw_loader_handle.h"
|
||
|
|
||
|
enum hal_global_csr {
|
||
|
MISC_CONTROL = 0x04,
|
||
|
ICP_RESET = 0x0c,
|
||
|
ICP_GLOBAL_CLK_ENABLE = 0x50
|
||
|
};
|
||
|
|
||
|
enum hal_ae_csr {
|
||
|
USTORE_ADDRESS = 0x000,
|
||
|
USTORE_DATA_LOWER = 0x004,
|
||
|
USTORE_DATA_UPPER = 0x008,
|
||
|
ALU_OUT = 0x010,
|
||
|
CTX_ARB_CNTL = 0x014,
|
||
|
CTX_ENABLES = 0x018,
|
||
|
CC_ENABLE = 0x01c,
|
||
|
CSR_CTX_POINTER = 0x020,
|
||
|
CTX_STS_INDIRECT = 0x040,
|
||
|
ACTIVE_CTX_STATUS = 0x044,
|
||
|
CTX_SIG_EVENTS_INDIRECT = 0x048,
|
||
|
CTX_SIG_EVENTS_ACTIVE = 0x04c,
|
||
|
CTX_WAKEUP_EVENTS_INDIRECT = 0x050,
|
||
|
LM_ADDR_0_INDIRECT = 0x060,
|
||
|
LM_ADDR_1_INDIRECT = 0x068,
|
||
|
INDIRECT_LM_ADDR_0_BYTE_INDEX = 0x0e0,
|
||
|
INDIRECT_LM_ADDR_1_BYTE_INDEX = 0x0e8,
|
||
|
FUTURE_COUNT_SIGNAL_INDIRECT = 0x078,
|
||
|
TIMESTAMP_LOW = 0x0c0,
|
||
|
TIMESTAMP_HIGH = 0x0c4,
|
||
|
PROFILE_COUNT = 0x144,
|
||
|
SIGNATURE_ENABLE = 0x150,
|
||
|
AE_MISC_CONTROL = 0x160,
|
||
|
LOCAL_CSR_STATUS = 0x180,
|
||
|
};
|
||
|
|
||
|
enum fcu_csr {
|
||
|
FCU_CONTROL = 0x8c0,
|
||
|
FCU_STATUS = 0x8c4,
|
||
|
FCU_STATUS1 = 0x8c8,
|
||
|
FCU_DRAM_ADDR_LO = 0x8cc,
|
||
|
FCU_DRAM_ADDR_HI = 0x8d0,
|
||
|
FCU_RAMBASE_ADDR_HI = 0x8d4,
|
||
|
FCU_RAMBASE_ADDR_LO = 0x8d8
|
||
|
};
|
||
|
|
||
|
enum fcu_cmd {
|
||
|
FCU_CTRL_CMD_NOOP = 0,
|
||
|
FCU_CTRL_CMD_AUTH = 1,
|
||
|
FCU_CTRL_CMD_LOAD = 2,
|
||
|
FCU_CTRL_CMD_START = 3
|
||
|
};
|
||
|
|
||
|
enum fcu_sts {
|
||
|
FCU_STS_NO_STS = 0,
|
||
|
FCU_STS_VERI_DONE = 1,
|
||
|
FCU_STS_LOAD_DONE = 2,
|
||
|
FCU_STS_VERI_FAIL = 3,
|
||
|
FCU_STS_LOAD_FAIL = 4,
|
||
|
FCU_STS_BUSY = 5
|
||
|
};
|
||
|
#define UA_ECS (0x1 << 31)
|
||
|
#define ACS_ABO_BITPOS 31
|
||
|
#define ACS_ACNO 0x7
|
||
|
#define CE_ENABLE_BITPOS 0x8
|
||
|
#define CE_LMADDR_0_GLOBAL_BITPOS 16
|
||
|
#define CE_LMADDR_1_GLOBAL_BITPOS 17
|
||
|
#define CE_NN_MODE_BITPOS 20
|
||
|
#define CE_REG_PAR_ERR_BITPOS 25
|
||
|
#define CE_BREAKPOINT_BITPOS 27
|
||
|
#define CE_CNTL_STORE_PARITY_ERROR_BITPOS 29
|
||
|
#define CE_INUSE_CONTEXTS_BITPOS 31
|
||
|
#define CE_NN_MODE (0x1 << CE_NN_MODE_BITPOS)
|
||
|
#define CE_INUSE_CONTEXTS (0x1 << CE_INUSE_CONTEXTS_BITPOS)
|
||
|
#define XCWE_VOLUNTARY (0x1)
|
||
|
#define LCS_STATUS (0x1)
|
||
|
#define MMC_SHARE_CS_BITPOS 2
|
||
|
#define GLOBAL_CSR 0xA00
|
||
|
#define FCU_CTRL_AE_POS 0x8
|
||
|
#define FCU_AUTH_STS_MASK 0x7
|
||
|
#define FCU_STS_DONE_POS 0x9
|
||
|
#define FCU_STS_AUTHFWLD_POS 0X8
|
||
|
#define FCU_LOADED_AE_POS 0x16
|
||
|
#define FW_AUTH_WAIT_PERIOD 10
|
||
|
#define FW_AUTH_MAX_RETRY 300
|
||
|
|
||
|
#define SET_CAP_CSR(handle, csr, val) \
|
||
|
ADF_CSR_WR(handle->hal_cap_g_ctl_csr_addr_v, csr, val)
|
||
|
#define GET_CAP_CSR(handle, csr) \
|
||
|
ADF_CSR_RD(handle->hal_cap_g_ctl_csr_addr_v, csr)
|
||
|
#define SET_GLB_CSR(handle, csr, val) SET_CAP_CSR(handle, csr + GLOBAL_CSR, val)
|
||
|
#define GET_GLB_CSR(handle, csr) GET_CAP_CSR(handle, GLOBAL_CSR + csr)
|
||
|
#define AE_CSR(handle, ae) \
|
||
|
((char __iomem *)handle->hal_cap_ae_local_csr_addr_v + \
|
||
|
((ae & handle->hal_handle->ae_mask) << 12))
|
||
|
#define AE_CSR_ADDR(handle, ae, csr) (AE_CSR(handle, ae) + (0x3ff & csr))
|
||
|
#define SET_AE_CSR(handle, ae, csr, val) \
|
||
|
ADF_CSR_WR(AE_CSR_ADDR(handle, ae, csr), 0, val)
|
||
|
#define GET_AE_CSR(handle, ae, csr) ADF_CSR_RD(AE_CSR_ADDR(handle, ae, csr), 0)
|
||
|
#define AE_XFER(handle, ae) \
|
||
|
((char __iomem *)handle->hal_cap_ae_xfer_csr_addr_v + \
|
||
|
((ae & handle->hal_handle->ae_mask) << 12))
|
||
|
#define AE_XFER_ADDR(handle, ae, reg) (AE_XFER(handle, ae) + \
|
||
|
((reg & 0xff) << 2))
|
||
|
#define SET_AE_XFER(handle, ae, reg, val) \
|
||
|
ADF_CSR_WR(AE_XFER_ADDR(handle, ae, reg), 0, val)
|
||
|
#define SRAM_WRITE(handle, addr, val) \
|
||
|
ADF_CSR_WR(handle->hal_sram_addr_v, addr, val)
|
||
|
#endif
|