xref: /openbmc/linux/drivers/misc/sram.h (revision c0e72058)
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