+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

Reply via email to