xref: /openbmc/linux/drivers/misc/sram.h (revision 03638e62)
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_partition {
9 	void __iomem *base;
10 
11 	struct gen_pool *pool;
12 	struct bin_attribute battr;
13 	struct mutex lock;
14 	struct list_head list;
15 };
16 
17 struct sram_dev {
18 	struct device *dev;
19 	void __iomem *virt_base;
20 
21 	struct gen_pool *pool;
22 	struct clk *clk;
23 
24 	struct sram_partition *partition;
25 	u32 partitions;
26 };
27 
28 struct sram_reserve {
29 	struct list_head list;
30 	u32 start;
31 	u32 size;
32 	bool export;
33 	bool pool;
34 	bool protect_exec;
35 	const char *label;
36 };
37 
38 #ifdef CONFIG_SRAM_EXEC
39 int sram_check_protect_exec(struct sram_dev *sram, struct sram_reserve *block,
40 			    struct sram_partition *part);
41 int sram_add_protect_exec(struct sram_partition *part);
42 #else
43 static inline int sram_check_protect_exec(struct sram_dev *sram,
44 					  struct sram_reserve *block,
45 					  struct sram_partition *part)
46 {
47 	return -ENODEV;
48 }
49 
50 static inline int sram_add_protect_exec(struct sram_partition *part)
51 {
52 	return -ENODEV;
53 }
54 #endif /* CONFIG_SRAM_EXEC */
55 #endif /* __SRAM_H */
56