Merge tag 'leds-next-6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds
[platform/kernel/linux-rpi.git] / drivers / misc / sram.h
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 */