1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Defines for the SRAM driver 4 */ 5 #ifndef __SRAM_H 6 #define __SRAM_H 7 8 struct sram_config { 9 int (*init)(void); 10 bool map_only_reserved; 11 }; 12 13 struct sram_partition { 14 void __iomem *base; 15 16 struct gen_pool *pool; 17 struct bin_attribute battr; 18 struct mutex lock; 19 struct list_head list; 20 }; 21 22 struct sram_dev { 23 const struct sram_config *config; 24 25 struct device *dev; 26 void __iomem *virt_base; 27 bool no_memory_wc; 28 29 struct gen_pool *pool; 30 struct clk *clk; 31 32 struct sram_partition *partition; 33 u32 partitions; 34 }; 35 36 struct sram_reserve { 37 struct list_head list; 38 u32 start; 39 u32 size; 40 struct resource res; 41 bool export; 42 bool pool; 43 bool protect_exec; 44 const char *label; 45 }; 46 47 #ifdef CONFIG_SRAM_EXEC 48 int sram_check_protect_exec(struct sram_dev *sram, struct sram_reserve *block, 49 struct sram_partition *part); 50 int sram_add_protect_exec(struct sram_partition *part); 51 #else 52 static inline int sram_check_protect_exec(struct sram_dev *sram, 53 struct sram_reserve *block, 54 struct sram_partition *part) 55 { 56 return -ENODEV; 57 } 58 59 static inline int sram_add_protect_exec(struct sram_partition *part) 60 { 61 return -ENODEV; 62 } 63 #endif /* CONFIG_SRAM_EXEC */ 64 #endif /* __SRAM_H */ 65