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_ */ 55