# SPDX-Liscense-Identifier: GPL-2.0-or-later
#
# Copyright (C) 2023 MediaTek Inc.
#
# Author: Chris.Chou <chris.chou@mediatek.com>
#         Ren-Ting Wang <ren-ting.wang@mediatek.com>

# Configure for crypto-eip top makefile
EIP_KERNEL_PKGS+= \
	crypto-eip \
	crypto-eip-inline

ifeq ($(CONFIG_PACKAGE_kmod-crypto-eip),y)
EXTRA_KCONFIG+= \
	CONFIG_CRYPTO_OFFLOAD_INLINE=$(CONFIG_CRYPTO_OFFLOAD_INLINE)
endif

ifeq ($(CONFIG_CRYPTO_OFFLOAD_INLINE),y)
EXTRA_KCONFIG+= \
	CONFIG_MTK_CRYPTO_EIP_INLINE=m \
	CONFIG_CRYPTO_XFRM_OFFLOAD_MTK_PCE=$(CONFIG_CRYPTO_XFRM_OFFLOAD_MTK_PCE) \
	CONFIG_MTK_TOPS_CAPWAP_DTLS=$(CONFIG_MTK_TOPS_CAPWAP_DTLS)

EXTRA_CFLAGS+= \
	-I$(LINUX_DIR)/drivers/net/ethernet/mediatek/ \
	-I$(KERNEL_BUILD_DIR)/pce/inc/
endif

ifeq ($(CONFIG_MTK_TOPS_CAPWAP_DTLS),y)
EXTRA_CFLAGS += \
	-DCONFIG_TOPS_TNL_NUM=$(CONFIG_TOPS_TNL_NUM)
endif

# crypto-eip kernel package configuration
define KernelPackage/crypto-eip
  CATEGORY:=MTK Properties
  SUBMENU:=Drivers
  TITLE:= EIP-197 Crypto Engine Driver
  DEFAULT:=y
  KCONFIG:= \
	CONFIG_CRYPTO_HW=y \
	CONFIG_CRYPTO_AUTHENC=y \
	CONFIG_CRYPTO_AES=y \
	CONFIG_CRYPTO_AEAD=y \
	CONFIG_CRYPTO_DES=y \
	CONFIG_CRYPTO_MD5=y \
	CONFIG_CRYPTO_SHA1=y \
	CONFIG_CRYPTO_SHA256=y \
	CONFIG_CRYPTO_SHA512=y \
	CONFIG_CRYPTO_SHA3=y \
	CONFIG_CRYPTO_HMAC=y \
	CONFIG_INET_ESP=y
  DEPENDS:= \
	@TARGET_mediatek \
	+strongswan \
	+strongswan-default
  $(call AddDepends/crypto)
endef

define KernelPackage/crypto-eip/description
  Enable crypto engine to accelerate encrypt/decrypt. Support look aside
  mode (semi-HW) and inline mode (pure-HW). Look aside mode is bind with
  Linux Crypto API and support AES, DES, SHA1, and SHA2 algorithms. In-
  line mode only support ESP Tunnel mode (single tunnel) now.
endef

define KernelPackage/crypto-eip/config
	source "$(SOURCE)/Config.in"
endef

define KernelPackage/crypto-eip-inline
  CATEGORY:=MTK Properties
  SUBMENU:=Drivers
  TITLE:= EIP-197 Crypto Engine Inline Driver
  KCONFIG:= \
	CONFIG_INET_ESP_OFFLOAD=y
  DEPENDS:= \
	@CRYPTO_OFFLOAD_INLINE \
	kmod-crypto-eip \
	kmod-crypto-eip-ddk \
	+kmod-pce \
	+MTK_TOPS_CAPWAP_DTLS:kmod-tops
  FILES:=$(PKG_BUILD_DIR)/crypto-eip-inline.ko
  $(call AddDepends/crypto)
endef

define KernelPackage/crypto-eip-inline/description
  EIP197 inline mode. HW offload for IPsec ESP Tunnel mode.
endef
