TP-Link C2600 - missing "default-mac" MTD partition in snapshot

Hey @Ansuel

I've found the reason for the missing partition and made a simple workaround.

The trouble starts with the problematic partition having compatible = "nvmem-cells"; defined in dts. When enumerating partitions mtd eventually calls parse_fixed_partitions function which calls node_has_compatible function defined in /drivers/mtd/parsers/ofpart_core.c like this:

static bool node_has_compatible(struct device_node *pp)
{
	return of_get_property(pp, "compatible", NULL);
}

The addition of compatible = "nvmem-cells"; makes node_has_compatible to return true and for that reason parse_fixed_partitions skips that partition and mtd in return doesn't call nvmem_register and the whole thing breaks as described earlier.

I've rewritten the node_has_compatible function like so:

static bool node_has_compatible(struct device_node *pp)
{
        return of_device_is_compatible(pp, "nvmem-cells") ? false : of_get_property(pp, "compatible", NULL);
}

The code simply ignores compatible = "nvmem-cells"; and this fixes the LAN on my C2600.

I'm not sure if there should be a more appropriate way to get the partition to register into nvmem subsystem?