diff options
Diffstat (limited to 'drivers/staging/sep/sep_driver_ext_api.h')
-rw-r--r-- | drivers/staging/sep/sep_driver_ext_api.h | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/drivers/staging/sep/sep_driver_ext_api.h b/drivers/staging/sep/sep_driver_ext_api.h new file mode 100644 index 0000000..3bc3b4d --- /dev/null +++ b/drivers/staging/sep/sep_driver_ext_api.h @@ -0,0 +1,106 @@ +/* + * + * sep_driver_ext_api.h - Security Processor Driver external api definitions + * + * Copyright(c) 2009 Intel Corporation. All rights reserved. + * Copyright(c) 2009 Discretix. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 59 + * Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * CONTACTS: + * + * Mark Allyn mark.a.allyn@intel.com + * + * CHANGES: + * + * 2009.06.26 Initial publish + * + */ + +#ifndef __SEP_DRIVER_EXT_API_H__ +#define __SEP_DRIVER_EXT_API_H__ + + +/* shared variables */ +extern int sepDebug; + +extern unsigned long g_sep_reg_base_address; + +/* +this function loads the ROM code in SEP (needed only in the debug mode on FPGA) +*/ +void sep_load_rom_code(void); + +/* +This functions locks the area of the resident and cache sep code (if possible) +*/ +void sep_lock_cache_resident_area(void); + +/* +This functions copies the cache and resident from their source location into +destination memory, which is external to Linux VM and is given as physical +address +*/ +int sep_copy_cache_resident_to_area(unsigned long src_cache_addr, + unsigned long cache_size_in_bytes, + unsigned long src_resident_addr, + unsigned long resident_size_in_bytes, + unsigned long *dst_new_cache_addr_ptr, + unsigned long *dst_new_resident_addr_ptr); + +/* +This functions maps and allocates the shared area on the external +RAM (device) The input is shared_area_size - the size of the memory +to allocate. The outputs are kernel_shared_area_addr_ptr - the kerenl +address of the mapped and allocated shared area, and +phys_shared_area_addr_ptr - the physical address of the shared area +*/ +int sep_map_and_alloc_shared_area(unsigned long shared_area_size, + unsigned long *kernel_shared_area_addr_ptr, + unsigned long *phys_shared_area_addr_ptr); + +/* +This functions unmaps and deallocates the shared area on the external +RAM (device) The input is shared_area_size - the size of the memory to +deallocate,kernel_shared_area_addr_ptr - the kernel address of the +mapped and allocated shared area,phys_shared_area_addr_ptr - the physical +address of the shared area +*/ +void sep_unmap_and_free_shared_area(unsigned long shared_area_size, + unsigned long kernel_shared_area_addr, + unsigned long phys_shared_area_addr); + + +/* +This functions returns the physical address inside shared area according +to the virtual address. It can be either on the externa RAM device +(ioremapped), or on the system RAM +*/ +unsigned long sep_shared_area_virt_to_phys(unsigned long virt_address); + +/* +This functions returns the vitrual address inside shared area according +to the physical address. It can be either on the externa RAM device +(ioremapped), or on the system RAM This implementation is for the external RAM +*/ +unsigned long sep_shared_area_phys_to_virt(unsigned long phys_address); + +/* +This function registers th driver to the device +subsystem (either PCI, USB, etc) +*/ +int sep_register_driver_to_device(void); + +#endif /*__SEP_DRIVER_EXT_API_H__*/ |