summaryrefslogtreecommitdiffstats
path: root/drivers/staging/sep/sep_driver_ext_api.h
diff options
context:
space:
mode:
authorMark Allyn <mark.a.allyn@intel.com>2009-08-06 20:43:59 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2009-09-15 12:02:11 -0700
commitcd1bb431d8b183e2d063267419984cc9bbe22b0b (patch)
tree4d425dd0408f4ac11f071dbdcc654d9eb7e66438 /drivers/staging/sep/sep_driver_ext_api.h
parent249c033c29ed4eccd24b52959747f2663deaa02f (diff)
downloadop-kernel-dev-cd1bb431d8b183e2d063267419984cc9bbe22b0b.zip
op-kernel-dev-cd1bb431d8b183e2d063267419984cc9bbe22b0b.tar.gz
Staging: sep: Upstream revision 3 of the security processor kernel driver
Upstream revision 3 of the security processor kernel driver; now located in drivers/staging This revision adds an initial TODO file This driver no longer requires to have the firmware compiled in it with the CONFIG_EXTRA_FIRMWARE configuration option. Furthermore, we now have the right to distribute the firmware binaries. This is the Linux kernel driver for the Security Processor, which is a hardware device the provides cryptographic, secure storage, and key management services. Please be aware that this patch does not contain any encryption algorithm. It only transports data to and from user space applications to the security processor. Signed-off-by: Mark Allyn <mark.a.allyn@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/sep/sep_driver_ext_api.h')
-rw-r--r--drivers/staging/sep/sep_driver_ext_api.h106
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__*/
OpenPOWER on IntegriCloud