pruss_driver.h (1297B)
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 */ 17enum 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 */ 30struct 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 */ 45struct 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_ */