uboot/include/binman.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: Intel */
   2/*
   3 * Access to binman information at runtime
   4 *
   5 * Copyright 2019 Google LLC
   6 * Written by Simon Glass <sjg@chromium.org>
   7 */
   8
   9#ifndef _BINMAN_H_
  10#define _BINMAN_H_
  11
  12#include <dm/ofnode.h>
  13
  14/**
  15 *struct binman_entry - information about a binman entry
  16 *
  17 * @image_pos: Position of entry in the image
  18 * @size: Size of entry
  19 */
  20struct binman_entry {
  21        u32 image_pos;
  22        u32 size;
  23};
  24
  25/**
  26 * binman_entry_map() - Look up the address of an entry in memory
  27 *
  28 * @parent: Parent binman node
  29 * @name: Name of entry
  30 * @bufp: Returns a pointer to the entry
  31 * @sizep: Returns the size of the entry
  32 * @return 0 on success, -EPERM if the ROM offset is not set, -ENOENT if the
  33 *      entry cannot be found, other error code other error
  34 */
  35int binman_entry_map(ofnode parent, const char *name, void **bufp, int *sizep);
  36
  37/**
  38 * binman_set_rom_offset() - Set the ROM memory-map offset
  39 *
  40 * @rom_offset: Offset from an image_pos to the memory-mapped address. This
  41 *      tells binman that ROM image_pos x can be addressed at rom_offset + x
  42 */
  43void binman_set_rom_offset(int rom_offset);
  44
  45/**
  46 * binman_get_rom_offset() - Get the ROM memory-map offset
  47 *
  48 * @returns offset from an image_pos to the memory-mapped address
  49 */
  50int binman_get_rom_offset(void);
  51
  52/**
  53 * binman_entry_find() - Find a binman symbol
  54 *
  55 * This searches the binman information in the device tree for a symbol of the
  56 * given name
  57 *
  58 * @name: Path to entry to examine (e.g. "/read-only/u-boot")
  59 * @entry: Returns information about the entry
  60 * @return 0 if OK, -ENOENT if the path is not found, other -ve value if the
  61 *      binman information is invalid (missing image-pos or size)
  62 */
  63int binman_entry_find(const char *name, struct binman_entry *entry);
  64
  65/**
  66 * binman_section_find_node() - Find a binman node
  67 *
  68 * @name: Name of node to look for
  69 * @return Node that was found, ofnode_null() if not found
  70 */
  71ofnode binman_section_find_node(const char *name);
  72
  73/**
  74 * binman_select_subnode() - Select a subnode to use to find entries
  75 *
  76 * Normally binman selects the top-level node for future entry requests, such as
  77 * binman_entry_find(). This function allows a subnode to be chosen instead.
  78 *
  79 * @name: Name of subnode, typically a section. This must be in the top-level
  80 *      binman node
  81 * @return 0 if OK, -EINVAL if there is no /binman node, -ECHILD if multiple
  82 *      images are being used but the first image is not available, -ENOENT if
  83 *      the requested subnode cannot be found
  84 */
  85int binman_select_subnode(const char *name);
  86
  87/**
  88 * binman_init() - Set up the binman symbol information
  89 *
  90 * This locates the binary symbol information in the device tree ready for use
  91 *
  92 * @return 0 if OK, -ENOMEM if out of memory, -EINVAL if there is no binman node
  93 */
  94int binman_init(void);
  95
  96#endif
  97