Hi Francesco, francesco@xxxxxxxxxx wrote on Fri, 2 Dec 2022 17:45:37 +0100: > On Fri, Dec 02, 2022 at 05:17:59PM +0100, Marek Vasut wrote: > > On 12/2/22 16:49, Miquel Raynal wrote: > > > , not the NAND controller node. I hope this > > > is correctly supported in U-Boot though. So if there is a NAND chip > > > subnode, I suppose U-Boot would try to create the partitions that are > > > inside, or even in the sub "partitions" container. > > > > My understanding is that U-Boot checks the nand-controller node size-cells, > > not the nand-chip{} or partitions{} subnode size-cells . > Not 100% correct. > > - U-Boot before v2022.04 updates the nand-controller{} node, no matter what. > - U-Boot starting from v2022.04 looks for `partitions{}` into the > nand-controller{} node, and creates the partition into it if found. > If not found it behaves the same way as the previous versions. > See commit 36fee2f7621e ("common: fdt_support: add support for "partitions" subnode to fdt_fixup_mtdparts()") > > I'd like to stress once more the fact that we cannot expect old U-Boot > to be updated in the field, and they will keep generating the partitions > as child of the nand-controller node whatever we do with the dts file. > > I think that this should be treated the same way as any other fixup we > might have for broken firmware, especially considering that this used to > "work" (yes, I can agree that it horrible, but I cannot change the past) > without even a warning since the imx7 support was first introduced in > the linux kernel years ago. > > > Francesco, can you please share the DT, including the U-Boot generated > > partitions, which is passed to Linux on Colibri MX7 ? I think that should > > make all confusion go away. > > The device tree part is easy, just > arch/arm/boot/dts/imx7d-colibri-eval-v3.dts. > > and the nand-controller node is coming from > > #include "imx7d.dtsi" > > plus > > &gpmi { > fsl,use-minimum-ecc; > nand-ecc-mode = "hw"; > nand-on-flash-bbt; > pinctrl-names = "default"; > pinctrl-0 = <&pinctrl_gpmi_nand>; > }; > > The partitions nodes are generated 100% by U-Boot, nothing is present in > the dts source files. I hope if you provide a NAND chip child node, the partitions are created at the right location, otherwise this is so, so wrong... > > With this DTS file as input, whatever U-Boot version is used I have the > following generated: > > root@colibri-imx7-02844233:/# ls /proc/device-tree/soc/nand-controller@33002000/ > #address-cells dma-names nand-on-flash-bbt pinctrl-0 > #size-cells dmas partition@0 pinctrl-names > assigned-clock-parents fsl,use-minimum-ecc partition@200000 reg > assigned-clocks interrupt-names partition@380000 reg-names > clock-names interrupts partition@400000 status > clocks name partition@80000 > compatible nand-ecc-mode phandle > > root@colibri-imx7-02844233:/# ls /proc/device-tree/soc/nand-controller@33002000/partition@* > /proc/device-tree/soc/nand-controller@33002000/partition@0: > label name reg > > /proc/device-tree/soc/nand-controller@33002000/partition@200000: > label name read_only reg > > /proc/device-tree/soc/nand-controller@33002000/partition@380000: > label name reg > > /proc/device-tree/soc/nand-controller@33002000/partition@400000: > label name reg > > /proc/device-tree/soc/nand-controller@33002000/partition@80000: > label name read_only reg > > Thanks, Miquèl