From f4b65517e4d7b1b4fae3f692efe5ebba24e0ed12 Mon Sep 17 00:00:00 2001
From: "Wu, Qiming" <qi-ming.wu@intel.com>
Date: Mon, 12 Feb 2018 08:40:36 +0100
Subject: [PATCH] Merge pull request #217 in SW_PON/linux from
 feature/DRVLIB_SW-532-crypto-acceleration-driver-support to xrx500

* commit 'edfbe6685e9187fd437fd60ea12118bcc0026a5b':
  JIRA: DRVLIB_SW-532 - Linux 4.9 EIP97 driver support for GRX500
---
 drivers/crypto/Kconfig               | 35 +++++++++++++
 drivers/crypto/Makefile              |  1 +
 drivers/crypto/lantiq_eip97/Makefile | 77 ++++++++++++++++++++++++++++
 3 files changed, 113 insertions(+)
 create mode 100644 drivers/crypto/lantiq_eip97/Makefile

diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
index 93df82986..cd7958c1c 100644
--- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig
@@ -562,4 +562,39 @@ config CRYPTO_DEV_LANTIQ_EIP123
    help
       Selects Hardware accelerated EIP123 crypto drivers.
 
+config CRYPTO_DEV_LANTIQ_EIP97
+   tristate "Support Lantiq EIP97 hardware crypto engine"
+   depends on LANTIQ && SOC_GRX500
+   select CRYPTO_AUTHENC
+   select CRYPTO_SHA1
+   select CRYPTO_SHA256
+   select CRYPTO_SHA512
+   select CRYPTO_MD5
+   select CRYPTO_AES
+   select CRYPTO_DES
+   select CRYPTO_MANAGER_DISABLE_TESTS
+   default n
+   help
+      Selects Hardware accelerated EIP97 crypto drivers.
+
+config LTQ_CRYPTO_TEST
+   tristate "Lantiq Crypto Test"
+   depends on m && CRYPTO_DEV_LANTIQ_EIP97
+   help
+      Test suites for the hw crypto algs
+
+config LTQ_MPE_IPSEC_SUPPORT
+   bool
+   depends on LTQ_PPA_MPE_IP97
+   default y
+
+config LTQ_CRYPTO_MAX_RING_USED
+   int "Maximum number of ring used in the driver"
+   depends on CRYPTO_DEV_LANTIQ_EIP97
+   default "4" if LTQ_MPE_IPSEC_SUPPORT
+   default "2"
+   help
+     Number of rings used in the driver. By default, the driver supports up to
+     two rings. However, if MPE firmware is used, we only use 1 ring in the driver
+
 endif # CRYPTO_HW
diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile
index b08f259d1..f78abb7bf 100644
--- a/drivers/crypto/Makefile
+++ b/drivers/crypto/Makefile
@@ -33,3 +33,4 @@ obj-$(CONFIG_CRYPTO_DEV_SUN4I_SS) += sunxi-ss/
 obj-$(CONFIG_CRYPTO_DEV_ROCKCHIP) += rockchip/
 obj-$(CONFIG_CRYPTO_DEV_CHELSIO) += chelsio/
 obj-$(CONFIG_CRYPTO_DEV_LANTIQ_EIP123) += lantiq_eip123/
+obj-$(CONFIG_CRYPTO_DEV_LANTIQ_EIP97) += lantiq_eip97/
diff --git a/drivers/crypto/lantiq_eip97/Makefile b/drivers/crypto/lantiq_eip97/Makefile
new file mode 100644
index 000000000..e19128ffb
--- /dev/null
+++ b/drivers/crypto/lantiq_eip97/Makefile
@@ -0,0 +1,77 @@
+SRC := Sources
+SRC_APP := $(SRC)/Adapter
+SRC_DRV_FWK := $(SRC)/DriverFramework
+SRC_EIP201 := $(SRC)/EIP201
+SRC_GLB_CTRL := $(SRC)/EIP97/GlobalControl
+SRC_RING_CTRL := $(SRC)/EIP97/RingControl
+SRC_LOG := $(SRC)/Log
+SRC_RINGHELPER := $(SRC)/RingHelper
+SRC_SABUILDER := $(SRC)/SABuilder
+SRC_TOKENBUILDER := $(SRC)/TokenBuilder
+INCL_FILES := $(SRC)/incl
+
+ccflags-y := -I$(src)/$(INCL_FILES)
+ccflags-y += -I$(src)/$(SRC_DRV_FWK) -I$(src)/$(SRC_EIP201) -I$(src)/$(SRC_GLB_CTRL) -I$(src)/$(SRC_RING_CTRL)
+ccflags-y += -I$(src)/$(SRC_RINGHELPER) -I$(src)/$(SRC_SABUILDER) -I$(src)/$(SRC_TOKENBUILDER) -I$(src)/$(SRC_LOG)
+
+ltq_crypto-y += $(SRC_APP)/adapter_global_control_init.o
+ltq_crypto-y += $(SRC_APP)/adapter_init.o
+ltq_crypto-y += $(SRC_APP)/adapter_dmabuf.o
+ltq_crypto-y += $(SRC_APP)/adapter_driver97_init.o
+ltq_crypto-y += $(SRC_APP)/adapter_global_eip97.o
+ltq_crypto-y += $(SRC_APP)/adapter_global_init.o
+ltq_crypto-y += $(SRC_APP)/adapter_interrupts.o
+ltq_crypto-y += $(SRC_APP)/adapter_pec_dma.o
+ltq_crypto-y += $(SRC_APP)/adapter_ring_eip202.o
+ltq_crypto-y += $(SRC_APP)/adapter_sglist.o
+ltq_crypto-y += $(SRC_APP)/adapter_sleep.o
+ltq_crypto-y += $(SRC_APP)/adapter_lock.o
+ltq_crypto-y += $(SRC_APP)/adapter_lock_internal.o
+
+ltq_crypto-y += $(SRC_DRV_FWK)/dmares_gen.o
+ltq_crypto-y += $(SRC_DRV_FWK)/dmares_lkm.o
+
+ltq_crypto-y += $(SRC_EIP201)/eip201.o
+
+ltq_crypto-y += $(SRC_GLB_CTRL)/eip97_global_event.o
+ltq_crypto-y += $(SRC_GLB_CTRL)/eip97_global_fsm.o
+ltq_crypto-y += $(SRC_GLB_CTRL)/eip97_global_init.o
+ltq_crypto-y += $(SRC_GLB_CTRL)/eip97_global_prng.o
+ltq_crypto-y += $(SRC_RING_CTRL)/eip202_cd_format.o
+ltq_crypto-y += $(SRC_RING_CTRL)/eip202_cdr_dscr.o
+ltq_crypto-y += $(SRC_RING_CTRL)/eip202_cdr_event.o
+ltq_crypto-y += $(SRC_RING_CTRL)/eip202_cdr_fsm.o
+ltq_crypto-y += $(SRC_RING_CTRL)/eip202_cdr_init.o
+ltq_crypto-y += $(SRC_RING_CTRL)/eip202_rd_format.o
+ltq_crypto-y += $(SRC_RING_CTRL)/eip202_rdr_dscr.o
+ltq_crypto-y += $(SRC_RING_CTRL)/eip202_rdr_event.o
+ltq_crypto-y += $(SRC_RING_CTRL)/eip202_rdr_fsm.o
+ltq_crypto-y += $(SRC_RING_CTRL)/eip202_rdr_init.o
+
+ltq_crypto-y += $(SRC_LOG)/log.o
+
+ltq_crypto-y += $(SRC_RINGHELPER)/ringhelper.o
+
+ltq_crypto-y += $(SRC_SABUILDER)/sa_builder.o
+ltq_crypto-y += $(SRC_SABUILDER)/sa_builder_basic.o
+ltq_crypto-y += $(SRC_SABUILDER)/sa_builder_ipsec.o
+ltq_crypto-y += $(SRC_SABUILDER)/sa_builder_srtp.o
+ltq_crypto-y += $(SRC_SABUILDER)/sa_builder_ssltls.o
+
+ltq_crypto-y += $(SRC_TOKENBUILDER)/token_builder_context.o
+ltq_crypto-y += $(SRC_TOKENBUILDER)/token_builder_core.o
+
+# Driver glue layer
+ltq_crypto-y += $(SRC)/device_lkm_ltq.o
+# Driver interface to crypto API
+ltq_crypto-y += $(SRC)/ltq_crypto_core.o
+ifeq ($(CONFIG_LTQ_MPE_IPSEC_SUPPORT), y)
+# Driver interface to IPsec fast-path (TPT layer acceleration)
+ltq_crypto-y += $(SRC)/ltq_ipsec_api.o
+endif
+obj-$(CONFIG_CRYPTO_DEV_LANTIQ_EIP97) += ltq_crypto.o
+obj-$(CONFIG_LTQ_CRYPTO_TEST) += $(SRC)/ltq_module_test.o
+ifeq ($(CONFIG_LTQ_MPE_IPSEC_SUPPORT), y)
+obj-$(CONFIG_LTQ_CRYPTO_TEST) += $(SRC)/ltq_ipsec_api_test.o
+obj-$(CONFIG_LTQ_CRYPTO_TEST) += $(SRC)/ltq_submit_one.o
+endif
-- 
GitLab