xref: /optee_os/core/arch/arm/plat-imx/registers/imx6-dcp.h (revision 3fc5c287a8e601842a65bf745382521b345b258f)
193e678edSClement Faure /* SPDX-License-Identifier: BSD-2-Clause */
293e678edSClement Faure /*
393e678edSClement Faure  * Copyright 2020 NXP
493e678edSClement Faure  */
593e678edSClement Faure 
693e678edSClement Faure #ifndef __IMX6_DCP_H__
793e678edSClement Faure #define __IMX6_DCP_H__
893e678edSClement Faure 
993e678edSClement Faure /* DCP base address */
1093e678edSClement Faure #ifdef CFG_MX6ULL
1193e678edSClement Faure #define DCP_BASE 0x2280000
1293e678edSClement Faure #endif
1393e678edSClement Faure #if defined(CFG_MX6SL) || defined(CFG_MX6SLL)
1493e678edSClement Faure #define DCP_BASE 0x20FC000
1593e678edSClement Faure #endif
1693e678edSClement Faure 
1793e678edSClement Faure /* DCP registers address offset */
1893e678edSClement Faure #define DCP_CTRL	   0x00
1993e678edSClement Faure #define DCP_CTRL_SET	   0x04
2093e678edSClement Faure #define DCP_CTRL_CLR	   0x08
2193e678edSClement Faure #define DCP_STAT	   0x10
2293e678edSClement Faure #define DCP_STAT_CLR	   0x18
2393e678edSClement Faure #define DCP_CHANNELCTRL	   0x20
2493e678edSClement Faure #define DCP_CAPABILITY0	   0x30
2593e678edSClement Faure #define DCP_CAPABILITY1	   0x40
2693e678edSClement Faure #define DCP_CONTEXT	   0x50
2793e678edSClement Faure #define DCP_KEY		   0x60
2893e678edSClement Faure #define DCP_KEYDATA	   0x70
2993e678edSClement Faure #define DCP_PACKET0	   0x80
3093e678edSClement Faure #define DCP_PACKET1	   0x90
3193e678edSClement Faure #define DCP_PACKET2	   0xA0
3293e678edSClement Faure #define DCP_PACKET3	   0xB0
3393e678edSClement Faure #define DCP_PACKET4	   0xC0
3493e678edSClement Faure #define DCP_PACKET5	   0xD0
3593e678edSClement Faure #define DCP_PACKET6	   0xE0
3693e678edSClement Faure #define DCP_CH_N_CMDPTR(n) (0x100 + (n) * 0x40)
3793e678edSClement Faure #define DCP_CH_N_SEMA(n)   (0x110 + (n) * 0x40)
3893e678edSClement Faure #define DCP_CH_N_STAT(n)   (0x120 + (n) * 0x40)
3993e678edSClement Faure #define DCP_CHOCMDPTR	   0x100
4093e678edSClement Faure #define DCP_CH0SEMA	   0x110
4193e678edSClement Faure #define DCP_CH0STAT	   0x120
4293e678edSClement Faure #define DCP_CH1CMDPTR	   0x140
4393e678edSClement Faure #define DCP_CH2CMDPTR	   0x180
4493e678edSClement Faure #define DCP_CH3CMDPTR	   0x1C0
4593e678edSClement Faure 
4693e678edSClement Faure /* DCP CHANNELCTRL register configuration */
4793e678edSClement Faure #define DCP_CHANNELCTRL_ENABLE_CHANNEL_MASK GENMASK_32(7, 0)
4893e678edSClement Faure #define DCP_STAT_CLEAR			    GENMASK_32(31, 0)
4993e678edSClement Faure #define DCP_CH_STAT_ERROR_MASK		    GENMASK_32(23, 0)
5093e678edSClement Faure 
5193e678edSClement Faure /* DCP CTRL register configuration */
5293e678edSClement Faure #define DCP_CTRL_SFTRST			  BIT32(31)
5393e678edSClement Faure #define DCP_CTRL_CLKGATE		  BIT32(30)
5493e678edSClement Faure #define DCP_CTRL_GATHER_RESIDUAL_WRITES	  BIT32(23)
5593e678edSClement Faure #define DCP_CTRL_ENABLE_CONTEXT_CACHING	  BIT32(22)
5693e678edSClement Faure #define DCP_CTRL_ENABLE_CONTEXT_SWITCHING BIT32(21)
5793e678edSClement Faure #define DCP_CTRL_CH3_INTERRUPT_ENABLE	  BIT32(3)
5893e678edSClement Faure #define DCP_CTRL_CH2_INTERRUPT_ENABLE	  BIT32(2)
5993e678edSClement Faure #define DCP_CTRL_CH1_INTERRUPT_ENABLE	  BIT32(1)
6093e678edSClement Faure #define DCP_CTRL_CH0_INTERRUPT_ENABLE	  BIT32(0)
6193e678edSClement Faure 
62*3fc5c287SClement Faure /* DCP CAPABILITY0 register configuration */
63*3fc5c287SClement Faure #define DCP_CAPABILITY0_DISABLE_UNIQUE_KEY BIT32(29)
64*3fc5c287SClement Faure 
6593e678edSClement Faure /* Work Packet control0 configuration */
6693e678edSClement Faure #define DCP_CONTROL0_OUTPUT_WORDSWAP  BIT32(23)
6793e678edSClement Faure #define DCP_CONTROL0_OUTPUT_BYTESWAP  BIT32(22)
6893e678edSClement Faure #define DCP_CONTROL0_INPUT_WORDSWAP   BIT32(21)
6993e678edSClement Faure #define DCP_CONTROL0_INPUT_BYTESWAP   BIT32(20)
7093e678edSClement Faure #define DCP_CONTROL0_KEY_WORDSWAP     BIT32(19)
7193e678edSClement Faure #define DCP_CONTROL0_KEY_BYTESWA      BIT32(18)
7293e678edSClement Faure #define DCP_CONTROL0_TEST_SEMA_IRQ    BIT32(17)
7393e678edSClement Faure #define DCP_CONTROL0_CONSTANT_FILL    BIT32(16)
7493e678edSClement Faure #define DCP_CONTROL0_HASH_OUTPUT      BIT32(15)
7593e678edSClement Faure #define DCP_CONTROL0_HASH_CHECK	      BIT32(14)
7693e678edSClement Faure #define DCP_CONTROL0_HASH_TERM	      BIT32(13)
7793e678edSClement Faure #define DCP_CONTROL0_HASH_INIT	      BIT32(12)
7893e678edSClement Faure #define DCP_CONTROL0_PAYLOAD_KEY      BIT32(11)
7993e678edSClement Faure #define DCP_CONTROL0_OTP_KEY	      BIT32(10)
8093e678edSClement Faure #define DCP_CONTROL0_CIPHER_INIT      BIT32(9)
8193e678edSClement Faure #define DCP_CONTROL0_CIPHER_ENCRYPT   BIT32(8)
8293e678edSClement Faure #define DCP_CONTROL0_ENABLE_BLIT      BIT32(7)
8393e678edSClement Faure #define DCP_CONTROL0_ENABLE_HASH      BIT32(6)
8493e678edSClement Faure #define DCP_CONTROL0_ENABLE_CIPHER    BIT32(5)
8593e678edSClement Faure #define DCP_CONTROL0_ENABLE_MEMCOPY   BIT32(4)
8693e678edSClement Faure #define DCP_CONTROL0_CHAIN_CONTINUOUS BIT32(3)
8793e678edSClement Faure #define DCP_CONTROL0_CHAIN	      BIT32(2)
8893e678edSClement Faure #define DCP_CONTROL0_DECR_SEMAPHORE   BIT32(1)
8993e678edSClement Faure #define DCP_CONTROL0_INTERRUPT_ENABLE BIT32(0)
9093e678edSClement Faure 
9193e678edSClement Faure /* Work Packet control1 configuration */
9293e678edSClement Faure #define DCP_CONTROL1_HASH_SELECT_SHA256	   SHIFT_U32(2, 16)
9393e678edSClement Faure #define DCP_CONTROL1_HASH_SELECT_CRC32	   BIT32(16)
9493e678edSClement Faure #define DCP_CONTROL1_HASH_SELECT_SHA1	   SHIFT_U32(0, 16)
9593e678edSClement Faure #define DCP_CONTROL1_CIPHER_MODE_CBC	   BIT32(4)
9693e678edSClement Faure #define DCP_CONTROL1_CIPHER_MODE_ECB	   SHIFT_U32(0, 4)
9793e678edSClement Faure #define DCP_CONTROL1_CIPHER_SELECT_AES128  0
9893e678edSClement Faure #define DCP_CONTROL1_KEY_SELECT_OTP_CRYPTO SHIFT_U32(0xfe, 8)
9993e678edSClement Faure 
10093e678edSClement Faure #endif /* __IMX6_DCP_H__ */
101