File Index
Files and directories
Sign in
FILE

hinic3_hwdev.h

File preview with syntax highlighting.

linux-6.19.14/drivers/net/ethernet/huawei/hinic3/hinic3_hwdev.h C
 1/* SPDX-License-Identifier: GPL-2.0 */
 2/* Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved. */
 3
 4#ifndef _HINIC3_HWDEV_H_
 5#define _HINIC3_HWDEV_H_
 6
 7#include <linux/auxiliary_bus.h>
 8#include <linux/pci.h>
 9
10#include "hinic3_hw_intf.h"
11
12struct hinic3_cmdqs;
13struct hinic3_hwif;
14
15enum hinic3_event_service_type {
16	HINIC3_EVENT_SRV_COMM = 0,
17	HINIC3_EVENT_SRV_NIC  = 1
18};
19
20#define HINIC3_SRV_EVENT_TYPE(svc, type)    (((svc) << 16) | (type))
21
22/* driver-specific data of pci_dev */
23struct hinic3_pcidev {
24	struct pci_dev       *pdev;
25	struct hinic3_hwdev  *hwdev;
26	/* Auxiliary devices */
27	struct hinic3_adev   *hadev[HINIC3_SERVICE_T_MAX];
28
29	void __iomem         *cfg_reg_base;
30	void __iomem         *intr_reg_base;
31	void __iomem         *db_base;
32	u64                  db_dwqe_len;
33	u64                  db_base_phy;
34
35	/* lock for attach/detach uld */
36	struct mutex         pdev_mutex;
37	unsigned long        state;
38};
39
40struct hinic3_hwdev {
41	struct hinic3_pcidev        *adapter;
42	struct pci_dev              *pdev;
43	struct device               *dev;
44	int                         dev_id;
45	struct hinic3_hwif          *hwif;
46	struct hinic3_cfg_mgmt_info *cfg_mgmt;
47	struct hinic3_aeqs          *aeqs;
48	struct hinic3_ceqs          *ceqs;
49	struct hinic3_mbox          *mbox;
50	struct hinic3_cmdqs         *cmdqs;
51	struct workqueue_struct     *workq;
52	/* protect channel init and uninit */
53	spinlock_t                  channel_lock;
54	u64                         features[COMM_MAX_FEATURE_QWORD];
55	u32                         wq_page_size;
56	u8                          max_cmdq;
57	ulong                       func_state;
58};
59
60struct hinic3_event_info {
61	/* enum hinic3_event_service_type */
62	u16 service;
63	u16 type;
64	u8  event_data[104];
65};
66
67struct hinic3_adev {
68	struct auxiliary_device  adev;
69	struct hinic3_hwdev      *hwdev;
70	enum hinic3_service_type svc_type;
71
72	void (*event)(struct auxiliary_device *adev,
73		      struct hinic3_event_info *event);
74};
75
76int hinic3_init_hwdev(struct pci_dev *pdev);
77void hinic3_free_hwdev(struct hinic3_hwdev *hwdev);
78
79void hinic3_set_api_stop(struct hinic3_hwdev *hwdev);
80
81#endif
~/ Read-only file preview.