Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[sfrench/cifs-2.6.git] / include / linux / pruss_driver.h
diff --git a/include/linux/pruss_driver.h b/include/linux/pruss_driver.h
new file mode 100644 (file)
index 0000000..ecfded3
--- /dev/null
@@ -0,0 +1,54 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * PRU-ICSS sub-system specific definitions
+ *
+ * Copyright (C) 2014-2020 Texas Instruments Incorporated - http://www.ti.com/
+ *     Suman Anna <s-anna@ti.com>
+ */
+
+#ifndef _PRUSS_DRIVER_H_
+#define _PRUSS_DRIVER_H_
+
+#include <linux/types.h>
+
+/*
+ * enum pruss_mem - PRUSS memory range identifiers
+ */
+enum pruss_mem {
+       PRUSS_MEM_DRAM0 = 0,
+       PRUSS_MEM_DRAM1,
+       PRUSS_MEM_SHRD_RAM2,
+       PRUSS_MEM_MAX,
+};
+
+/**
+ * struct pruss_mem_region - PRUSS memory region structure
+ * @va: kernel virtual address of the PRUSS memory region
+ * @pa: physical (bus) address of the PRUSS memory region
+ * @size: size of the PRUSS memory region
+ */
+struct pruss_mem_region {
+       void __iomem *va;
+       phys_addr_t pa;
+       size_t size;
+};
+
+/**
+ * struct pruss - PRUSS parent structure
+ * @dev: pruss device pointer
+ * @cfg_base: base iomap for CFG region
+ * @cfg_regmap: regmap for config region
+ * @mem_regions: data for each of the PRUSS memory regions
+ * @core_clk_mux: clk handle for PRUSS CORE_CLK_MUX
+ * @iep_clk_mux: clk handle for PRUSS IEP_CLK_MUX
+ */
+struct pruss {
+       struct device *dev;
+       void __iomem *cfg_base;
+       struct regmap *cfg_regmap;
+       struct pruss_mem_region mem_regions[PRUSS_MEM_MAX];
+       struct clk *core_clk_mux;
+       struct clk *iep_clk_mux;
+};
+
+#endif /* _PRUSS_DRIVER_H_ */