|
@@ -2461,27 +2461,28 @@ unsigned long flash_init(void)
|
|
|
#ifdef CONFIG_CFI_FLASH /* for driver model */
|
|
|
static int cfi_flash_probe(struct udevice *dev)
|
|
|
{
|
|
|
- void *blob = (void *)gd->fdt_blob;
|
|
|
- int node = dev_of_offset(dev);
|
|
|
const fdt32_t *cell;
|
|
|
- phys_addr_t addr;
|
|
|
- int parent, addrc, sizec;
|
|
|
+ int addrc, sizec;
|
|
|
int len, idx;
|
|
|
|
|
|
- parent = fdt_parent_offset(blob, node);
|
|
|
- fdt_support_default_count_cells(blob, parent, &addrc, &sizec);
|
|
|
- /* decode regs, there may be multiple reg tuples. */
|
|
|
- cell = fdt_getprop(blob, node, "reg", &len);
|
|
|
+ addrc = dev_read_addr_cells(dev);
|
|
|
+ sizec = dev_read_size_cells(dev);
|
|
|
+
|
|
|
+ /* decode regs; there may be multiple reg tuples. */
|
|
|
+ cell = dev_read_prop(dev, "reg", &len);
|
|
|
if (!cell)
|
|
|
return -ENOENT;
|
|
|
idx = 0;
|
|
|
len /= sizeof(fdt32_t);
|
|
|
while (idx < len) {
|
|
|
- addr = fdt_translate_address((void *)blob,
|
|
|
- node, cell + idx);
|
|
|
+ phys_addr_t addr;
|
|
|
+
|
|
|
+ addr = dev_translate_address(dev, cell + idx);
|
|
|
+
|
|
|
flash_info[cfi_flash_num_flash_banks].dev = dev;
|
|
|
flash_info[cfi_flash_num_flash_banks].base = addr;
|
|
|
cfi_flash_num_flash_banks++;
|
|
|
+
|
|
|
idx += addrc + sizec;
|
|
|
}
|
|
|
gd->bd->bi_flashstart = flash_info[0].base;
|