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 property.
  80 */
  81void *devfdt_map_physmem(const struct udevice *dev, unsigned long size);
  82
  83/**
  84 * devfdt_get_addr_index() - Get the indexed reg property of a device
  85 *
  86 * @dev: Pointer to a device
  87 * @index: the 'reg' property can hold a list of <addr, size> pairs
  88 *         and @index is used to select which one is required
  89 *
  90 * Return: addr
  91 */
  92fdt_addr_t devfdt_get_addr_index(const struct udevice *dev, int index);
  93
  94/**
  95 * devfdt_get_addr_index_ptr() - Return indexed pointer to the address of the
  96 *                               reg property of a device
  97 *
  98 * @dev: Pointer to a device
  99 * @index: the 'reg' property can hold a list of <addr, size> pairs
 100 *         and @index is used to select which one is required
 101 *
 102 * Return: Pointer to addr, or NULL if there is no such property
 103 */
 104void *devfdt_get_addr_index_ptr(const struct udevice *dev, int index);
 105
 106/**
 107 * devfdt_get_addr_size_index() - Get the indexed reg property of a device
 108 *
 109 * Returns the address and size specified in the 'reg' property of a device.
 110 *
 111 * @dev: Pointer to a device
 112 * @index: the 'reg' property can hold a list of <addr, size> pairs
 113 *         and @index is used to select which one is required
 114 * @size: Pointer to size varible - this function returns the size
 115 *        specified in the 'reg' property here
 116 *
 117 * Return: addr
 118 */
 119fdt_addr_t devfdt_get_addr_size_index(const struct udevice *dev, int index,
 120                                      fdt_size_t *size);
 121
 122/**
 123 * devfdt_get_addr_name() - Get the reg property of a device, indexed by name
 124 *
 125 * @dev: Pointer to a device
 126 * @name: the 'reg' property can hold a list of <addr, size> pairs, with the
 127 *        'reg-names' property providing named-based identification. @index
 128 *        indicates the value to search for in 'reg-names'.
 129 *
 130 * Return: addr
 131 */
 132fdt_addr_t devfdt_get_addr_name(const struct udevice *dev, const char *name);
 133
 134/**
 135 * devfdt_get_addr_size_name() - Get the reg property and its size for a device,
 136 *                               indexed by name
 137 *
 138 * Returns the address and size specified in the 'reg' property of a device.
 139 *
 140 * @dev: Pointer to a device
 141 * @name: the 'reg' property can hold a list of <addr, size> pairs, with the
 142 *        'reg-names' property providing named-based identification. @index
 143 *        indicates the value to search for in 'reg-names'.
 144 * @size: Pointer to size variable - this function returns the size
 145 *        specified in the 'reg' property here
 146 *
 147 * Return: addr
 148 */
 149fdt_addr_t devfdt_get_addr_size_name(const struct udevice *dev,
 150                                     const char *name, fdt_size_t *size);
 151
 152/**
 153 * devfdt_get_addr_pci() - Read an address and handle PCI address translation
 154 *
 155 * @dev: Device to read from
 156 * Return: address or FDT_ADDR_T_NONE if not found
 157 */
 158fdt_addr_t devfdt_get_addr_pci(const struct udevice *dev);
 159
 160#endif
 161