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:
committed by
Haavard Skinnemoen
parent
7951f188a0
commit
b83d6ee175
@@ -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 @@
|
|||||||
#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)
|
|||||||
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);
|
||||||
|
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 */
|
Reference in New Issue
Block a user