uboot/include/dm/of_extra.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Copyright (c) 2017 Google, Inc
   4 * Written by Simon Glass <sjg@chromium.org>
   5 */
   6
   7#ifndef _DM_OF_EXTRA_H
   8#define _DM_OF_EXTRA_H
   9
  10#include <dm/ofnode.h>
  11
  12enum fmap_compress_t {
  13        FMAP_COMPRESS_NONE,
  14        FMAP_COMPRESS_LZO,
  15};
  16
  17enum fmap_hash_t {
  18        FMAP_HASH_NONE,
  19        FMAP_HASH_SHA1,
  20        FMAP_HASH_SHA256,
  21};
  22
  23/* A flash map entry, containing an offset and length */
  24struct fmap_entry {
  25        uint32_t offset;
  26        uint32_t length;
  27        uint32_t used;                  /* Number of bytes used in region */
  28        enum fmap_compress_t compress_algo;     /* Compression type */
  29        enum fmap_hash_t hash_algo;             /* Hash algorithm */
  30        const uint8_t *hash;                    /* Hash value */
  31        int hash_size;                          /* Hash size */
  32};
  33
  34/**
  35 * Read a flash entry from the fdt
  36 *
  37 * @param node          Reference to node to read
  38 * @param entry         Place to put offset and size of this node
  39 * @return 0 if ok, -ve on error
  40 */
  41int ofnode_read_fmap_entry(ofnode node, struct fmap_entry *entry);
  42
  43/**
  44 * ofnode_decode_region() - Decode a memory region from a node
  45 *
  46 * Look up a property in a node which contains a memory region address and
  47 * size. Then return a pointer to this address.
  48 *
  49 * The property must hold one address with a length. This is only tested on
  50 * 32-bit machines.
  51 *
  52 * @param node          ofnode to examine
  53 * @param prop_name     name of property to find
  54 * @param basep         Returns base address of region
  55 * @param size          Returns size of region
  56 * @return 0 if ok, -1 on error (property not found)
  57 */
  58int ofnode_decode_region(ofnode node, const char *prop_name, fdt_addr_t *basep,
  59                         fdt_size_t *sizep);
  60
  61/**
  62 * ofnode_decode_memory_region()- Decode a named region within a memory bank
  63 *
  64 * This function handles selection of a memory region. The region is
  65 * specified as an offset/size within a particular type of memory.
  66 *
  67 * The properties used are:
  68 *
  69 *      <mem_type>-memory<suffix> for the name of the memory bank
  70 *      <mem_type>-offset<suffix> for the offset in that bank
  71 *
  72 * The property value must have an offset and a size. The function checks
  73 * that the region is entirely within the memory bank.5
  74 *
  75 * @param node          ofnode containing the properties (-1 for /config)
  76 * @param mem_type      Type of memory to use, which is a name, such as
  77 *                      "u-boot" or "kernel".
  78 * @param suffix        String to append to the memory/offset
  79 *                      property names
  80 * @param basep         Returns base of region
  81 * @param sizep         Returns size of region
  82 * @return 0 if OK, -ive on error
  83 */
  84int ofnode_decode_memory_region(ofnode config_node, const char *mem_type,
  85                                const char *suffix, fdt_addr_t *basep,
  86                                fdt_size_t *sizep);
  87
  88#endif
  89