sram.h (1279B)
1/* 2 * Handling of a sram zone for bestcomm 3 * 4 * 5 * Copyright (C) 2007 Sylvain Munaut <tnt@246tNt.com> 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 */ 24struct 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 32extern struct bcom_sram *bcom_sram; 33 34 35/* Public API */ 36extern int bcom_sram_init(struct device_node *sram_node, char *owner); 37extern void bcom_sram_cleanup(void); 38 39extern void* bcom_sram_alloc(int size, int align, phys_addr_t *phys); 40extern void bcom_sram_free(void *ptr); 41 42static 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 47static 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