Blame view

include/lmb.h 1.42 KB
4ed6552f7   Kumar Gala   [new uImage] Intr...
1
2
3
4
5
6
7
8
9
10
  #ifndef _LINUX_LMB_H
  #define _LINUX_LMB_H
  #ifdef __KERNEL__
  
  #include <asm/types.h>
  /*
   * Logical memory blocks.
   *
   * Copyright (C) 2001 Peter Bergner, IBM Corp.
   *
1a4596601   Wolfgang Denk   Add GPL-2.0+ SPDX...
11
   * SPDX-License-Identifier:	GPL-2.0+
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
31
32
33
34
  	struct lmb_property region[MAX_LMB_REGIONS+1];
  };
  
  struct lmb {
  	struct lmb_region memory;
  	struct lmb_region reserved;
  };
  
  extern struct lmb lmb;
  
  extern void lmb_init(struct lmb *lmb);
391fd93ab   Becky Bruce   Change lmb to use...
35
36
37
38
39
40
41
42
  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);
  extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr);
98874ff32   Andy Fleming   Fix LMB type issues
43
  extern long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size);
4ed6552f7   Kumar Gala   [new uImage] Intr...
44
45
  
  extern void lmb_dump_all(struct lmb *lmb);
391fd93ab   Becky Bruce   Change lmb to use...
46
  static inline phys_size_t
4ed6552f7   Kumar Gala   [new uImage] Intr...
47
48
49
50
  lmb_size_bytes(struct lmb_region *type, unsigned long region_nr)
  {
  	return type->region[region_nr].size;
  }
a16028da6   Mike Frysinger   lmb: only force o...
51
52
53
  
  void board_lmb_reserve(struct lmb *lmb);
  void arch_lmb_reserve(struct lmb *lmb);
4ed6552f7   Kumar Gala   [new uImage] Intr...
54
55
56
  #endif /* __KERNEL__ */
  
  #endif /* _LINUX_LMB_H */