Staging: sep: Create a structure to hold all the current crap spewed about as globals
authorAlan Cox <alan@linux.intel.com>
Thu, 6 Aug 2009 19:45:07 +0000 (20:45 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 15 Sep 2009 19:02:12 +0000 (12:02 -0700)
For now keep the field names matching the variable names

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/sep/sep_dev.h [new file with mode: 0644]
drivers/staging/sep/sep_driver_config.h
drivers/staging/sep/sep_driver_ext_api.h
drivers/staging/sep/sep_ext_with_pci_driver.c
drivers/staging/sep/sep_main_mod.c

diff --git a/drivers/staging/sep/sep_dev.h b/drivers/staging/sep/sep_dev.h
new file mode 100644 (file)
index 0000000..b3d48e1
--- /dev/null
@@ -0,0 +1,119 @@
+#ifndef __SEP_DEV_H__
+#define __SEP_DEV_H__
+
+/*
+ *
+ *  sep_dev.h - Security Processor Device Structures
+ *
+ *  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:
+ *
+ *  Alan Cox           alan@linux.intel.com
+ *
+ */
+
+struct sep_device {
+       /* pointer to pci dev */
+       struct pci_dev *sep_pci_dev_ptr;
+
+       unsigned long io_memory_start_physical_address;
+       unsigned long io_memory_end_physical_address;
+       unsigned long io_memory_size;
+       void *io_memory_start_virtual_address;
+
+       /* restricted access region */
+       unsigned long rar_physical_address;
+       void *rar_virtual_address;
+
+       /* shared memory region */
+       unsigned long shared_physical_address;
+       void *shared_virtual_address;
+
+       /* firmware regions */
+       unsigned long cache_physical_address;
+       unsigned long cache_size;
+       void *cache_virtual_address;
+
+       unsigned long resident_physical_address;
+       unsigned long resident_size;
+       void *resident_virtual_address;
+
+       /* device interrupt (as retrieved from PCI) */
+       int sep_irq;
+
+       unsigned long rar_region_addr;
+
+       /* start address of the access to the SEP registers from driver */
+       unsigned long reg_base_address;
+       /* transaction counter that coordinates the transactions between SEP and HOST */
+       unsigned long host_to_sep_send_counter;
+       /* counter for the messages from sep */
+       unsigned long sep_to_host_reply_counter;
+       /* counter for the number of bytes allocated in the pool for the current
+       transaction */
+       unsigned long data_pool_bytes_allocated;
+
+       /* array of pointers to the pages that represent input data for the synchronic
+       DMA action */
+       struct page **in_page_array;
+
+       /* array of pointers to the pages that represent out data for the synchronic
+       DMA action */
+       struct page **out_page_array;
+
+       /* number of pages in the sep_in_page_array */
+       unsigned long in_num_pages;
+
+       /* number of pages in the sep_out_page_array */
+       unsigned long out_num_pages;
+
+       /* global data for every flow */
+       struct sep_flow_context_t flows_data_array[SEP_DRIVER_NUM_FLOWS];
+
+       /* flag for API mode - 1 -is blocking, 0 is non-blocking */
+       unsigned long block_mode_flag;
+
+       /* pointer to the workqueue that handles the flow done interrupts */
+       struct workqueue_struct *flow_wq_ptr;
+
+       /* address of the shared memory allocated during init for SEP driver */
+       unsigned long shared_area_addr;
+       /* the physical address of the shared area */
+       unsigned long phys_shared_area_addr;
+
+       /* Message Shared Area start address - will be allocated during init */
+       unsigned long message_shared_area_addr;
+};
+
+extern struct sep_device *sep_dev;
+
+extern inline void sep_write_reg(struct sep_device *dev, int reg, u32 value)
+{
+       void __iomem *addr = dev->reg_base_address + reg;
+       writel(value, reg);
+}
+
+extern inline u32 sep_read_reg(struct sep_device *dev, int reg)
+{
+       void __iomem *addr = dev->reg_base_address + reg;
+       return readl(reg);
+}
+
+#endif
+
Simple merge