diff options
Diffstat (limited to 'include/linux/mtd/partitions.h')
-rw-r--r-- | include/linux/mtd/partitions.h | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/include/linux/mtd/partitions.h b/include/linux/mtd/partitions.h index 3a6f0372fc96..2475228c1158 100644 --- a/include/linux/mtd/partitions.h +++ b/include/linux/mtd/partitions.h | |||
@@ -24,7 +24,9 @@ | |||
24 | * will extend to the end of the master MTD device. | 24 | * will extend to the end of the master MTD device. |
25 | * offset: absolute starting position within the master MTD device; if | 25 | * offset: absolute starting position within the master MTD device; if |
26 | * defined as MTDPART_OFS_APPEND, the partition will start where the | 26 | * defined as MTDPART_OFS_APPEND, the partition will start where the |
27 | * previous one ended; if MTDPART_OFS_NXTBLK, at the next erase block. | 27 | * previous one ended; if MTDPART_OFS_NXTBLK, at the next erase block; |
28 | * if MTDPART_OFS_RETAIN, consume as much as possible, leaving size | ||
29 | * after the end of partition. | ||
28 | * mask_flags: contains flags that have to be masked (removed) from the | 30 | * mask_flags: contains flags that have to be masked (removed) from the |
29 | * master MTD flag set for the corresponding MTD partition. | 31 | * master MTD flag set for the corresponding MTD partition. |
30 | * For example, to force a read-only partition, simply adding | 32 | * For example, to force a read-only partition, simply adding |
@@ -42,12 +44,25 @@ struct mtd_partition { | |||
42 | struct nand_ecclayout *ecclayout; /* out of band layout for this partition (NAND only) */ | 44 | struct nand_ecclayout *ecclayout; /* out of band layout for this partition (NAND only) */ |
43 | }; | 45 | }; |
44 | 46 | ||
47 | #define MTDPART_OFS_RETAIN (-3) | ||
45 | #define MTDPART_OFS_NXTBLK (-2) | 48 | #define MTDPART_OFS_NXTBLK (-2) |
46 | #define MTDPART_OFS_APPEND (-1) | 49 | #define MTDPART_OFS_APPEND (-1) |
47 | #define MTDPART_SIZ_FULL (0) | 50 | #define MTDPART_SIZ_FULL (0) |
48 | 51 | ||
49 | 52 | ||
50 | struct mtd_info; | 53 | struct mtd_info; |
54 | struct device_node; | ||
55 | |||
56 | /** | ||
57 | * struct mtd_part_parser_data - used to pass data to MTD partition parsers. | ||
58 | * @origin: for RedBoot, start address of MTD device | ||
59 | * @of_node: for OF parsers, device node containing partitioning information | ||
60 | */ | ||
61 | struct mtd_part_parser_data { | ||
62 | unsigned long origin; | ||
63 | struct device_node *of_node; | ||
64 | }; | ||
65 | |||
51 | 66 | ||
52 | /* | 67 | /* |
53 | * Functions dealing with the various ways of partitioning the space | 68 | * Functions dealing with the various ways of partitioning the space |
@@ -57,37 +72,12 @@ struct mtd_part_parser { | |||
57 | struct list_head list; | 72 | struct list_head list; |
58 | struct module *owner; | 73 | struct module *owner; |
59 | const char *name; | 74 | const char *name; |
60 | int (*parse_fn)(struct mtd_info *, struct mtd_partition **, unsigned long); | 75 | int (*parse_fn)(struct mtd_info *, struct mtd_partition **, |
76 | struct mtd_part_parser_data *); | ||
61 | }; | 77 | }; |
62 | 78 | ||
63 | extern int register_mtd_parser(struct mtd_part_parser *parser); | 79 | extern int register_mtd_parser(struct mtd_part_parser *parser); |
64 | extern int deregister_mtd_parser(struct mtd_part_parser *parser); | 80 | extern int deregister_mtd_parser(struct mtd_part_parser *parser); |
65 | extern int parse_mtd_partitions(struct mtd_info *master, const char **types, | ||
66 | struct mtd_partition **pparts, unsigned long origin); | ||
67 | |||
68 | #define put_partition_parser(p) do { module_put((p)->owner); } while(0) | ||
69 | |||
70 | struct device; | ||
71 | struct device_node; | ||
72 | |||
73 | #ifdef CONFIG_MTD_OF_PARTS | ||
74 | int __devinit of_mtd_parse_partitions(struct device *dev, | ||
75 | struct device_node *node, | ||
76 | struct mtd_partition **pparts); | ||
77 | #else | ||
78 | static inline int of_mtd_parse_partitions(struct device *dev, | ||
79 | struct device_node *node, | ||
80 | struct mtd_partition **pparts) | ||
81 | { | ||
82 | return 0; | ||
83 | } | ||
84 | #endif | ||
85 | |||
86 | #ifdef CONFIG_MTD_CMDLINE_PARTS | ||
87 | static inline int mtd_has_cmdlinepart(void) { return 1; } | ||
88 | #else | ||
89 | static inline int mtd_has_cmdlinepart(void) { return 0; } | ||
90 | #endif | ||
91 | 81 | ||
92 | int mtd_is_partition(struct mtd_info *mtd); | 82 | int mtd_is_partition(struct mtd_info *mtd); |
93 | int mtd_add_partition(struct mtd_info *master, char *name, | 83 | int mtd_add_partition(struct mtd_info *master, char *name, |