Blame view

include/lmb.h 1.78 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
4ed6552f7   Kumar Gala   [new uImage] Intr...
2
3
4
5
6
  #ifndef _LINUX_LMB_H
  #define _LINUX_LMB_H
  #ifdef __KERNEL__
  
  #include <asm/types.h>
9cc2323fe   Simon Goldschmidt   lmb: handle more ...
7
  #include <asm/u-boot.h>
4ed6552f7   Kumar Gala   [new uImage] Intr...
8
9
10
11
  /*
   * Logical memory blocks.
   *
   * Copyright (C) 2001 Peter Bergner, IBM Corp.
4ed6552f7   Kumar Gala   [new uImage] Intr...
12
13
14
15
16
   */
  
  #define MAX_LMB_REGIONS 8
  
  struct lmb_property {
391fd93ab   Becky Bruce   Change lmb to use...
17
18
  	phys_addr_t base;
  	phys_size_t size;
4ed6552f7   Kumar Gala   [new uImage] Intr...
19
20
21
22
  };
  
  struct lmb_region {
  	unsigned long cnt;
391fd93ab   Becky Bruce   Change lmb to use...
23
  	phys_size_t size;
4ed6552f7   Kumar Gala   [new uImage] Intr...
24
25
26
27
28
29
30
  	struct lmb_property region[MAX_LMB_REGIONS+1];
  };
  
  struct lmb {
  	struct lmb_region memory;
  	struct lmb_region reserved;
  };
4ed6552f7   Kumar Gala   [new uImage] Intr...
31
  extern void lmb_init(struct lmb *lmb);
9cc2323fe   Simon Goldschmidt   lmb: handle more ...
32
33
34
  extern void lmb_init_and_reserve(struct lmb *lmb, bd_t *bd, void *fdt_blob);
  extern void lmb_init_and_reserve_range(struct lmb *lmb, phys_addr_t base,
  				       phys_size_t size, void *fdt_blob);
391fd93ab   Becky Bruce   Change lmb to use...
35
36
37
38
39
40
41
  extern long lmb_add(struct lmb *lmb, phys_addr_t base, phys_size_t size);
  extern long lmb_reserve(struct lmb *lmb, phys_addr_t base, phys_size_t size);
  extern phys_addr_t lmb_alloc(struct lmb *lmb, phys_size_t size, ulong align);
  extern phys_addr_t lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align,
  			    phys_addr_t max_addr);
  extern phys_addr_t __lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align,
  			      phys_addr_t max_addr);
4cc8af803   Simon Goldschmidt   lib: lmb: extend ...
42
43
  extern phys_addr_t lmb_alloc_addr(struct lmb *lmb, phys_addr_t base,
  				  phys_size_t size);
65304aade   Simon Goldschmidt   lib: lmb: rename ...
44
  extern phys_size_t lmb_get_free_size(struct lmb *lmb, phys_addr_t addr);
391fd93ab   Becky Bruce   Change lmb to use...
45
  extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr);
98874ff32   Andy Fleming   Fix LMB type issues
46
  extern long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size);
4ed6552f7   Kumar Gala   [new uImage] Intr...
47
48
  
  extern void lmb_dump_all(struct lmb *lmb);
391fd93ab   Becky Bruce   Change lmb to use...
49
  static inline phys_size_t
4ed6552f7   Kumar Gala   [new uImage] Intr...
50
51
52
53
  lmb_size_bytes(struct lmb_region *type, unsigned long region_nr)
  {
  	return type->region[region_nr].size;
  }
a16028da6   Mike Frysinger   lmb: only force o...
54
55
56
  
  void board_lmb_reserve(struct lmb *lmb);
  void arch_lmb_reserve(struct lmb *lmb);
4ed6552f7   Kumar Gala   [new uImage] Intr...
57
58
59
  #endif /* __KERNEL__ */
  
  #endif /* _LINUX_LMB_H */