uboot/arch/arm/lib/bootm-fdt.c
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2013, Google Inc.
   3 *
   4 * Copyright (C) 2011
   5 * Corscience GmbH & Co. KG - Simon Schwarz <schwarz@corscience.de>
   6 *  - Added prep subcommand support
   7 *  - Reorganized source - modeled after powerpc version
   8 *
   9 * (C) Copyright 2002
  10 * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
  11 * Marius Groeger <mgroeger@sysgo.de>
  12 *
  13 * Copyright (C) 2001  Erik Mouw (J.A.K.Mouw@its.tudelft.nl)
  14 *
  15 * SPDX-License-Identifier:     GPL-2.0+
  16 */
  17
  18#include <common.h>
  19#include <fdt_support.h>
  20#ifdef CONFIG_ARMV7_NONSEC
  21#include <asm/armv7.h>
  22#endif
  23#include <asm/psci.h>
  24
  25DECLARE_GLOBAL_DATA_PTR;
  26
  27int arch_fixup_fdt(void *blob)
  28{
  29        bd_t *bd = gd->bd;
  30        int bank, ret;
  31        u64 start[CONFIG_NR_DRAM_BANKS];
  32        u64 size[CONFIG_NR_DRAM_BANKS];
  33
  34        for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) {
  35                start[bank] = bd->bi_dram[bank].start;
  36                size[bank] = bd->bi_dram[bank].size;
  37#ifdef CONFIG_ARMV7_NONSEC
  38                ret = armv7_apply_memory_carveout(&start[bank], &size[bank]);
  39                if (ret)
  40                        return ret;
  41#endif
  42        }
  43
  44        ret = fdt_fixup_memory_banks(blob, start, size, CONFIG_NR_DRAM_BANKS);
  45        if (ret)
  46                return ret;
  47
  48#ifdef CONFIG_ARMV7_NONSEC
  49        ret = psci_update_dt(blob);
  50        if (ret)
  51                return ret;
  52#endif
  53
  54        return 0;
  55}
  56