| /* |
| * Copyright (C) 2016 Cavium, Inc. |
| * |
| * 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. |
| */ |
| |
| #ifndef __CPTPF_H |
| #define __CPTPF_H |
| |
| #include "cpt_common.h" |
| |
| #define CSR_DELAY 30 |
| #define CPT_MAX_CORE_GROUPS 8 |
| #define CPT_MAX_SE_CORES 10 |
| #define CPT_MAX_AE_CORES 6 |
| #define CPT_MAX_TOTAL_CORES (CPT_MAX_SE_CORES + CPT_MAX_AE_CORES) |
| #define CPT_MAX_VF_NUM 16 |
| #define CPT_PF_MSIX_VECTORS 3 |
| #define CPT_PF_INT_VEC_E_MBOXX(a) (0x02 + (a)) |
| #define CPT_UCODE_VERSION_SZ 32 |
| struct cpt_device; |
| |
| struct microcode { |
| u8 is_mc_valid; |
| u8 is_ae; |
| u8 group; |
| u8 num_cores; |
| u32 code_size; |
| u64 core_mask; |
| u8 version[CPT_UCODE_VERSION_SZ]; |
| /* Base info */ |
| dma_addr_t phys_base; |
| void *code; |
| }; |
| |
| struct cpt_vf_info { |
| u8 state; |
| u8 priority; |
| u8 id; |
| u32 qlen; |
| }; |
| |
| /** |
| * cpt device structure |
| */ |
| struct cpt_device { |
| u16 flags; /* Flags to hold device status bits */ |
| u8 num_vf_en; /* Number of VFs enabled (0...CPT_MAX_VF_NUM) */ |
| struct cpt_vf_info vfinfo[CPT_MAX_VF_NUM]; /* Per VF info */ |
| |
| void __iomem *reg_base; /* Register start address */ |
| struct pci_dev *pdev; /* pci device handle */ |
| |
| struct microcode mcode[CPT_MAX_CORE_GROUPS]; |
| u8 next_mc_idx; /* next microcode index */ |
| u8 next_group; |
| u8 max_se_cores; |
| u8 max_ae_cores; |
| }; |
| |
| void cpt_mbox_intr_handler(struct cpt_device *cpt, int mbx); |
| #endif /* __CPTPF_H */ |