Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/powerpc/sysdev/bestcomm/sram.h
10818 views
1
/*
2
* Handling of a sram zone for bestcomm
3
*
4
*
5
* Copyright (C) 2007 Sylvain Munaut <[email protected]>
6
*
7
* This file is licensed under the terms of the GNU General Public License
8
* version 2. This program is licensed "as is" without any warranty of any
9
* kind, whether express or implied.
10
*/
11
12
#ifndef __BESTCOMM_SRAM_H__
13
#define __BESTCOMM_SRAM_H__
14
15
#include <asm/rheap.h>
16
#include <asm/mmu.h>
17
#include <linux/spinlock.h>
18
19
20
/* Structure used internally */
21
/* The internals are here for the inline functions
22
* sake, certainly not for the user to mess with !
23
*/
24
struct bcom_sram {
25
phys_addr_t base_phys;
26
void *base_virt;
27
unsigned int size;
28
rh_info_t *rh;
29
spinlock_t lock;
30
};
31
32
extern struct bcom_sram *bcom_sram;
33
34
35
/* Public API */
36
extern int bcom_sram_init(struct device_node *sram_node, char *owner);
37
extern void bcom_sram_cleanup(void);
38
39
extern void* bcom_sram_alloc(int size, int align, phys_addr_t *phys);
40
extern void bcom_sram_free(void *ptr);
41
42
static inline phys_addr_t bcom_sram_va2pa(void *va) {
43
return bcom_sram->base_phys +
44
(unsigned long)(va - bcom_sram->base_virt);
45
}
46
47
static inline void *bcom_sram_pa2va(phys_addr_t pa) {
48
return bcom_sram->base_virt +
49
(unsigned long)(pa - bcom_sram->base_phys);
50
}
51
52
53
#endif /* __BESTCOMM_SRAM_H__ */
54
55
56