#include <linux/compat.h>
#include <mtd/mtd-abi.h>
#include <linux/errno.h>
+#include <linux/list.h>
#include <div64.h>
#if IS_ENABLED(CONFIG_DM)
#include <dm/device.h>
struct udevice *dev;
#endif
int usecount;
+
+ /* MTD devices do not have any parent. MTD partitions do. */
+ struct mtd_info *parent;
+
+ /*
+ * Offset of the partition relatively to the parent offset.
+ * Is 0 for real MTD devices (ie. not partitions).
+ */
+ u64 offset;
+
+ /*
+ * List node used to add an MTD partition to the parent
+ * partition list.
+ */
+ struct list_head node;
+
+ /*
+ * List of partitions attached to this MTD device (the parent
+ * MTD device can itself be a partition).
+ */
+ struct list_head partitions;
};
#if IS_ENABLED(CONFIG_DM)
}
#endif
+static inline bool mtd_is_partition(const struct mtd_info *mtd)
+{
+ return mtd->parent;
+}
+
+static inline bool mtd_has_partitions(const struct mtd_info *mtd)
+{
+ return !list_empty(&mtd->partitions);
+}
+
+bool mtd_partitions_used(struct mtd_info *master);
+
int mtd_ooblayout_ecc(struct mtd_info *mtd, int section,
struct mtd_oob_region *oobecc);
int mtd_ooblayout_find_eccregion(struct mtd_info *mtd, int eccbyte,
/* drivers/mtd/mtdcore.h */
int add_mtd_device(struct mtd_info *mtd);
int del_mtd_device(struct mtd_info *mtd);
+
+#ifdef CONFIG_MTD_PARTITIONS
int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int);
int del_mtd_partitions(struct mtd_info *);
+#else
+static inline int add_mtd_partitions(struct mtd_info *mtd,
+ const struct mtd_partition *parts,
+ int nparts)
+{
+ return 0;
+}
+
+static inline int del_mtd_partitions(struct mtd_info *mtd)
+{
+ return 0;
+}
+#endif
struct mtd_info *__mtd_next_device(int i);
#define mtd_for_each_device(mtd) \
void mtd_get_len_incl_bad(struct mtd_info *mtd, uint64_t offset,
const uint64_t length, uint64_t *len_incl_bad,
int *truncated);
+bool mtd_dev_list_updated(void);
+
+/* drivers/mtd/mtd_uboot.c */
+int mtd_search_alternate_name(const char *mtdname, char *altname,
+ unsigned int max_len);
+
#endif
#endif /* __MTD_MTD_H__ */