Commit b83d6ee1 authored by Haavard Skinnemoen's avatar Haavard Skinnemoen Committed by Haavard Skinnemoen

avr32: Add simple SRAM allocator

Add SRAM allocator for avr32, which is just a thin wrapper around
genalloc.
Signed-off-by: default avatarHaavard Skinnemoen <hskinnemoen@atmel.com>
parent 7951f188
...@@ -88,6 +88,7 @@ config PLATFORM_AT32AP ...@@ -88,6 +88,7 @@ config PLATFORM_AT32AP
select MMU select MMU
select PERFORMANCE_COUNTERS select PERFORMANCE_COUNTERS
select HAVE_GPIO_LIB select HAVE_GPIO_LIB
select GENERIC_ALLOCATOR
# #
# CPU types # CPU types
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <asm/arch/at32ap700x.h> #include <asm/arch/at32ap700x.h>
#include <asm/arch/board.h> #include <asm/arch/board.h>
#include <asm/arch/portmux.h> #include <asm/arch/portmux.h>
#include <asm/arch/sram.h>
#include <video/atmel_lcdc.h> #include <video/atmel_lcdc.h>
...@@ -2120,3 +2121,28 @@ void __init setup_platform(void) ...@@ -2120,3 +2121,28 @@ void __init setup_platform(void)
at32_init_pio(&pio3_device); at32_init_pio(&pio3_device);
at32_init_pio(&pio4_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);
/*
* 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 */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment