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