c993487ec8
This sets up a generic SRAM pool for CPUs and platform code to insert their otherwise unused memories into. A simple alloc/free interface is provided (lifed from avr32) for generic code. This only applies to tiny SRAMs that are otherwise unmanaged, and does not take in to account the more complex SRAMs sitting behind transfer engines, or that employ an I/D split. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
39 lines
631 B
C
39 lines
631 B
C
#ifndef __ASM_SRAM_H
|
|
#define __ASM_SRAM_H
|
|
|
|
#ifdef CONFIG_HAVE_SRAM_POOL
|
|
|
|
#include <linux/spinlock.h>
|
|
#include <linux/genalloc.h>
|
|
|
|
/* arch/sh/mm/sram.c */
|
|
extern struct gen_pool *sram_pool;
|
|
|
|
static inline unsigned long sram_alloc(size_t len)
|
|
{
|
|
if (!sram_pool)
|
|
return 0UL;
|
|
|
|
return gen_pool_alloc(sram_pool, len);
|
|
}
|
|
|
|
static inline void sram_free(unsigned long addr, size_t len)
|
|
{
|
|
return gen_pool_free(sram_pool, addr, len);
|
|
}
|
|
|
|
#else
|
|
|
|
static inline unsigned long sram_alloc(size_t len)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void sram_free(unsigned long addr, size_t len)
|
|
{
|
|
}
|
|
|
|
#endif /* CONFIG_HAVE_SRAM_POOL */
|
|
|
|
#endif /* __ASM_SRAM_H */
|