uboot/lib/initcall.c
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2013 The Chromium OS Authors.
   3 *
   4 * SPDX-License-Identifier:     GPL-2.0+
   5 */
   6
   7#include <common.h>
   8#include <initcall.h>
   9
  10DECLARE_GLOBAL_DATA_PTR;
  11
  12int initcall_run_list(const init_fnc_t init_sequence[])
  13{
  14        const init_fnc_t *init_fnc_ptr;
  15
  16        for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
  17                unsigned long reloc_ofs = 0;
  18
  19                if (gd->flags & GD_FLG_RELOC)
  20                        reloc_ofs = gd->reloc_off;
  21                debug("initcall: %p\n", (char *)*init_fnc_ptr - reloc_ofs);
  22                if ((*init_fnc_ptr)()) {
  23                        printf("initcall sequence %p failed at call %p\n",
  24                               init_sequence,
  25                               (char *)*init_fnc_ptr - reloc_ofs);
  26                        return -1;
  27                }
  28        }
  29        return 0;
  30}
  31