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