Merge tag 'iio-for-5.11a' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23...
[platform/kernel/linux-starfive.git] / include / linux / pruss_driver.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * PRU-ICSS sub-system specific definitions
4  *
5  * Copyright (C) 2014-2020 Texas Instruments Incorporated - http://www.ti.com/
6  *      Suman Anna <s-anna@ti.com>
7  */
8
9 #ifndef _PRUSS_DRIVER_H_
10 #define _PRUSS_DRIVER_H_
11
12 #include <linux/types.h>
13
14 /*
15  * enum pruss_mem - PRUSS memory range identifiers
16  */
17 enum pruss_mem {
18         PRUSS_MEM_DRAM0 = 0,
19         PRUSS_MEM_DRAM1,
20         PRUSS_MEM_SHRD_RAM2,
21         PRUSS_MEM_MAX,
22 };
23
24 /**
25  * struct pruss_mem_region - PRUSS memory region structure
26  * @va: kernel virtual address of the PRUSS memory region
27  * @pa: physical (bus) address of the PRUSS memory region
28  * @size: size of the PRUSS memory region
29  */
30 struct pruss_mem_region {
31         void __iomem *va;
32         phys_addr_t pa;
33         size_t size;
34 };
35
36 /**
37  * struct pruss - PRUSS parent structure
38  * @dev: pruss device pointer
39  * @cfg_base: base iomap for CFG region
40  * @cfg_regmap: regmap for config region
41  * @mem_regions: data for each of the PRUSS memory regions
42  * @core_clk_mux: clk handle for PRUSS CORE_CLK_MUX
43  * @iep_clk_mux: clk handle for PRUSS IEP_CLK_MUX
44  */
45 struct pruss {
46         struct device *dev;
47         void __iomem *cfg_base;
48         struct regmap *cfg_regmap;
49         struct pruss_mem_region mem_regions[PRUSS_MEM_MAX];
50         struct clk *core_clk_mux;
51         struct clk *iep_clk_mux;
52 };
53
54 #endif  /* _PRUSS_DRIVER_H_ */