mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 03:15:00 +00:00
lmb: add lmb_is_reserved_flags
Add a new function lmb_is_reserved_flags to check if an address is reserved with a specific flags. This function can be used to check if an address was reserved with no-map flags with: lmb_is_reserved_flags(lmb, addr, LMB_NOMAP); Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
This commit is contained in:
parent
59c0ea5df3
commit
e359a4a5c1
2 changed files with 16 additions and 2 deletions
|
@ -100,6 +100,15 @@ extern phys_addr_t lmb_alloc_addr(struct lmb *lmb, phys_addr_t base,
|
||||||
phys_size_t size);
|
phys_size_t size);
|
||||||
extern phys_size_t lmb_get_free_size(struct lmb *lmb, phys_addr_t addr);
|
extern phys_size_t lmb_get_free_size(struct lmb *lmb, phys_addr_t addr);
|
||||||
extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr);
|
extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr);
|
||||||
|
/**
|
||||||
|
* lmb_is_reserved_flags - test if tha address is in reserved region with a bitfield flag
|
||||||
|
*
|
||||||
|
* @lmb the logical memory block struct
|
||||||
|
* @addr address to be tested
|
||||||
|
* @flags flags bitfied to be tested
|
||||||
|
* @return 0 if not reserved or reserved without the requested flag else 1
|
||||||
|
*/
|
||||||
|
int lmb_is_reserved_flags(struct lmb *lmb, phys_addr_t addr, int flags);
|
||||||
extern long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size);
|
extern long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size);
|
||||||
|
|
||||||
extern void lmb_dump_all(struct lmb *lmb);
|
extern void lmb_dump_all(struct lmb *lmb);
|
||||||
|
|
|
@ -443,7 +443,7 @@ phys_size_t lmb_get_free_size(struct lmb *lmb, phys_addr_t addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr)
|
int lmb_is_reserved_flags(struct lmb *lmb, phys_addr_t addr, int flags)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -451,11 +451,16 @@ int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr)
|
||||||
phys_addr_t upper = lmb->reserved.region[i].base +
|
phys_addr_t upper = lmb->reserved.region[i].base +
|
||||||
lmb->reserved.region[i].size - 1;
|
lmb->reserved.region[i].size - 1;
|
||||||
if ((addr >= lmb->reserved.region[i].base) && (addr <= upper))
|
if ((addr >= lmb->reserved.region[i].base) && (addr <= upper))
|
||||||
return 1;
|
return (lmb->reserved.region[i].flags & flags) == flags;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr)
|
||||||
|
{
|
||||||
|
return lmb_is_reserved_flags(lmb, addr, LMB_NONE);
|
||||||
|
}
|
||||||
|
|
||||||
__weak void board_lmb_reserve(struct lmb *lmb)
|
__weak void board_lmb_reserve(struct lmb *lmb)
|
||||||
{
|
{
|
||||||
/* please define platform specific board_lmb_reserve() */
|
/* please define platform specific board_lmb_reserve() */
|
||||||
|
|
Loading…
Add table
Reference in a new issue