[OpenWrt-Devel] [PATCH][RESEND] ath79: Add compatible strings for tp-link partition parser

Chuanhong Guo gch981213 at gmail.com
Tue May 29 11:20:48 EDT 2018


After reading the code I found an ugly way to pass art location by defining
meaningless nodes somewhere with only a label inside it.
So my final dts here:
     spiflash: spi-nor at 0 {
         #address-cells = <1>;
         #size-cells = <1>;
         compatible = "jedec,spi-nor";
         spi-max-frequency = <104000000>;
         reg = <0>;
         partitions {
             compatible = "tp-link";

             uboot: whatever1 {
                 label = "u-boot";
             };

             art: whatever2 {
                 label = "art";
             };
         };
     };

Still wondering if there could be other better solutions for this :(
Chuanhong Guo <gch981213 at gmail.com> 于2018年5月29日周二 下午11:07写道:

> This patch allows using tp-link parser by defining 'partitions' node
inside m25p80 node as follow:
> partitions {
>          compatible = "tp-link";
> };

> Signed-off-by: Chuanhong Guo <gch981213 at gmail.com>
> ---
> Resend this patch due to the missing commit message :(
>   .../ath79/files/drivers/mtd/tplinkpart.c      | 23 +++++++++++++++++++
>   1 file changed, 23 insertions(+)

> diff --git a/target/linux/ath79/files/drivers/mtd/tplinkpart.c
b/target/linux/ath79/files/drivers/mtd/tplinkpart.c
> index 1b94163b83..8da5c4168e 100644
> --- a/target/linux/ath79/files/drivers/mtd/tplinkpart.c
> +++ b/target/linux/ath79/files/drivers/mtd/tplinkpart.c
> @@ -9,6 +9,7 @@

>   #include <linux/kernel.h>
>   #include <linux/module.h>
> +#include <linux/of.h>
>   #include <linux/slab.h>
>   #include <linux/vmalloc.h>
>   #include <linux/magic.h>
> @@ -209,16 +210,36 @@ static int tplink_parse_64k_partitions(struct
mtd_info *master,
>                                                TPLINK_64K_KERNEL_OFFS);
>   }

> +#ifdef CONFIG_OF
> +static const struct of_device_id parse_tplink_match_table[] = {
> +       { .compatible = "tp-link" },
> +       {},
> +};
> +MODULE_DEVICE_TABLE(of, parse_tplink_match_table);
> +
> +static const struct of_device_id parse_tplink_64k_match_table[] = {
> +       { .compatible = "tp-link-64k" },
> +       {},
> +};
> +MODULE_DEVICE_TABLE(of, parse_tplink_64k_match_table);
> +#endif
> +
>   static struct mtd_part_parser tplink_parser = {
>          .owner          = THIS_MODULE,
>          .parse_fn       = tplink_parse_partitions,
>          .name           = "tp-link",
> +#ifdef CONFIG_OF
> +       .of_match_table = parse_tplink_match_table,
> +#endif
>   };

>   static struct mtd_part_parser tplink_64k_parser = {
>          .owner          = THIS_MODULE,
>          .parse_fn       = tplink_parse_64k_partitions,
>          .name           = "tp-link-64k",
> +#ifdef CONFIG_OF
> +       .of_match_table = parse_tplink_64k_match_table,
> +#endif
>   };

>   static int __init tplink_parser_init(void)
> @@ -233,3 +254,5 @@ module_init(tplink_parser_init);

>   MODULE_LICENSE("GPL v2");
>   MODULE_AUTHOR("Gabor Juhos <juhosg at openwrt.org>");
> +MODULE_ALIAS("tp-link");
> +MODULE_ALIAS("tp-link-64k");
> --
> 2.17.0

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/listinfo/openwrt-devel


More information about the openwrt-devel mailing list