1 /* 1 /* 2 * Handling of a sram zone for bestcomm 2 * Handling of a sram zone for bestcomm 3 * 3 * 4 * 4 * 5 * Copyright (C) 2007 Sylvain Munaut <tnt@246t 5 * Copyright (C) 2007 Sylvain Munaut <tnt@246tNt.com> 6 * 6 * 7 * This file is licensed under the terms of th 7 * This file is licensed under the terms of the GNU General Public License 8 * version 2. This program is licensed "as is" 8 * version 2. This program is licensed "as is" without any warranty of any 9 * kind, whether express or implied. 9 * kind, whether express or implied. 10 */ 10 */ 11 11 12 #ifndef __BESTCOMM_SRAM_H__ 12 #ifndef __BESTCOMM_SRAM_H__ 13 #define __BESTCOMM_SRAM_H__ 13 #define __BESTCOMM_SRAM_H__ 14 14 15 #include <asm/rheap.h> 15 #include <asm/rheap.h> 16 #include <asm/mmu.h> 16 #include <asm/mmu.h> 17 #include <linux/spinlock.h> 17 #include <linux/spinlock.h> 18 18 19 19 20 /* Structure used internally */ 20 /* Structure used internally */ 21 /* The internals are here for the inli 21 /* The internals are here for the inline functions 22 * sake, certainly not for the user to 22 * sake, certainly not for the user to mess with ! 23 */ 23 */ 24 struct bcom_sram { 24 struct bcom_sram { 25 phys_addr_t base_phys; 25 phys_addr_t base_phys; 26 void *base_virt; 26 void *base_virt; 27 unsigned int size; 27 unsigned int size; 28 rh_info_t *rh; 28 rh_info_t *rh; 29 spinlock_t lock; 29 spinlock_t lock; 30 }; 30 }; 31 31 32 extern struct bcom_sram *bcom_sram; 32 extern struct bcom_sram *bcom_sram; 33 33 34 34 35 /* Public API */ 35 /* Public API */ 36 extern int bcom_sram_init(struct device_node 36 extern int bcom_sram_init(struct device_node *sram_node, char *owner); 37 extern void bcom_sram_cleanup(void); 37 extern void bcom_sram_cleanup(void); 38 38 39 extern void* bcom_sram_alloc(int size, int ali 39 extern void* bcom_sram_alloc(int size, int align, phys_addr_t *phys); 40 extern void bcom_sram_free(void *ptr); 40 extern void bcom_sram_free(void *ptr); 41 41 42 static inline phys_addr_t bcom_sram_va2pa(void 42 static inline phys_addr_t bcom_sram_va2pa(void *va) { 43 return bcom_sram->base_phys + 43 return bcom_sram->base_phys + 44 (unsigned long)(va - bcom_sram 44 (unsigned long)(va - bcom_sram->base_virt); 45 } 45 } 46 46 47 static inline void *bcom_sram_pa2va(phys_addr_ 47 static inline void *bcom_sram_pa2va(phys_addr_t pa) { 48 return bcom_sram->base_virt + 48 return bcom_sram->base_virt + 49 (unsigned long)(pa - bcom_sram 49 (unsigned long)(pa - bcom_sram->base_phys); 50 } 50 } 51 51 52 52 53 #endif /* __BESTCOMM_SRAM_H__ */ 53 #endif /* __BESTCOMM_SRAM_H__ */ 54 54 55 55
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.