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?