1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 16:52:14 +02:00

fdt: Add fdt_fixup_nor_flash_size() to fixup NOR FLASH size in dtb

This function can be used to update the size in the "reg" property
of the NOR FLASH device nodes. This is necessary for boards with
non-fixed NOR FLASH sizes.

Signed-off-by: Stefan Roese <sr@denx.de>
Acked-by: Gerald Van Baren <vanbaren@cideas.com>
Acked-by: Wolfgang Denk <wd@denx.de>
This commit is contained in:
Stefan Roese
2009-10-21 11:59:52 +02:00
parent 76706cb86b
commit 30d45c0d3e
2 changed files with 46 additions and 0 deletions

View File

@@ -692,3 +692,47 @@ int fdt_pci_dma_ranges(void *blob, int phb_off, struct pci_controller *hose) {
return 0;
}
#endif
#ifdef CONFIG_FDT_FIXUP_NOR_FLASH_SIZE
/*
* This function can be used to update the size in the "reg" property
* of the NOR FLASH device nodes. This is necessary for boards with
* non-fixed NOR FLASH sizes.
*/
int fdt_fixup_nor_flash_size(void *blob, int cs, u32 size)
{
char compat[][16] = { "cfi-flash", "jedec-flash" };
int off;
int len;
struct fdt_property *prop;
u32 *reg;
int i;
for (i = 0; i < 2; i++) {
off = fdt_node_offset_by_compatible(blob, -1, compat[i]);
while (off != -FDT_ERR_NOTFOUND) {
/*
* Found one compatible node, now check if this one
* has the correct CS
*/
prop = fdt_get_property_w(blob, off, "reg", &len);
if (prop) {
reg = (u32 *)&prop->data[0];
if (reg[0] == cs) {
reg[2] = size;
fdt_setprop(blob, off, "reg", reg,
3 * sizeof(u32));
return 0;
}
}
/* Move to next compatible node */
off = fdt_node_offset_by_compatible(blob, off,
compat[i]);
}
}
return -1;
}
#endif