[RFC][PATCH 3/4] crypto: QAT dh895xcc accelerator support

2014-06-03 Thread Tadeusz Struk
Third patch adds dh895xcc hardware specific code.
It hooks to the common infrastructure and provides acceleration for crypto 
algorithms.

Signed-off-by: Tadeusz Struk 
Acked-by: John Griffin 
Reviewed-by: Bruce W. Allan 
---
 drivers/crypto/qat/qat_dh895xcc/Makefile   |   8 +
 drivers/crypto/qat/qat_dh895xcc/adf_admin.c| 144 +++
 .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 214 ++
 .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h |  86 
 drivers/crypto/qat/qat_dh895xcc/adf_drv.c  | 448 +
 drivers/crypto/qat/qat_dh895xcc/adf_drv.h  |  67 +++
 drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c   | 159 
 drivers/crypto/qat/qat_dh895xcc/adf_isr.c  | 266 
 drivers/crypto/qat/qat_dh895xcc/qat_admin.c| 107 +
 9 files changed, 1499 insertions(+)
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/Makefile
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_admin.c
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_drv.c
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_drv.h
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_isr.c
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/qat_admin.c

diff --git a/drivers/crypto/qat/qat_dh895xcc/Makefile 
b/drivers/crypto/qat/qat_dh895xcc/Makefile
new file mode 100644
index 000..8e4924d
--- /dev/null
+++ b/drivers/crypto/qat/qat_dh895xcc/Makefile
@@ -0,0 +1,8 @@
+ccflags-y := -I$(CURDIR)/drivers/crypto/qat/qat_common
+obj-$(CONFIG_CRYPTO_DEV_QAT_DH895xCC) += qat_dh895xcc.o
+qat_dh895xcc-objs := adf_drv.o \
+   adf_isr.o \
+   adf_dh895xcc_hw_data.o \
+   adf_hw_arbiter.o \
+   qat_admin.o \
+   adf_admin.o
diff --git a/drivers/crypto/qat/qat_dh895xcc/adf_admin.c 
b/drivers/crypto/qat/qat_dh895xcc/adf_admin.c
new file mode 100644
index 000..978d6c5
--- /dev/null
+++ b/drivers/crypto/qat/qat_dh895xcc/adf_admin.c
@@ -0,0 +1,144 @@
+/*
+  This file is provided under a dual BSD/GPLv2 license.  When using or
+  redistributing this file, you may do so under either license.
+
+  GPL LICENSE SUMMARY
+  Copyright(c) 2014 Intel Corporation.
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of version 2 of the GNU General Public License as
+  published by the Free Software Foundation.
+
+  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.
+
+  Contact Information:
+  qat-li...@intel.com
+
+  BSD LICENSE
+  Copyright(c) 2014 Intel Corporation.
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in
+  the documentation and/or other materials provided with the
+  distribution.
+* Neither the name of Intel Corporation nor the names of its
+  contributors may be used to endorse or promote products derived
+  from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "adf_drv.h"
+#include "adf_dh895xcc_hw_data.h"
+
+#define ADF_ADMINMSG_LEN 32
+
+struct adf_admin_comms {
+   dma_addr_t phy_addr;
+   void *virt_addr;
+   void __iomem *mailbox_addr;
+   struct mutex lock;  /* protects adf_admin_comms struct */
+};
+
+int adf_put_admin_msg_sync(struct adf_accel_dev *accel_dev,
+  uint32_t ae, void *in, void *out)
+{
+   struct 

[RFC][PATCH 3/4] crypto: QAT dh895xcc accelerator support

2014-06-03 Thread Tadeusz Struk
Third patch adds dh895xcc hardware specific code.
It hooks to the common infrastructure and provides acceleration for crypto 
algorithms.

Signed-off-by: Tadeusz Struk tadeusz.st...@intel.com
Acked-by: John Griffin john.grif...@intel.com
Reviewed-by: Bruce W. Allan bruce.w.al...@intel.com
---
 drivers/crypto/qat/qat_dh895xcc/Makefile   |   8 +
 drivers/crypto/qat/qat_dh895xcc/adf_admin.c| 144 +++
 .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 214 ++
 .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h |  86 
 drivers/crypto/qat/qat_dh895xcc/adf_drv.c  | 448 +
 drivers/crypto/qat/qat_dh895xcc/adf_drv.h  |  67 +++
 drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c   | 159 
 drivers/crypto/qat/qat_dh895xcc/adf_isr.c  | 266 
 drivers/crypto/qat/qat_dh895xcc/qat_admin.c| 107 +
 9 files changed, 1499 insertions(+)
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/Makefile
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_admin.c
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_drv.c
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_drv.h
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_isr.c
 create mode 100644 drivers/crypto/qat/qat_dh895xcc/qat_admin.c

diff --git a/drivers/crypto/qat/qat_dh895xcc/Makefile 
b/drivers/crypto/qat/qat_dh895xcc/Makefile
new file mode 100644
index 000..8e4924d
--- /dev/null
+++ b/drivers/crypto/qat/qat_dh895xcc/Makefile
@@ -0,0 +1,8 @@
+ccflags-y := -I$(CURDIR)/drivers/crypto/qat/qat_common
+obj-$(CONFIG_CRYPTO_DEV_QAT_DH895xCC) += qat_dh895xcc.o
+qat_dh895xcc-objs := adf_drv.o \
+   adf_isr.o \
+   adf_dh895xcc_hw_data.o \
+   adf_hw_arbiter.o \
+   qat_admin.o \
+   adf_admin.o
diff --git a/drivers/crypto/qat/qat_dh895xcc/adf_admin.c 
b/drivers/crypto/qat/qat_dh895xcc/adf_admin.c
new file mode 100644
index 000..978d6c5
--- /dev/null
+++ b/drivers/crypto/qat/qat_dh895xcc/adf_admin.c
@@ -0,0 +1,144 @@
+/*
+  This file is provided under a dual BSD/GPLv2 license.  When using or
+  redistributing this file, you may do so under either license.
+
+  GPL LICENSE SUMMARY
+  Copyright(c) 2014 Intel Corporation.
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of version 2 of the GNU General Public License as
+  published by the Free Software Foundation.
+
+  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.
+
+  Contact Information:
+  qat-li...@intel.com
+
+  BSD LICENSE
+  Copyright(c) 2014 Intel Corporation.
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in
+  the documentation and/or other materials provided with the
+  distribution.
+* Neither the name of Intel Corporation nor the names of its
+  contributors may be used to endorse or promote products derived
+  from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+#include linux/types.h
+#include linux/mutex.h
+#include linux/slab.h
+#include linux/delay.h
+#include linux/pci.h
+#include linux/dma-mapping.h
+#include adf_accel_devices.h
+#include adf_drv.h
+#include adf_dh895xcc_hw_data.h
+
+#define ADF_ADMINMSG_LEN 32
+
+struct adf_admin_comms {
+   dma_addr_t phy_addr;
+   void *virt_addr;
+   void __iomem *mailbox_addr;
+   struct mutex lock;  /* protects adf_admin_comms