+Rafal On Thu, 16 Aug 2018 17:30:26 +0200 Miquel Raynal <[email protected]> wrote:
> Instead of collecting partitions in a flat list, create a hierarchy > within the mtd_info structure: use a partitions list to keep track of > the partitions of an MTD device (which might be itself a partition of > another MTD device), a pointer to the parent device (NULL when the MTD > device is the root one, not a partition). > > By also saving directly in mtd_info the offset of the partition, we > can get rid of the mtd_part structure. That's also something I'd like to have in Linux ;-). But you'll probably have to sync with Rafal before porting that to Linux. > > Signed-off-by: Miquel Raynal <[email protected]> > --- [...] > diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h > index 755c785416..3902c9ec08 100644 > --- a/include/linux/mtd/mtd.h > +++ b/include/linux/mtd/mtd.h > @@ -307,6 +307,15 @@ struct mtd_info { > struct udevice *dev; > #endif > int usecount; > + > + /* MTD devices do not have any parent. MTD partitions do. */ > + struct mtd_info *parent; Add a blank line after each declaration. > + /* Offset of the partition relatively to the parent offset */ Say that it must be 0 for real MTD devices (those that are not partitions). > + u64 offset; > + /* List node for this MTD device */ /* * List node used to add an MTD partition to the parent * partition list. */ > + struct list_head node; > + /* List of this MTD devices partitions (if any) */ /* * 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) > @@ -334,6 +343,16 @@ static inline const struct device_node > *mtd_get_of_node(struct mtd_info *mtd) > } > #endif > > +static inline bool mtd_is_partition(const struct mtd_info *mtd) > +{ > + return mtd->parent; > +} > + > +static inline struct mtd_info *mtd_part_node_to_info(struct list_head *n) > +{ > + return container_of(n, struct mtd_info, node); > +} Do you really need that one? Don't we have a list_for_each_entry() in uboot? _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

