]> git.ipfire.org Git - thirdparty/u-boot.git/blame - include/lmb.h
colibri_imx6: switch to zimage
[thirdparty/u-boot.git] / include / lmb.h
CommitLineData
83d290c5 1/* SPDX-License-Identifier: GPL-2.0+ */
4ed6552f
KG
2#ifndef _LINUX_LMB_H
3#define _LINUX_LMB_H
4#ifdef __KERNEL__
5
6#include <asm/types.h>
9cc2323f
SG
7#include <asm/u-boot.h>
8
4ed6552f
KG
9/*
10 * Logical memory blocks.
11 *
12 * Copyright (C) 2001 Peter Bergner, IBM Corp.
4ed6552f
KG
13 */
14
15#define MAX_LMB_REGIONS 8
16
17struct lmb_property {
391fd93a
BB
18 phys_addr_t base;
19 phys_size_t size;
4ed6552f
KG
20};
21
22struct lmb_region {
23 unsigned long cnt;
391fd93a 24 phys_size_t size;
4ed6552f
KG
25 struct lmb_property region[MAX_LMB_REGIONS+1];
26};
27
28struct lmb {
29 struct lmb_region memory;
30 struct lmb_region reserved;
31};
32
4ed6552f 33extern void lmb_init(struct lmb *lmb);
9cc2323f
SG
34extern void lmb_init_and_reserve(struct lmb *lmb, bd_t *bd, void *fdt_blob);
35extern void lmb_init_and_reserve_range(struct lmb *lmb, phys_addr_t base,
36 phys_size_t size, void *fdt_blob);
391fd93a
BB
37extern long lmb_add(struct lmb *lmb, phys_addr_t base, phys_size_t size);
38extern long lmb_reserve(struct lmb *lmb, phys_addr_t base, phys_size_t size);
39extern phys_addr_t lmb_alloc(struct lmb *lmb, phys_size_t size, ulong align);
40extern phys_addr_t lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align,
41 phys_addr_t max_addr);
42extern phys_addr_t __lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align,
43 phys_addr_t max_addr);
4cc8af80
SG
44extern phys_addr_t lmb_alloc_addr(struct lmb *lmb, phys_addr_t base,
45 phys_size_t size);
65304aad 46extern phys_size_t lmb_get_free_size(struct lmb *lmb, phys_addr_t addr);
391fd93a 47extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr);
98874ff3 48extern long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size);
4ed6552f
KG
49
50extern void lmb_dump_all(struct lmb *lmb);
51
391fd93a 52static inline phys_size_t
4ed6552f
KG
53lmb_size_bytes(struct lmb_region *type, unsigned long region_nr)
54{
55 return type->region[region_nr].size;
56}
a16028da
MF
57
58void board_lmb_reserve(struct lmb *lmb);
59void arch_lmb_reserve(struct lmb *lmb);
60
4ed6552f
KG
61#endif /* __KERNEL__ */
62
63#endif /* _LINUX_LMB_H */