mtd: partition: Fix OF partition fixup
To get the number of address cells and size cells we have to use the newly created partition node, not the parent device node. The parent device node returns the address/size cells of the controller node, not the partition node. On an am335x machine this fixes the device tree passed to Linux. The situation there is: ... gpmc@50000000 { ... #address-cells = <0x2>; #size-cells = <0x1>; ranges = <0x0 0x0 0x8000000 0x10000000>; ... nand@0,0 { reg = <0x0 0x0 0x0>; #address-cells = <0x1>; #size-cells = <0x1>; ... partition@7 { label = "system"; reg = <0x220000 0x7de0000>; }; }; }; and without this patch barebox passes three bytes for partition@7's reg property instead of only two which naturally confuses Linux and yields to the system partition to start at 0 with a size of 0x220000. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Tested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
This commit is contained in:
parent
dbe6023074
commit
10e6930323
|
@ -520,8 +520,8 @@ static int of_mtd_fixup(struct device_node *root, void *ctx)
|
|||
if (!p)
|
||||
return -ENOMEM;
|
||||
|
||||
na = of_n_addr_cells(np);
|
||||
ns = of_n_size_cells(np);
|
||||
na = of_n_addr_cells(part);
|
||||
ns = of_n_size_cells(part);
|
||||
|
||||
of_write_number(tmp + len, partmtd->master_offset, na);
|
||||
len += na * 4;
|
||||
|
|
Loading…
Reference in New Issue