uboot/include/dm/fdtaddr.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Copyright (c) 2017 Google, Inc
   4 *
   5 * (C) Copyright 2012
   6 * Pavel Herrmann <morpheus.ibis@gmail.com>
   7 * Marek Vasut <marex@denx.de>
   8 */
   9
  10#ifndef _DM_FDTADDR_H
  11#define _DM_FDTADDR_H
  12
  13#include <fdtdec.h>
  14
  15struct udevice;
  16
  17/**
  18 * devfdt_get_addr() - Get the reg property of a device
  19 *
  20 * @dev: Pointer to a device
  21 *
  22 * @return addr
  23 */
  24fdt_addr_t devfdt_get_addr(const struct udevice *dev);
  25
  26/**
  27 * devfdt_get_addr_ptr() - Return pointer to the address of the reg property
  28 *                      of a device
  29 *
  30 * @dev: Pointer to a device
  31 *
  32 * @return Pointer to addr, or NULL if there is no such property
  33 */
  34void *devfdt_get_addr_ptr(const struct udevice *dev);
  35
  36/**
  37 * devfdt_remap_addr() - Return pointer to the memory-mapped I/O address
  38 *                           of the reg property of a device
  39 *
  40 * @dev: Pointer to a device
  41 *
  42 * @return Pointer to addr, or NULL if there is no such property
  43 */
  44void *devfdt_remap_addr(const struct udevice *dev);
  45
  46/**
  47 * devfdt_remap_addr_index() - Return indexed pointer to the memory-mapped
  48 *                                 I/O address of the reg property of a device
  49 * @index: the 'reg' property can hold a list of <addr, size> pairs
  50 *         and @index is used to select which one is required
  51 *
  52 * @dev: Pointer to a device
  53 *
  54 * @return Pointer to addr, or NULL if there is no such property
  55 */
  56void *devfdt_remap_addr_index(const struct udevice *dev, int index);
  57
  58/**
  59 * devfdt_remap_addr_name() - Get the reg property of a device, indexed by
  60 *                            name, as a memory-mapped I/O pointer
  61 * @name: the 'reg' property can hold a list of <addr, size> pairs, with the
  62 *        'reg-names' property providing named-based identification. @index
  63 *        indicates the value to search for in 'reg-names'.
  64 *
  65 * @dev: Pointer to a device
  66 *
  67 * @return Pointer to addr, or NULL if there is no such property
  68 */
  69void *devfdt_remap_addr_name(const struct udevice *dev, const char *name);
  70
  71/**
  72 * devfdt_map_physmem() - Read device address from reg property of the
  73 *                     device node and map the address into CPU address
  74 *                     space.
  75 *
  76 * @dev: Pointer to device
  77 * @size: size of the memory to map
  78 *
  79 * @return  mapped address, or NULL if the device does not have reg
  80 *          property.
  81 */
  82void *devfdt_map_physmem(const struct udevice *dev, unsigned long size);
  83
  84/**
  85 * devfdt_get_addr_index() - Get the indexed reg property of a device
  86 *
  87 * @dev: Pointer to a device
  88 * @index: the 'reg' property can hold a list of <addr, size> pairs
  89 *         and @index is used to select which one is required
  90 *
  91 * @return addr
  92 */
  93fdt_addr_t devfdt_get_addr_index(const struct udevice *dev, int index);
  94
  95/**
  96 * devfdt_get_addr_index_ptr() - Return indexed pointer to the address of the
  97 *                               reg property of a device
  98 *
  99 * @dev: Pointer to a device
 100 * @index: the 'reg' property can hold a list of <addr, size> pairs
 101 *         and @index is used to select which one is required
 102 *
 103 * @return Pointer to addr, or NULL if there is no such property
 104 */
 105void *devfdt_get_addr_index_ptr(const struct udevice *dev, int index);
 106
 107/**
 108 * devfdt_get_addr_size_index() - Get the indexed reg property of a device
 109 *
 110 * Returns the address and size specified in the 'reg' property of a device.
 111 *
 112 * @dev: Pointer to a device
 113 * @index: the 'reg' property can hold a list of <addr, size> pairs
 114 *         and @index is used to select which one is required
 115 * @size: Pointer to size varible - this function returns the size
 116 *        specified in the 'reg' property here
 117 *
 118 * @return addr
 119 */
 120fdt_addr_t devfdt_get_addr_size_index(const struct udevice *dev, int index,
 121                                      fdt_size_t *size);
 122
 123/**
 124 * devfdt_get_addr_name() - Get the reg property of a device, indexed by name
 125 *
 126 * @dev: Pointer to a device
 127 * @name: the 'reg' property can hold a list of <addr, size> pairs, with the
 128 *        'reg-names' property providing named-based identification. @index
 129 *        indicates the value to search for in 'reg-names'.
 130 *
 131 * @return addr
 132 */
 133fdt_addr_t devfdt_get_addr_name(const struct udevice *dev, const char *name);
 134
 135/**
 136 * devfdt_get_addr_size_name() - Get the reg property and its size for a device,
 137 *                               indexed by name
 138 *
 139 * Returns the address and size specified in the 'reg' property of a device.
 140 *
 141 * @dev: Pointer to a device
 142 * @name: the 'reg' property can hold a list of <addr, size> pairs, with the
 143 *        'reg-names' property providing named-based identification. @index
 144 *        indicates the value to search for in 'reg-names'.
 145 * @size: Pointer to size variable - this function returns the size
 146 *        specified in the 'reg' property here
 147 *
 148 * @return addr
 149 */
 150fdt_addr_t devfdt_get_addr_size_name(const struct udevice *dev,
 151                                     const char *name, fdt_size_t *size);
 152
 153/**
 154 * devfdt_get_addr_pci() - Read an address and handle PCI address translation
 155 *
 156 * @dev: Device to read from
 157 * @return address or FDT_ADDR_T_NONE if not found
 158 */
 159fdt_addr_t devfdt_get_addr_pci(const struct udevice *dev);
 160
 161#endif
 162