xref: /linux/drivers/net/ethernet/qualcomm/ppe/ppe.h (revision 07fdad3a93756b872da7b53647715c48d0f4a2d0)
1 /* SPDX-License-Identifier: GPL-2.0-only
2  *
3  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4  */
5 
6 #ifndef __PPE_H__
7 #define __PPE_H__
8 
9 #include <linux/compiler.h>
10 #include <linux/interconnect.h>
11 
12 struct device;
13 struct regmap;
14 struct dentry;
15 
16 /**
17  * struct ppe_device - PPE device private data.
18  * @dev: PPE device structure.
19  * @regmap: PPE register map.
20  * @clk_rate: PPE clock rate.
21  * @num_ports: Number of PPE ports.
22  * @debugfs_root: Debugfs root entry.
23  * @num_icc_paths: Number of interconnect paths.
24  * @icc_paths: Interconnect path array.
25  *
26  * PPE device is the instance of PPE hardware, which is used to
27  * configure PPE packet process modules such as BM (buffer management),
28  * QM (queue management), and scheduler.
29  */
30 struct ppe_device {
31 	struct device *dev;
32 	struct regmap *regmap;
33 	unsigned long clk_rate;
34 	unsigned int num_ports;
35 	struct dentry *debugfs_root;
36 	unsigned int num_icc_paths;
37 	struct icc_bulk_data icc_paths[] __counted_by(num_icc_paths);
38 };
39 #endif
40