Messages in this thread |  | | From | Maxim Kiselev <> | Date | Sat, 10 Dec 2022 12:52:12 +0300 | Subject | Fwd: nvmem-cells regression after adding 'call of_platform_populate() for MTD partitions' |
| |
Hi, friends.
After applying this commit 'mtd: call of_platform_populate() for MTD partitions' (bcdf0315), I faced with a problem that my ethernet device can't be probed because it wait when 'nvmem-cells' device will be probed first.
But there is no such driver which is compatible with 'nvmem-cells' because 'nvmem-cells' is just a mark used by the 'mtd_nvmem_add' function.
So this leads to appeating of unresolved dependency for the ethernet device. And that's why the ethernet device can't be added and probed.
Here is a part of kernel log when spi flash probe start:
> device: 'spi0': device_add > device: 'spi0.0': device_add > spi-nor spi0.0: mx66l51235f (65536 Kbytes) > 7 fixed-partitions partitions found on MTD device spi0.0
After 'm25p80' probe 'f1070000.ethernet' linked to 'partition@1' :
> device: 'f1010600.spi:m25p80@0: partitions:partition@1': device_add > device: 'platform:f1010600.spi:m25p80@0:partitions:partition@1--platform:f1070000.ethernet': device_add > devices_kset: Moving f1070000.ethernet to end of list > platform f1070000.ethernet: Linked as a consumer to f1010600.spi:m25p80@0:partitions:partition@1 > ethernet@70000 Dropping the fwnode link to partition@1
And as a result I got `-EPROBE_DEFER` for `f1070000.ethernet`
> platform f1070000.ethernet: error -EPROBE_DEFER: supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
Here is a part of my device tree:
enet1: ethernet@70000 { status = "okay"; nvmem-cells = <&macaddr>; nvmem-cell-names = "mac-address"; phy-mode = "rgmii"; phy = <&phy0>; };
spi@10600 { status = "okay";
m25p80@0 { compatible = "mx66l51235l"; reg = <0>; #address-cells = <1>; #size-cells = <1>;
partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>;
partition@0 { reg = <0x00000000 0x000080000>; label = "SPI.U_BOOT"; };
partition@1 { compatible = "nvmem-cells"; reg = <0x000A0000 0x00020000>; label = "SPI.INV_INFO"; #address-cells = <1>; #size-cells = <1>; ranges = <0 0x000A0000 0x00020000>;
macaddr: mac@6 { reg = <0x6 0x6>; }; };
}; }; };
In the example above 'ethernet@70000' requires 'macaddr: mac@6' which is located inside mtd 'partition@1' of 'm25p80@0' spi flash.
|  |