diff options
Diffstat (limited to 'drivers/crypto/inside-secure/safexcel.h')
-rw-r--r-- | drivers/crypto/inside-secure/safexcel.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/crypto/inside-secure/safexcel.h b/drivers/crypto/inside-secure/safexcel.h index 0a30a7bf4fe0..b5ff62fa3044 100644 --- a/drivers/crypto/inside-secure/safexcel.h +++ b/drivers/crypto/inside-secure/safexcel.h | |||
@@ -145,6 +145,7 @@ | |||
145 | #define EIP197_PE_EIP96_FUNCTION_EN(n) (0x1004 + (0x2000 * (n))) | 145 | #define EIP197_PE_EIP96_FUNCTION_EN(n) (0x1004 + (0x2000 * (n))) |
146 | #define EIP197_PE_EIP96_CONTEXT_CTRL(n) (0x1008 + (0x2000 * (n))) | 146 | #define EIP197_PE_EIP96_CONTEXT_CTRL(n) (0x1008 + (0x2000 * (n))) |
147 | #define EIP197_PE_EIP96_CONTEXT_STAT(n) (0x100c + (0x2000 * (n))) | 147 | #define EIP197_PE_EIP96_CONTEXT_STAT(n) (0x100c + (0x2000 * (n))) |
148 | #define EIP197_PE_EIP96_OPTIONS(n) (0x13f8 + (0x2000 * (n))) | ||
148 | #define EIP197_PE_OUT_DBUF_THRES(n) (0x1c00 + (0x2000 * (n))) | 149 | #define EIP197_PE_OUT_DBUF_THRES(n) (0x1c00 + (0x2000 * (n))) |
149 | #define EIP197_PE_OUT_TBUF_THRES(n) (0x1d00 + (0x2000 * (n))) | 150 | #define EIP197_PE_OUT_TBUF_THRES(n) (0x1d00 + (0x2000 * (n))) |
150 | #define EIP197_MST_CTRL 0xfff4 | 151 | #define EIP197_MST_CTRL 0xfff4 |
@@ -597,6 +598,32 @@ enum safexcel_eip_version { | |||
597 | EIP197_DEVBRD | 598 | EIP197_DEVBRD |
598 | }; | 599 | }; |
599 | 600 | ||
601 | /* EIP algorithm presence flags */ | ||
602 | enum safexcel_eip_algorithms { | ||
603 | SAFEXCEL_ALG_BC0 = BIT(5), | ||
604 | SAFEXCEL_ALG_SM4 = BIT(6), | ||
605 | SAFEXCEL_ALG_SM3 = BIT(7), | ||
606 | SAFEXCEL_ALG_CHACHA20 = BIT(8), | ||
607 | SAFEXCEL_ALG_POLY1305 = BIT(9), | ||
608 | SAFEXCEL_SEQMASK_256 = BIT(10), | ||
609 | SAFEXCEL_SEQMASK_384 = BIT(11), | ||
610 | SAFEXCEL_ALG_AES = BIT(12), | ||
611 | SAFEXCEL_ALG_AES_XFB = BIT(13), | ||
612 | SAFEXCEL_ALG_DES = BIT(15), | ||
613 | SAFEXCEL_ALG_DES_XFB = BIT(16), | ||
614 | SAFEXCEL_ALG_ARC4 = BIT(18), | ||
615 | SAFEXCEL_ALG_AES_XTS = BIT(20), | ||
616 | SAFEXCEL_ALG_WIRELESS = BIT(21), | ||
617 | SAFEXCEL_ALG_MD5 = BIT(22), | ||
618 | SAFEXCEL_ALG_SHA1 = BIT(23), | ||
619 | SAFEXCEL_ALG_SHA2_256 = BIT(25), | ||
620 | SAFEXCEL_ALG_SHA2_512 = BIT(26), | ||
621 | SAFEXCEL_ALG_XCBC_MAC = BIT(27), | ||
622 | SAFEXCEL_ALG_CBC_MAC_ALL = BIT(29), | ||
623 | SAFEXCEL_ALG_GHASH = BIT(30), | ||
624 | SAFEXCEL_ALG_SHA3 = BIT(31), | ||
625 | }; | ||
626 | |||
600 | struct safexcel_register_offsets { | 627 | struct safexcel_register_offsets { |
601 | u32 hia_aic; | 628 | u32 hia_aic; |
602 | u32 hia_aic_g; | 629 | u32 hia_aic_g; |
@@ -614,6 +641,10 @@ enum safexcel_flags { | |||
614 | EIP197_TRC_CACHE = BIT(0), | 641 | EIP197_TRC_CACHE = BIT(0), |
615 | }; | 642 | }; |
616 | 643 | ||
644 | struct safexcel_hwconfig { | ||
645 | enum safexcel_eip_algorithms algo_flags; | ||
646 | }; | ||
647 | |||
617 | struct safexcel_crypto_priv { | 648 | struct safexcel_crypto_priv { |
618 | void __iomem *base; | 649 | void __iomem *base; |
619 | struct device *dev; | 650 | struct device *dev; |
@@ -623,6 +654,7 @@ struct safexcel_crypto_priv { | |||
623 | 654 | ||
624 | enum safexcel_eip_version version; | 655 | enum safexcel_eip_version version; |
625 | struct safexcel_register_offsets offsets; | 656 | struct safexcel_register_offsets offsets; |
657 | struct safexcel_hwconfig hwconfig; | ||
626 | u32 flags; | 658 | u32 flags; |
627 | 659 | ||
628 | /* context DMA pool */ | 660 | /* context DMA pool */ |
@@ -667,6 +699,7 @@ struct safexcel_ahash_export_state { | |||
667 | struct safexcel_alg_template { | 699 | struct safexcel_alg_template { |
668 | struct safexcel_crypto_priv *priv; | 700 | struct safexcel_crypto_priv *priv; |
669 | enum safexcel_alg_type type; | 701 | enum safexcel_alg_type type; |
702 | enum safexcel_eip_algorithms algo_mask; | ||
670 | union { | 703 | union { |
671 | struct skcipher_alg skcipher; | 704 | struct skcipher_alg skcipher; |
672 | struct aead_alg aead; | 705 | struct aead_alg aead; |