MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / ofw_get_address

Function ofw_get_address

components/drivers/ofw/io.c:102–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

100}
101
102static rt_err_t ofw_get_address(struct rt_ofw_node *np, int index, rt_uint64_t *out_address, rt_uint64_t *out_size)
103{
104 rt_ssize_t len;
105 rt_err_t err = RT_EOK;
106 int addr_cells = rt_ofw_io_addr_cells(np);
107 int size_cells = rt_ofw_io_size_cells(np);
108 int skip_cells = (addr_cells + size_cells) * index;
109 const fdt32_t *cell = rt_ofw_prop_read_raw(np, "reg", &len);
110
111 if (cell && skip_cells < (len / sizeof(*cell)))
112 {
113 cell += skip_cells;
114 *out_address = rt_fdt_next_cell(&cell, addr_cells);
115 *out_address = rt_ofw_translate_address(np, RT_NULL, *out_address);
116 *out_size = rt_fdt_read_number(cell, size_cells);
117 }
118 else
119 {
120 err = -RT_EINVAL;
121 }
122
123 return err;
124}
125
126rt_err_t rt_ofw_get_address(struct rt_ofw_node *np, int index, rt_uint64_t *out_address, rt_uint64_t *out_size)
127{

Callers 2

rt_ofw_get_addressFunction · 0.85
rt_ofw_iomapFunction · 0.85

Calls 6

rt_ofw_io_addr_cellsFunction · 0.85
rt_ofw_io_size_cellsFunction · 0.85
rt_ofw_prop_read_rawFunction · 0.85
rt_fdt_next_cellFunction · 0.85
rt_ofw_translate_addressFunction · 0.85
rt_fdt_read_numberFunction · 0.85

Tested by

no test coverage detected