xref: /linux/drivers/net/ethernet/qualcomm/ppe/ppe.h (revision 07fdad3a93756b872da7b53647715c48d0f4a2d0)
1353a0f1dSLuo Jie /* SPDX-License-Identifier: GPL-2.0-only
2353a0f1dSLuo Jie  *
3353a0f1dSLuo Jie  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4353a0f1dSLuo Jie  */
5353a0f1dSLuo Jie 
6353a0f1dSLuo Jie #ifndef __PPE_H__
7353a0f1dSLuo Jie #define __PPE_H__
8353a0f1dSLuo Jie 
9353a0f1dSLuo Jie #include <linux/compiler.h>
10353a0f1dSLuo Jie #include <linux/interconnect.h>
11353a0f1dSLuo Jie 
12353a0f1dSLuo Jie struct device;
13353a0f1dSLuo Jie struct regmap;
14*a2a7221dSLuo Jie struct dentry;
15353a0f1dSLuo Jie 
16353a0f1dSLuo Jie /**
17353a0f1dSLuo Jie  * struct ppe_device - PPE device private data.
18353a0f1dSLuo Jie  * @dev: PPE device structure.
19353a0f1dSLuo Jie  * @regmap: PPE register map.
20353a0f1dSLuo Jie  * @clk_rate: PPE clock rate.
21353a0f1dSLuo Jie  * @num_ports: Number of PPE ports.
22*a2a7221dSLuo Jie  * @debugfs_root: Debugfs root entry.
23353a0f1dSLuo Jie  * @num_icc_paths: Number of interconnect paths.
24353a0f1dSLuo Jie  * @icc_paths: Interconnect path array.
25353a0f1dSLuo Jie  *
26353a0f1dSLuo Jie  * PPE device is the instance of PPE hardware, which is used to
27353a0f1dSLuo Jie  * configure PPE packet process modules such as BM (buffer management),
28353a0f1dSLuo Jie  * QM (queue management), and scheduler.
29353a0f1dSLuo Jie  */
30353a0f1dSLuo Jie struct ppe_device {
31353a0f1dSLuo Jie 	struct device *dev;
32353a0f1dSLuo Jie 	struct regmap *regmap;
33353a0f1dSLuo Jie 	unsigned long clk_rate;
34353a0f1dSLuo Jie 	unsigned int num_ports;
35*a2a7221dSLuo Jie 	struct dentry *debugfs_root;
36353a0f1dSLuo Jie 	unsigned int num_icc_paths;
37353a0f1dSLuo Jie 	struct icc_bulk_data icc_paths[] __counted_by(num_icc_paths);
38353a0f1dSLuo Jie };
39353a0f1dSLuo Jie #endif
40