162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright (C) 2019-2020 ARM Limited or its affiliates. */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#include <linux/bitops.h> 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#define POWER_DOWN_ENABLE 0x01 762306a36Sopenharmony_ci#define POWER_DOWN_DISABLE 0x00 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci/* hwrng quality: bits of true entropy per 1024 bits of input */ 1062306a36Sopenharmony_ci#define CC_TRNG_QUALITY 1024 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci/* CryptoCell TRNG HW definitions */ 1362306a36Sopenharmony_ci#define CC_TRNG_NUM_OF_ROSCS 4 1462306a36Sopenharmony_ci/* The number of words generated in the entropy holding register (EHR) 1562306a36Sopenharmony_ci * 6 words (192 bit) according to HW implementation 1662306a36Sopenharmony_ci */ 1762306a36Sopenharmony_ci#define CC_TRNG_EHR_IN_WORDS 6 1862306a36Sopenharmony_ci#define CC_TRNG_EHR_IN_BITS (CC_TRNG_EHR_IN_WORDS * BITS_PER_TYPE(u32)) 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define CC_HOST_RNG_IRQ_MASK BIT(CC_HOST_RGF_IRR_RNG_INT_BIT_SHIFT) 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci/* RNG interrupt mask */ 2362306a36Sopenharmony_ci#define CC_RNG_INT_MASK (BIT(CC_RNG_IMR_EHR_VALID_INT_MASK_BIT_SHIFT) | \ 2462306a36Sopenharmony_ci BIT(CC_RNG_IMR_AUTOCORR_ERR_INT_MASK_BIT_SHIFT) | \ 2562306a36Sopenharmony_ci BIT(CC_RNG_IMR_CRNGT_ERR_INT_MASK_BIT_SHIFT) | \ 2662306a36Sopenharmony_ci BIT(CC_RNG_IMR_VN_ERR_INT_MASK_BIT_SHIFT) | \ 2762306a36Sopenharmony_ci BIT(CC_RNG_IMR_WATCHDOG_INT_MASK_BIT_SHIFT)) 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci// -------------------------------------- 3062306a36Sopenharmony_ci// BLOCK: RNG 3162306a36Sopenharmony_ci// -------------------------------------- 3262306a36Sopenharmony_ci#define CC_RNG_IMR_REG_OFFSET 0x0100UL 3362306a36Sopenharmony_ci#define CC_RNG_IMR_EHR_VALID_INT_MASK_BIT_SHIFT 0x0UL 3462306a36Sopenharmony_ci#define CC_RNG_IMR_AUTOCORR_ERR_INT_MASK_BIT_SHIFT 0x1UL 3562306a36Sopenharmony_ci#define CC_RNG_IMR_CRNGT_ERR_INT_MASK_BIT_SHIFT 0x2UL 3662306a36Sopenharmony_ci#define CC_RNG_IMR_VN_ERR_INT_MASK_BIT_SHIFT 0x3UL 3762306a36Sopenharmony_ci#define CC_RNG_IMR_WATCHDOG_INT_MASK_BIT_SHIFT 0x4UL 3862306a36Sopenharmony_ci#define CC_RNG_ISR_REG_OFFSET 0x0104UL 3962306a36Sopenharmony_ci#define CC_RNG_ISR_EHR_VALID_BIT_SHIFT 0x0UL 4062306a36Sopenharmony_ci#define CC_RNG_ISR_EHR_VALID_BIT_SIZE 0x1UL 4162306a36Sopenharmony_ci#define CC_RNG_ISR_AUTOCORR_ERR_BIT_SHIFT 0x1UL 4262306a36Sopenharmony_ci#define CC_RNG_ISR_AUTOCORR_ERR_BIT_SIZE 0x1UL 4362306a36Sopenharmony_ci#define CC_RNG_ISR_CRNGT_ERR_BIT_SHIFT 0x2UL 4462306a36Sopenharmony_ci#define CC_RNG_ISR_CRNGT_ERR_BIT_SIZE 0x1UL 4562306a36Sopenharmony_ci#define CC_RNG_ISR_WATCHDOG_BIT_SHIFT 0x4UL 4662306a36Sopenharmony_ci#define CC_RNG_ISR_WATCHDOG_BIT_SIZE 0x1UL 4762306a36Sopenharmony_ci#define CC_RNG_ICR_REG_OFFSET 0x0108UL 4862306a36Sopenharmony_ci#define CC_TRNG_CONFIG_REG_OFFSET 0x010CUL 4962306a36Sopenharmony_ci#define CC_EHR_DATA_0_REG_OFFSET 0x0114UL 5062306a36Sopenharmony_ci#define CC_RND_SOURCE_ENABLE_REG_OFFSET 0x012CUL 5162306a36Sopenharmony_ci#define CC_SAMPLE_CNT1_REG_OFFSET 0x0130UL 5262306a36Sopenharmony_ci#define CC_TRNG_DEBUG_CONTROL_REG_OFFSET 0x0138UL 5362306a36Sopenharmony_ci#define CC_RNG_SW_RESET_REG_OFFSET 0x0140UL 5462306a36Sopenharmony_ci#define CC_RNG_CLK_ENABLE_REG_OFFSET 0x01C4UL 5562306a36Sopenharmony_ci#define CC_RNG_DMA_ENABLE_REG_OFFSET 0x01C8UL 5662306a36Sopenharmony_ci#define CC_RNG_WATCHDOG_VAL_REG_OFFSET 0x01D8UL 5762306a36Sopenharmony_ci// -------------------------------------- 5862306a36Sopenharmony_ci// BLOCK: SEC_HOST_RGF 5962306a36Sopenharmony_ci// -------------------------------------- 6062306a36Sopenharmony_ci#define CC_HOST_RGF_IRR_REG_OFFSET 0x0A00UL 6162306a36Sopenharmony_ci#define CC_HOST_RGF_IRR_RNG_INT_BIT_SHIFT 0xAUL 6262306a36Sopenharmony_ci#define CC_HOST_RGF_IMR_REG_OFFSET 0x0A04UL 6362306a36Sopenharmony_ci#define CC_HOST_RGF_ICR_REG_OFFSET 0x0A08UL 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#define CC_HOST_POWER_DOWN_EN_REG_OFFSET 0x0A78UL 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci// -------------------------------------- 6862306a36Sopenharmony_ci// BLOCK: NVM 6962306a36Sopenharmony_ci// -------------------------------------- 7062306a36Sopenharmony_ci#define CC_NVM_IS_IDLE_REG_OFFSET 0x0F10UL 7162306a36Sopenharmony_ci#define CC_NVM_IS_IDLE_VALUE_BIT_SHIFT 0x0UL 7262306a36Sopenharmony_ci#define CC_NVM_IS_IDLE_VALUE_BIT_SIZE 0x1UL 73