xref: /dpdk/drivers/common/mlx5/mlx5_common_private.h (revision ad435d3204736e8110cd3ecdf5363ae20f68e66f)
1*ad435d32SXueming Li /* SPDX-License-Identifier: BSD-3-Clause
2*ad435d32SXueming Li  * Copyright 2021 Mellanox Technologies, Ltd
3*ad435d32SXueming Li  */
4*ad435d32SXueming Li 
5*ad435d32SXueming Li #ifndef MLX5_COMMON_PRIVATE_H
6*ad435d32SXueming Li #define MLX5_COMMON_PRIVATE_H
7*ad435d32SXueming Li 
8*ad435d32SXueming Li #include <rte_pci.h>
9*ad435d32SXueming Li 
10*ad435d32SXueming Li #include "mlx5_common.h"
11*ad435d32SXueming Li 
12*ad435d32SXueming Li #ifdef __cplusplus
13*ad435d32SXueming Li extern "C" {
14*ad435d32SXueming Li #endif /* __cplusplus */
15*ad435d32SXueming Li 
16*ad435d32SXueming Li /* Common bus driver: */
17*ad435d32SXueming Li 
18*ad435d32SXueming Li struct mlx5_common_device {
19*ad435d32SXueming Li 	struct rte_device *dev;
20*ad435d32SXueming Li 	TAILQ_ENTRY(mlx5_common_device) next;
21*ad435d32SXueming Li 	uint32_t classes_loaded;
22*ad435d32SXueming Li };
23*ad435d32SXueming Li 
24*ad435d32SXueming Li int mlx5_common_dev_probe(struct rte_device *eal_dev);
25*ad435d32SXueming Li int mlx5_common_dev_remove(struct rte_device *eal_dev);
26*ad435d32SXueming Li int mlx5_common_dev_dma_map(struct rte_device *dev, void *addr, uint64_t iova,
27*ad435d32SXueming Li 			    size_t len);
28*ad435d32SXueming Li int mlx5_common_dev_dma_unmap(struct rte_device *dev, void *addr, uint64_t iova,
29*ad435d32SXueming Li 			      size_t len);
30*ad435d32SXueming Li 
31*ad435d32SXueming Li /* Common PCI bus driver: */
32*ad435d32SXueming Li 
33*ad435d32SXueming Li void mlx5_common_driver_on_register_pci(struct mlx5_class_driver *driver);
34*ad435d32SXueming Li bool mlx5_dev_pci_match(const struct mlx5_class_driver *drv,
35*ad435d32SXueming Li 			const struct rte_device *dev);
36*ad435d32SXueming Li 
37*ad435d32SXueming Li #ifdef __cplusplus
38*ad435d32SXueming Li }
39*ad435d32SXueming Li #endif /* __cplusplus */
40*ad435d32SXueming Li 
41*ad435d32SXueming Li #endif /* MLX5_COMMON_PRIVATE_H */
42