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 31 struct sram_partition *partition; 32 u32 partitions; 33 }; 34 35 struct sram_reserve { 36 struct list_head list; 37 u32 start; 38 u32 size; 39 struct resource res; 40 bool export; 41 bool pool; 42 bool protect_exec; 43 const char *label; 44 }; 45 46 #ifdef CONFIG_SRAM_EXEC 47 int sram_check_protect_exec(struct sram_dev *sram, struct sram_reserve *block, 48 struct sram_partition *part); 49 int sram_add_protect_exec(struct sram_partition *part); 50 #else 51 static inline int sram_check_protect_exec(struct sram_dev *sram, 52 struct sram_reserve *block, 53 struct sram_partition *part) 54 { 55 return -ENODEV; 56 } 57 58 static inline int sram_add_protect_exec(struct sram_partition *part) 59 { 60 return -ENODEV; 61 } 62 #endif /* CONFIG_SRAM_EXEC */ 63 #endif /* __SRAM_H */ 64