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(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(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(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(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(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(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(struct udevice *dev, int index);
  94
  95/**
  96 * devfdt_get_addr_size_index() - Get the indexed reg property of a device
  97 *
  98 * Returns the address and size specified in the 'reg' property of a device.
  99 *
 100 * @dev: Pointer to a device
 101 * @index: the 'reg' property can hold a list of <addr, size> pairs
 102 *         and @index is used to select which one is required
 103 * @size: Pointer to size varible - this function returns the size
 104 *        specified in the 'reg' property here
 105 *
 106 * @return addr
 107 */
 108fdt_addr_t devfdt_get_addr_size_index(struct udevice *dev, int index,
 109                                   fdt_size_t *size);
 110
 111/**
 112 * devfdt_get_addr_name() - Get the reg property of a device, indexed by name
 113 *
 114 * @dev: Pointer to a device
 115 * @name: the 'reg' property can hold a list of <addr, size> pairs, with the
 116 *        'reg-names' property providing named-based identification. @index
 117 *        indicates the value to search for in 'reg-names'.
 118 *
 119 * @return addr
 120 */
 121fdt_addr_t devfdt_get_addr_name(struct udevice *dev, const char *name);
 122
 123/**
 124 * devfdt_get_addr_size_name() - Get the reg property and its size for a device,
 125 *                               indexed by name
 126 *
 127 * Returns the address and size specified in the 'reg' property of a device.
 128 *
 129 * @dev: Pointer to a device
 130 * @name: the 'reg' property can hold a list of <addr, size> pairs, with the
 131 *        'reg-names' property providing named-based identification. @index
 132 *        indicates the value to search for in 'reg-names'.
 133 * @size: Pointer to size variable - this function returns the size
 134 *        specified in the 'reg' property here
 135 *
 136 * @return addr
 137 */
 138fdt_addr_t devfdt_get_addr_size_name(struct udevice *dev, const char *name,
 139                                     fdt_size_t *size);
 140
 141/**
 142 * devfdt_get_addr_pci() - Read an address and handle PCI address translation
 143 *
 144 * @dev: Device to read from
 145 * @return address or FDT_ADDR_T_NONE if not found
 146 */
 147fdt_addr_t devfdt_get_addr_pci(struct udevice *dev);
 148
 149#endif
 150