avr32: Add simple SRAM allocator
Add SRAM allocator for avr32, which is just a thin wrapper around genalloc. Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
This commit is contained in:
parent
7951f188a0
commit
b83d6ee175
|
@ -88,6 +88,7 @@ config PLATFORM_AT32AP
|
|||
select MMU
|
||||
select PERFORMANCE_COUNTERS
|
||||
select HAVE_GPIO_LIB
|
||||
select GENERIC_ALLOCATOR
|
||||
|
||||
#
|
||||
# CPU types
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <asm/arch/at32ap700x.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/portmux.h>
|
||||
#include <asm/arch/sram.h>
|
||||
|
||||
#include <video/atmel_lcdc.h>
|
||||
|
||||
|
@ -2120,3 +2121,28 @@ void __init setup_platform(void)
|
|||
at32_init_pio(&pio3_device);
|
||||
at32_init_pio(&pio4_device);
|
||||
}
|
||||
|
||||
struct gen_pool *sram_pool;
|
||||
|
||||
static int __init sram_init(void)
|
||||
{
|
||||
struct gen_pool *pool;
|
||||
|
||||
/* 1KiB granularity */
|
||||
pool = gen_pool_create(10, -1);
|
||||
if (!pool)
|
||||
goto fail;
|
||||
|
||||
if (gen_pool_add(pool, 0x24000000, 0x8000, -1))
|
||||
goto err_pool_add;
|
||||
|
||||
sram_pool = pool;
|
||||
return 0;
|
||||
|
||||
err_pool_add:
|
||||
gen_pool_destroy(pool);
|
||||
fail:
|
||||
pr_err("Failed to create SRAM pool\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
core_initcall(sram_init);
|
||||
|
|
30
include/asm-avr32/arch-at32ap/sram.h
Normal file
30
include/asm-avr32/arch-at32ap/sram.h
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Simple SRAM allocator
|
||||
*
|
||||
* Copyright (C) 2008 Atmel Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#ifndef __ASM_AVR32_ARCH_SRAM_H
|
||||
#define __ASM_AVR32_ARCH_SRAM_H
|
||||
|
||||
#include <linux/genalloc.h>
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
#endif /* __ASM_AVR32_ARCH_SRAM_H */
|
Loading…
Reference in a new issue