pinctrl: Increase length of pinmux status buffer
[platform/kernel/u-boot.git] / include / dm / fdtaddr.h
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
15 struct 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  */
24 fdt_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  */
34 void *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  */
44 void *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  */
56 void *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  */
69 void *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  */
81 void *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  */
92 fdt_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  */
104 void *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  */
119 fdt_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  */
132 fdt_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  */
149 fdt_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  */
158 fdt_addr_t devfdt_get_addr_pci(const struct udevice *dev);
159
160 #endif