satip-axe/kernel/include/linux/bpa2.h
2015-03-26 17:24:57 +01:00

90 lines
2.6 KiB
C

/*
* Copyright (c) STMicroelectronics Limited
* Author: Stuart Menefy <stuart.menefy@st.com>
*
* Derived from mm/bigphysarea.c which was:
* Copyright (c) 1996 by Matt Welsh.
* Extended by Roger Butenuth (butenuth@uni-paderborn.de), October 1997
* Extended for linux-2.1.121 till 2.4.0 (June 2000)
* by Pauline Middelink <middelink@polyware.nl>
*
* This is a set of routines which allow you to reserve a large (?)
* amount of physical memory at boot-time, which can be allocated/deallocated
* by drivers. This memory is intended to be used for devices such as
* video framegrabbers which need a lot of physical RAM (above the amount
* allocated by kmalloc). This is by no means efficient or recommended;
* to be used only in extreme circumstances.
*/
#ifndef __LINUX_BPA2_H
#define __LINUX_BPA2_H
#include <linux/types.h>
/*
* BPA2 Interface
*/
#define BPA2_NORMAL 0x00000001
struct bpa2_partition_desc {
const char *name;
unsigned long start;
unsigned long size;
unsigned long flags;
const char **aka;
};
struct bpa2_part;
void bpa2_init(struct bpa2_partition_desc *partdescs, int nparts);
struct bpa2_part *bpa2_find_part(const char *name);
int bpa2_low_part(struct bpa2_part *part);
#if defined(CONFIG_BPA2_ALLOC_TRACE)
#define bpa2_alloc_pages(part, count, align, priority) \
__bpa2_alloc_pages(part, count, align, priority, \
__FILE__, __LINE__)
#else
#define bpa2_alloc_pages(part, count, align, priority) \
__bpa2_alloc_pages(part, count, align, priority, NULL, 0)
#endif
unsigned long __bpa2_alloc_pages(struct bpa2_part *part, int count, int align,
int priority, const char *trace_file, int trace_line);
void bpa2_free_pages(struct bpa2_part *part, unsigned long base);
void bpa2_memory(struct bpa2_part *part, unsigned long *base,
unsigned long *size);
/*
* Backward compatibility interface (bigphysarea)
*/
/* Original interface */
#define bigphysarea_alloc(size) \
bigphysarea_alloc_pages(PAGE_ALIGN(size) >> PAGE_SHIFT, \
1, GFP_KERNEL)
#define bigphysarea_free(addr, size) \
bigphysarea_free_pages(addr)
/* New(er) interface */
#if defined(CONFIG_BPA2_ALLOC_TRACE)
#define bigphysarea_alloc_pages(count, align, priority) \
__bigphysarea_alloc_pages(count, align, priority, \
__FILE__, __LINE__)
#else
#define bigphysarea_alloc_pages(count, align, priority) \
__bigphysarea_alloc_pages(count, align, priority, NULL, 0)
#endif
caddr_t __bigphysarea_alloc_pages(int count, int align, int priority,
const char *trace_file, int trace_line);
void bigphysarea_free_pages(caddr_t base);
/* low level interface */
void bigphysarea_memory(unsigned long *base, unsigned long *size);
#endif /* __LINUX_BPA2_H */