2026-01-21 18:59:54 +08:00

80 lines
1.7 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/* Huawei Hifc PCI Express Linux driver
* Copyright(c) 2017 Huawei Technologies Co., Ltd
*
*/
#ifndef HIFC_LLD_H_
#define HIFC_LLD_H_
#include "unf_common.h"
#define HIFC_PCI_VENDOR_ID (0x19e5)
#define HIFC_DRV_NAME "hifc_sdk"
#define HIFC_CHIP_NAME "hifc"
#define HIFC_DRV_VERSION UNF_FC_VERSION
struct hifc_lld_dev {
struct pci_dev *pdev;
void *hwdev;
};
extern struct list_head g_hinic_chip_list;
/* Structure pcidev private*/
struct hifc_pcidev {
struct pci_dev *pcidev;
void *hwdev;
struct card_node *chip_node;
struct hifc_lld_dev lld_dev;
/* Record the service object address,
* such as hifc_dev and toe_dev, fc_dev
*/
void *uld_dev;
/* Record the service object name */
char uld_dev_name[IFNAMSIZ];
/* It is a the global variable for driver to manage
* all function device linked list
*/
struct list_head node;
void __iomem *cfg_reg_base;
void __iomem *intr_reg_base;
u64 db_base_phy;
void __iomem *db_base;
#if defined(__aarch64__)
void __iomem *dwqe_mapping;
#else
struct io_mapping *dwqe_mapping;
#endif
/* lock for attach/detach uld */
struct mutex pdev_mutex;
u32 init_state;
/* setted when uld driver processing event */
unsigned long state;
struct pci_device_id id;
unsigned long flag;
};
enum {
HIFC_FUNC_IN_REMOVE = BIT(0),
HIFC_FUNC_PRB_ERR = BIT(1),
HIFC_FUNC_PRB_DELAY = BIT(2),
};
enum hifc_init_state {
HIFC_INIT_STATE_NONE,
HIFC_INIT_STATE_PCI_INITED,
HIFC_INIT_STATE_HW_IF_INITED,
HIFC_INIT_STATE_HW_PART_INITED,
HIFC_INIT_STATE_HWDEV_INITED,
HIFC_INIT_STATE_DBGTOOL_INITED,
HIFC_INIT_STATE_ALL_INITED,
};
void lld_dev_put(void);
void lld_dev_hold(void);
#endif